enterprise integration patterns:enterprise integration patterns ......1. transport messages channel...

51
Enterprise Integration Patterns: Enterprise Integration Patterns: Past, Present and Future Translator Test Message Splitter Enricher Aggregator Gregor Hohpe www.eaipatterns.com

Upload: others

Post on 20-Mar-2021

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Enterprise Integration Patterns:Enterprise Integration Patterns:Past, Present and Future

Translator

Test Message Splitter

Enricher

Aggregator

Gregor Hohpewww.eaipatterns.com

Page 2: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

© 2011 Gregor Hohpe

Page 3: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Isolated Systems

Unified Access

Page 4: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

70s: Batch Data Exchange

Export information into a common file format, read into the target system

Example: COBOL Flat files

System

A

System

B

Export

ImportC tt tCustomer

DataDatabase

Pros: Cons:• Good physical decoupling• Language and system

independent

• Data transfer not immediate• Systems may be out of sync• Large amounts of data

Pros: Cons:

independent • Large amounts of data

Page 5: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

80s: Central Database

All applications access a common database

SystemA

SystemB

SystemC

CustomerData

Pros: Cons:• Consistent Data• Reporting• Transactional guarantees

• Integration of data, not business functions

• Difficult to find common

Pros: Cons:

• Transactional guarantees Difficult to find common representation

Page 6: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

90s: Remote Procedure Calls

One application calls another directly to perform a function.

Data necessary for the call is passed along. Results are returned to calling application.

Get Credit ScoreSystem System

740A B

740

Pros: Cons:• Data exchanged only as

needed• Integration of business

• Works well only with small number of systems

• Fragile (tight coupling)

Pros: Cons:

Integration of businessfunction, not just data

Fragile (tight coupling)• Performance

Page 7: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Asynchronous Messaging Style

ReceiverSenderMessage

Channel(Q )

Systems send messages across Channels Channels have logical (location indep )

Message (Queue)

SimplifiedInteraction Channels have logical (location-indep.)

addresses Placing a message into the Channel is

Interaction

LocationDecouplingg g

quick (“fire-and-forget”) The Channel queues messages until the

receiving application is ready

TemporalDecoupling

receiving application is ready

An "honest" architectural style that does not try to deny the limitations of the underlying medium.

Page 8: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Why Asynchronous Messaging?

Asynchrony Sender does not have to wait for receiver to process message Temporal decouplingTemporal decoupling

Throttling Receiver can consume messages at its own pace Processing units can be tuned independently

Can be Reliable Over Unreliable Networks Messages can transparently be re-sent until delivered Messages can transparently be re sent until delivered Think cell phones – intermittent and unreliable

Insertion of intermediaries (Pipes-and-Filters) Composability Transformation, routing etc.

Throughput over latency Throughput over latency “Wider bridges not faster cars”

Page 9: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

A New “Tower of Babel”ex

ecut

ebi

lity

to e

ab

completeness of vision

Gartner “Magic Quadrant” for Integration and Middleware 2001

Page 10: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns
Page 11: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Messaging Pattern Language

1. Transport messages ApplicationApplication ApplicationApplication

2. Design messages

3. Route the message to the proper destination

4. Transform the message

Application

to the required format

5. Produce and consume Application

messages

6. Manage and Test the S tSystem

Page 12: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Messaging Pattern Language

1. Transport messages Channel Patterns

3. Route the message to Routing Patterns

2. Design messages Message Patterns

the proper destination

4. Transform the message Transformation Patternsto the required format

5. Produce and consume Endpoint Patterns Application

messages

6. Manage and Test the S t

Management PatternsSystem

Page 13: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

http://hillside.net/plop/plop2002/

proceedings.html

“Enterprise Integration Patterns”G. HohpeG. Hohpe

“Patterns of System Integration

© 2006 Gregor Hohpe

with Enterprise Messaging”B. Woolf, K. Brown

Page 14: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

OOPSLA 2003OOPSLA 2003 185,000 Words

