emea 2 enterprise integration erik doernenburg thoughtworks, inc. [email protected]

34

Post on 21-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com
Page 2: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA

22

Enterprise IntegrationEnterprise Integration

Erik DoernenburgThoughtWorks, [email protected]

Page 3: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA33 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

AgendaAgenda

Challenges in enterprise application development

Design patterns

Enterprise Integration patterns

Interop technologies

Conclusion & Resources

Page 4: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA44 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

The challengeThe challenge

Enterprises depend on a growing number of IT

systems

The systems must provide an integrated solution

for the enterprise

The systems must interoperate with each other

Architectural trends and “waves” of technologies

Changing business needs and requirements

Page 5: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA55 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Existing Systems

New System

Finance Operator ApplicationFinance Operator Application

Workflow items are stored on Tibco RV/CM queue Tibco Integration Manager

organises workflow handles imports from document recognition handles interaction with existing ERP systems

Reference data imported using linked servers

fax/telex

email

mail documentrecognition

app web

ERP ref. data

Page 6: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA66 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

New application

Existing

Portfolio Management ToolPortfolio Management Tool

Front-end uses Office 2003 code-behind technology

communicates with server using WebSphere MQ queues

Message format defined with XSD schema

Application uses existing services

accesses analytics library with COM bridge

accesses stored deals through deal manager service

accesses service bus through messaging abstraction library

analytics

library

Existing

dealmanage

r

Existing

messaging library

technology

adaptor

Excelfront-end

application

logic

Page 7: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA

77

Design PatternsDesign Patterns

Page 8: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA88 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Why design patterns?Why design patterns?

Code reuse remains difficult

but…

Knowledge reuse can be very valuable

Patterns encapsulate knowledge of successful designs

Page 9: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA99 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Using technology successfullyUsing technology successfully

Syntax Basic language mechanism A necessity but not a guarantee

Constructs Classes, Interfaces, Inheritance, Polymorphism, etc. Helpful but not sufficient for good design

Principles Separation of concerns, Dependency Injection, etc. Steer us towards a better solution

Patterns Model-View-Controller, Observer, Decorator Concrete design guidance

Page 10: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1010 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

PatternsPatterns

“Mind sized” chunk of information (Ward Cunningham)

Shows a good solution to a common problem within a

specific context

Observed from actual experience

Has a distinct name

Not copy-paste

ThoughtWorks collaborates with Microsoft to document

design patterns for the .NET platform

Page 11: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1212 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Enterprise Integration PatternsEnterprise Integration Patterns

Gregor Hohpe defined a visual pattern language describing message-based enterprise integration solutions

Pattern language comprises 65 patterns in 6 categories

Application

A

Application

B

MessageChannel

Router TranslatorEndpoint Endpoint

MonitoringMessagingMessagingEndpointsEndpoints

MessagingMessagingChannelsChannels

MessageMessageConstructioConstructio

nn

MessageMessageRoutingRouting

MessageMessageTransformationTransformation

SystemSystemManagemenManagemen

tt

Page 12: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1414 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Request-ResponseRequest-Response

Service Consumer and Provider (similar to RPC) Channels are unidirectional Two asynchronous point-to-point channels Separate request and response messages

Request Channel

Response

Request

Reply Channel

ProviderConsumer

Page 13: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1515 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Multiple consumersMultiple consumers

Each consumer has its own reply queue But how does the provider send the response?

Could send to all consumers (very inefficient) Hard code (violates principle of context-free

service)

Responses

Requests

??

RequestsRequest Channel

Reply Channel 1

Reply Channel 2

ProviderConsumer 1

Consumer 2

Page 14: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1616 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Return AddressReturn Address

Consumer specifies Return Address (the reply channel) in the request message

Service provider sends response message to specified channel

Responses

ReplyChannel 1

ReplyChannel 2

Request Channel

Reply Channel 1

Reply Channel 2

ProviderConsumer 1

Consumer 2

Page 15: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1717 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Load-balanced service providersLoad-balanced service providers

Request message can be handled by multiple providers Point-to-point channel supports competing services Only one service receives each request message But what if the response messages are out of order?

Request Channel

Reply Channel

Provider 1

Provider 2

Consumer

Page 16: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA1818 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Correlation IdentifierCorrelation Identifier

Consumer assigns a unique identifier to each message Identifier can be an arbitrary ID, a GUID, a business

key Provider copies the ID to the response message Consumer can match request and response

MessageIdentifier

1

2

1 2

12 12

1 2

12

CorrelationIdentifier

Request Channel

Reply Channel

Provider 1

Provider 2

Consumer

Page 17: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2020 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Multiple specialised providersMultiple specialised providers

Each provider can only handle a specific type of message Route the request to the "appropriate" provider. But how?

Do not want to burden sender with decision Letting providers "pick out" messages requires coordination

OrderEntryOrderEntry

Widget Inv.Widget Inv.

??Order Messages

Gadget Inv.Gadget Inv.

Page 18: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2121 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Content-Based RouterContent-Based Router

Insert a content-based router Routers forward incoming messages to different

channels Message content not changed Mostly stateless, but can be stateful, e.g. de-duper

OrderEntryOrderEntry