700 pages

50,000 copies

TranslationsEnglish English

Russian

Chinese Traditional

Korean

www.eaipatterns.com Sketches, summaries

under Creative Commons

Visio, Omnigraffle stencils

Page 15: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

M essageC onstruction

MessageR outing

M ess age

M essage RouterContent-B ased RouterM F ilt

MessageTransform ation

M ess ageCom m and M essageDoc um ent M essageE vent M es sageReques t-ReplyReturn A ddressCorrelation Identifier

M essage F ilterDynam ic FilterRec ipient Lis tS plit terA ggregatorRes equencerCom posed M sg P rocess or

M ess age Trans latorE nvelope WrapperContent E nricherContent F ilter

Endpoint Endpoint

M ess age S equenceM ess age E xpirat ionForm at Indicator

Com posed M sg. P rocess or.S catter-GatherRouting S lipP roc es s M anagerM essage B roker

Content F ilterClaim Chec kNorm alizerCanonical Data M odel

ApplicationA

ApplicationB

M essage Channel Router Translatorp p

Messag ingC hannels

M onitoring

MessagingE ndpoin ts

S ystem sM anag em en tM es sage Channel

Point-to-P oint Channel C t l B

M ess age E ndpointM ess aging GatewayM ess aging M apper gPoint-to-P oint Channel

Publis h-S ubc r. ChannelDatatype ChannelInvalid M essage ChannelDead Letter ChannelGuaranteed M essagingChannel A dapter

Control B usDetourW ire TapM essage His toryM essage S toreS m art P rox yTes t M essage

M ess aging M apperTransac tional ClientP olling Consum erE vent-Driv en Consum erCom peting Cons um ersM ess age Dis patc herS elec tiv e Cons um er p

M es saging B ridgeM es sage B us

Tes t M essageChannel P urgerDurable S ubs c riber

M ess aging A dapterIdem potent ReceiverS erv ice A c tiv ator

Page 16: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Visual Language

Content-Based Router

Message FilterMessage Filter

Recipient List

Splitter

A tAggregator

Resequencer

Routing Slip (Itinerary)

Process Manager

Page 17: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Composing PatternsReceive an order Receive an order

Get best offer for each item from vendorsC bi i t lid t d d Combine into validated order.

Quote

Scatter-Gather

Vendor A

Vendor B

Pub-SubChannel

Quote

SplitterNewOrder

Quote Requestfor each item Vendor C

“Best” Quote A tAggregatorValidated Order

Best Quotefor each item

Aggregator

Page 18: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns
Page 19: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

SomeoneSomeone better build a tool thata tool that supports these!these!

Home-made wisdom elixir

© 2011 Gregor Hohpe

Page 20: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Tossers. I’ll just doI ll just do it myself!Cheers!Cheers!

© 2006 Gregor Hohpe 20

Page 21: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

© 2006 Gregor Hohpe

Page 22: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

© 2006 Gregor Hohpe

Page 23: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Patterns Origin – Christopher Alexander

BED ALCOVE

Design problemBedrooms make no sense.

ForcesFi h b d i b d k dFirst, the bed in a bedroom creates awkward spaces around it: dressing, working, watching

television, sitting, are all rather foreign to the side spaces left over around a bed ( )spaces left over around a bed. (...)

Second, the bed itself seems more comfortable in a space that is adjusted to it.

SolutionDon't put single beds in empty rooms called bedrooms, but instead put individual bed alcoves off rooms with p

other nonsleeping functions, so the bed itself becomes a tiny private haven.

Page 24: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Patterns – 15 Years After GoF

“Mind sized” chunks of information (Ward Cunningham)

Human-to-human interaction

Expresses intent (“why” vs. “how”)

Observed from actual experience

New programming models bring new patterns New programming models bring new patterns

NOT: A firm rule –always a time when not to use

Copy-paste code

Isolated. Part of a Pattern Language

Page 25: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Patterns as Executable Domain Language?