Widget Inv.Widget Inv.Order Messages

Gadget Inv.Gadget Inv.ContentBasedRouter

Page 19: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2222 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Composite messagesComposite messages

How can we process a message that contains multiple elements?

OrderEntryOrderEntry ??

OrderMessage

Widget Inv.Widget Inv.

Gadget Inv.Gadget Inv.

Page 20: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2323 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Splitter & RouterSplitter & Router

Use a splitter to break out the composite message into a series of individual messages

Then use a router to route the individual messages as before

Note that two patterns are composed

Widget Inv.Widget Inv.

Gadget Inv.Gadget Inv.

OrderEntryOrderEntry

RouterSplitter

OrderMessage

OrderItems

OrderItem 1

OrderItem 2

Page 21: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2424 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Producing a single responseProducing a single response

How to combine the results of individual but related messages? Messages can be out-of-order, delayed Multiple conversations can be intermixed

Widget Inv.Widget Inv.

Gadget Inv.Gadget Inv.

BillingBilling

OrderItem 1 Response 1

OrderItem 2

Response 2

ConfirmedOrder

??

Page 22: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2525 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: AggregatorAggregator

Use a stateful filter, an Aggregator Collects and stores messages until a complete set

has been received (completeness condition) Publishes a single message created from the

individual messages (aggregation algorithm)

Widget Inv.Widget Inv.

Gadget Inv.Gadget Inv.

BillingBilling

Aggregator

OrderItem 1 Response 1

OrderItem 2

Response 2

ConfirmedOrder

Page 23: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2626 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Communicating with multiple partiesCommunicating with multiple parties

How to send a message to a dynamic set of recipients?

And return a single response message?

RequestFor Quote

Vendor AVendor A

Vendor BVendor B

Quotes

AggregatorBest

Quote

Vendor CVendor C??

Page 24: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2727 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Pattern: Pattern: Scatter-GatherScatter-Gather

Send message to a pub-sub channel Interested recipients subscribe to a "topic" Aggregator collects individual response messages

may not wait for all quotes, only returns one quote

RequestFor Quote

Vendor AVendor A

Vendor BVendor B

Quotes

AggregatorBest

Quote

Vendor CVendor C

Pub-Subchannel

Page 25: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA2828 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Complex compositionComplex composition

Receive an order message Use splitter to create one message per item Send to scatter/gather which returns "best quote"

message Aggregate to create quoted order message

Quote requestfor each item

Vendor AVendor A

Vendor BVendor B

Quotes

AggregatorBest Quote

for each item

Vendor CVendor C

Aggregator

Splitter

Pub-Subchannel

Page 26: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA

2929

Interop technologiesInterop technologies

Page 27: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3030 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Resource based

RPC style / distributed objects

Message based / document-oriented

Major interop technologiesMajor interop technologies

DB files

RMI-IIOP(CORBA)

MOM

in-processbridge

WS-*

WSRemotin

g(DCOM)

WS

Page 28: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3131 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Interop technology characteristicsInterop technology characteristics

point-to-point

transient messagesdurable message

server lifetime-management

bridgeRemoting(DCOM)

RMI-IIOP(CORBA)

WSMOMDB/files

routable

WS-*

clustering

in-proc.NET

serverJ2EE

serverplatformneutral

WSMOM WS-*

Page 29: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3232 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

MessagingMessaging

Channels are separate from applicationsRemoves location dependencies

Channels are asynchronous & reliableRemoves temporal dependencies

Data is exchanged in self-contained messagesRemoves data format dependencies

Loosely coupled integration enables independent variation

Page 30: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3333 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Why Web Services?Why Web Services?

Web services provide all benefits of messaging solution loose-coupling service oriented reliable communication

Why web services? composable protocol vendor neutral suitable for access through Internet

Page 31: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3434 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Web Services developmentWeb Services development

Web Services are expected to become the default Messaging solution in the future

WS-* standards are evolving rapidly, most important WS-Security WS-Policy WS-Addressing

WS-I defines profiles, sample applications and testing tools Profiles are guidelines for using WS specifications Use Basic profile 1.1 to build interoperable solutions

Further research on WS is being carried out

Page 32: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3636 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

ConclusionConclusion

Enterprise systems are becoming more complex

We have patterns to help us with the design

We have technologies to implement our designs

Building for interoperability and integration is key

Page 33: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

EMEAEMEA3737 © Copyright ThoughtWorks, Inc.® 2005© Copyright ThoughtWorks, Inc.® 2005

Enterprise Solution Patterns using Microsoft .NETMicrosoft Patterns & Practices 2003

Recommended booksRecommended books

Patterns of Enterprise Application Architecture Martin Fowler Addison-Wesley, 2003

Enterprise Integration Patterns Gregor Hohpe, Bobby WoolfAddison-Wesley, 2004 Integration Patterns

Microsoft Patterns & Practices2004

Enterprise SOA Dirk Krafzig, Karl Banke, Dirk SlamaPrentice Hall, 2004

Page 34: EMEA 2 Enterprise Integration Erik Doernenburg ThoughtWorks, Inc. edoernen@thoughtworks.com

Please complete your sessionfeedback form

THANK YOU

Please complete your sessionfeedback form

THANK YOU