CUSTOMER orderChannel

ENRICHER orderChannel orderEnrichedChannel

SPLITTER orderEnrichedChannel itemChannel "/Order/Item“/ /

ROUTER itemChannel coldBevChannel "Item = 'FRAPPUCINO'“hotBevChannel

LOGGER coldBevChannel

LOGGER hotBevChannel

Splitter RouterEnricherLogger

Customer coldBevChannel

Loggerorder

Ch lorderEnriched

Ch litem

Ch l hotBevChannelChannel Channel Channel hotBevChannel

Page 26: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Patterns Components

Page 27: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Patterns Components

Human communication Fuzzy

System Communication Precisey

Design tool Platform independent

Executable Platform dependentp p

Pipes and Filters style: simple composability

Easily formalizable: input ports output ports Easily formalizable: input ports, output ports

Input Port Output Port

Leverage other domain languages, such as XSLT

Page 28: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Enterprise Integration or Messaging?

EnterpriseIntegration

MessagingMessaging

Page 29: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Enterprise Integration or Messaging?

EnterpriseIntegration

Messaging Conversations Processes EventsMessaging Conversations Processes Events

Page 30: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Messaging

Flow of messages through processing nodes

T t M S litt

Translator

A tTest Message Splitter

Enricher

Aggregator

Stateless -> scaleable, decoupled Error handling? Error handling? Complex interactions (no guarantees)

Page 31: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

ConversationsC ti

Order

Conversation State

Internal State:P i

lInternal State:Waiting for

Invoice

Payment

Processing Payment

Waiting for Payment

Internal State:

DrinksMaking Drinks

Each conversation corresponds to one process instance

Each participant has a (potentially different) process definition

Page 32: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Simple Example: Request Response

Client Server

Conversation = Series of Related Messages

Page 33: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Response Message Lost

Client Server

Page 34: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Response Message Delayed

Client Server

Page 35: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Conversation State

Client Server

Waiting for Response

Page 36: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Challenges: Describing Conversations

Sequence Diagrams (UML 1.x) only show one instance, not rules of interactioninstance, not rules of interaction

Sequence Diagrams (UML 2.0) more powerful, but non-intuitive notation

WS-CDL describes conversation state, but very little adoptionp

WS-BPEL a little verbose, looking from participant perspective

Temporal Logic expressive, but not good for sketch

Page 37: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Request-Reply

ConversationState Chart

Request Channel Awaiting

Answer

Reply ChannelRequestor Replier

Simplest conversation Single Conversation state: waiting for reply, complete

G li d di i id d Gets more complicated once error conditions considered

37

Page 38: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Request-Reply with RetryC ti

Req est

ConversationState

Request

Response

Request (Resend)∆t AwaitingAnswer[timeout]

Consumer Provider

Response

[response] [yes]

maxretry?

Sender can repeat request n times Provider has to be idempotent

[ p ] [yes]

FailedSuccess

Receiver also has to be idempotent Example: RosettaNet Implementation Framework

(RNIF)(RNIF)

Page 39: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

How can a service find a conversation partner in when it has no knowledge about the

network and its services?

Point-to-point communication requires knowledge of the p q gconversation partner (or channel).

The late binding between a service consumer and the service endpoint lowers the location coupling between them. p p g

Discovery may be on the critical path to establishing a conversation. Even in the presence of a central lookup service, a new participant

has to first establish a connection to the lookup service.has to first establish a connection to the lookup service.

Page 40: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Dynamic Discovery

Provider1Pub-Sub

Request1

2Consider

Choose

Provider2

Provider3 Respond4

1 Broadcast request

35 Interact

1. Broadcast request2. Provider(s) consider whether to respond (load, suitability)3. Interested providers send responses4 R t h “b t” id f4. Requestor chooses “best” provider from responses5. Requestor initiates interaction with chosen provider Examples: DHCP, TIBCO Repository discovery

Page 41: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

How can a service find a conversation partner across a large network p g

without flooding the network with requests?

The late binding between a service consumer and the service

q

gendpoint lowers the location coupling between them.

Discovery may be on the critical path to establishing a conversation. Many networks do not route broadcast packets beyond the localMany networks do not route broadcast packets beyond the local

network. Often centralized administration is involved in setting up a new

service.service.

Page 42: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Consult Directory

ServiceRegistry

2 Consult Directory

Conversation

1 Publish Service Contract

Directory may store additional metadata about the service

Consumer ProviderConversation

3

Directory may store additional metadata about the service "Match making based on" Unique Identifiers Interface Definition / Type Attributes Keyword matchy

Page 43: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Subscribe-Notify (Multi-responses)

Express Interest

N tifNotify

Subscriber expresses interest in receiving notifications

Subscriber Provider

Subscriber expresses interest in receiving notifications Subscriber receives messages until a stop condition is

reached: Subscriber sends a stop request A deadline is reached without the subscriber renewing interest Subscriber does not respond to requests from provider Provider notifies subscriber of end of transmission

Page 44: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Renewing Interest

Lease “Lease” model Heartbeat / keep alive

RegisterAutomatic Expiration

Lease(Renew Interval)

Heartbeat / keep-alive Subscriber has to renew

activelyRenew Interest∆t

y Example: Jini

Renewal Request

Subscriber Provider

“Magazine Model” Subscriber can be simple

P id h tRenewal Request

Register

∆t

Renewal Confirm Provider has to manage state for each subscriberProviderSubscriber

Page 45: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Conversation Pattern Language

Initiating Message Reliable DeliveryMessages Simple ConversationsInitiating Message

Follow-on Message Complete Message

Reliable Delivery Sync Request-reply Async Request-Reply Complete Message

Side Conversation (Sub-Conversation)

Async. Request Reply messages

Async. Request-Poll(Sub Conversation) Acknowledgment

Message

Async. Request Poll for result

Subscribe-NotifyMessage Subscribe Notify Tacit Agreement Reaching agreementReaching agreement

Page 46: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Conversation Pattern Language

Vote / Poll Lease / Automatic

Coordinated Conv. Renewing Interest/

Reaching Agreement / Two-phase vote

/Expiration

Renewal Reminder Unanimous agreement

E t bli hi C E ti H dli Discovery Introduction

Two-phase Commit Compensation Action

Establishing Conv. Exception Handling

Introduction Three-Way Handshake Role negotiation

Compensation Action Retry / Resend

(Idempotent Receivers)g Establishing trust Write-Offs

Page 47: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns
Page 48: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Workflow Patterns - Example

Synchronizing Merge Merge many execution paths.

A B

Wait for A and BMerge many execution paths. Synchronize if multiple paths are taken.

CWait for A and B,

then execute C once

A B Multiple Merge Merge many execution paths

without synchronizing C

A B

Execute C twicewithout synchronizing.

Discriminator

C twice

A B Discriminator Merge many execution paths

without synchronizing. Execute C

A B

Execute C once as soon as

48the subsequent activity only once.

C once as soon as A or B completes

Page 49: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Event Pattern - Example

“Window of Opportunity”

Event 1

Event 2

Event 3

Event 4

Page 50: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Messaging Patterns (65) Messaging Systemsg g y Messaging Channels Message Construction

M R ti Message Routing Message Transformation Messaging EndpointsMessaging Endpoints System Management

Conversation Patternswww.eaipatterns.com

Discovery Establishing a Conversation

M l i C i

50

Multi-party Conversations Reaching agreement Resource Management 50Resource Management Error Handling

www.conversationpatterns.com

Page 51: Enterprise Integration Patterns:Enterprise Integration Patterns ......1. Transport messages Channel Patterns 3. Route the message to Routing Patterns 2. Design messages Message Patterns

Photo Credits http://nevermoregraphix.deviantart.com http://www.travelpod.com/members/ralf_ww_trip10 http://www.flickr.com/photos/mukluk