Integration Patterns Overview Christopher Baldwin Architect Microsoft EMEA cbaldwin@microsoft.com

Preview:

Citation preview

Integration Patterns OverviewIntegration Patterns Overview

Christopher BaldwinArchitectMicrosoft EMEAcbaldwin@microsoft.com

AgendaAgenda

Overview of Microsoft patterns & practices

Integration patterns

Pattern based design example

Patterns & PracticesPatterns & Practices

Reference ArchitecturesReference ArchitecturesReference ArchitecturesReference ArchitecturesBuilding BlocksBuilding BlocksBuilding BlocksBuilding Blocks

Lifecycle Guidance Lifecycle Guidance Guidance for tasks such as deployment and operations Guidance for tasks such as deployment and operations

in a production environmentin a production environment

Lifecycle Guidance Lifecycle Guidance Guidance for tasks such as deployment and operations Guidance for tasks such as deployment and operations

in a production environmentin a production environment

Enterprise Solution Enterprise Solution PatternsPatterns

Enterprise Solution Enterprise Solution PatternsPatterns

D A D I

A

D

I

D A D I

A

D

I

Atomic solutions to recurring Atomic solutions to recurring problemsproblems

Sub-system-level guidance for Sub-system-level guidance for common servicescommon services

System-level guidance for common System-level guidance for common customer scenarioscustomer scenarios

D A D I

A

D

I

ScenariosScenarios

Baseline Architectures (aka Skeletal Apps)

Patterns and Reference Model

Block Library

• Compositions of pattern implementations that meet requirements of scenarios

• Pattern implementations include blocks and tool-generated code

Architecture Scenarios• Ex. clients submitting one-way service requests via

message queues, SOAP message, transaction spanning message queue and business action, …

Tools• Pattern selection• Patten implementation • Block inclusion• Code generation • Configuration

• Selected patterns of distributed applications

• Meaningful pattern compositions

• A library of configurable, generally applicable blocks • Blocks or block compositions may implement patterns,

but they don’t imply patterns directly

Abstract Code-based

Patterns Traceable Down to BitsPatterns Traceable Down to Bits

Pattern Pattern Implementations,Implementations,

Blocks, Frameworks & Blocks, Frameworks & LogicalLogicalServersServers

Pattern SetPattern Set

Patterns Patterns Bound to Bound to PlatformPlatform

Bits & Bits & HardwareHardware

Enterprise Architecture - PatternsEnterprise Architecture - Patterns

Business ArchitectureBusiness Architecture

Integration ArchitectureIntegration Architecture

Application ArchitectureApplication Architecture

Operational ArchitectureOperational Architecture

Development ArchitectureDevelopment Architecture

Integration ArchitectureIntegration Architecture

Architecture

Design

Implementation

Database Application Deployment Infrastructure

Enterprise Solution PatternsEnterprise Solution Patterns

Architecture

Design

Implementation

Database Application Deployment Infrastructure

Enterprise Integration PatternsEnterprise Integration Patterns

AgendaAgenda

Overview of Microsoft patterns & practices

Integration patterns

Pattern based design example

Integration Patterns BookIntegration Patterns Book

Available to download from http://msdn.microsoft.com/patterns

Patterns arePatterns are

GuidanceConceptual, platform independentTextualAt minimum, cover

Context Problem Forces Solution

Separate Implementation Pattern

Integration PatternsIntegration Patterns

IntegratingLayerIntegratingLayer

SystemConnectionsSystemConnections

IntegrationTopologiesIntegrationTopologies

Integration PatternsIntegration Patterns Intent of Integration

Unified data access Streamlined business process Consolidated view of systems

How to Connect Via the database Via the business logic layer Via the user interface

How to Interconnect Through a central “hub” Open communication One-to-many communication

Integrating Layer Entity Aggregation Process Integration Portal Integration

System Connection Data Integration Function Integration Presentation Integration

Integration Topologies Message Broker Message Bus Publish-Subscribe

Integrating LayerIntegrating Layer

Portal IntegrationPortal Integration

How can users efficiently perform tasks that require access to information that resides in multiple disparate systems?

Create a Portal Application that displays the information retrieved from multiple applications in a unified user interface

Entity IntegrationEntity Integration

How can enterprise data that is redundantly distributed across multiple repositories be effectively maintained by applications?

Introduce an Entity Aggregation layer that provides a logical representation of the entities at an enterprise level with physical connections that support access to the back-end repositories

Process IntegrationProcess Integration

How do you coordinate the execution of a long-running business function that spans multiple disparate applications?

Define a business process model that describes the individual steps that make up the complex business function; Create a separate process manager component that can interpret multiple concurrent instances of this model and that can interact with the existing applications

Integration PatternsIntegration Patterns

IntegratingLayerIntegratingLayer

SystemConnectionsSystemConnections

IntegrationTopologiesIntegrationTopologies

System ConnectionsSystem Connections

Integration TopologiesIntegration Topologies

Additional Integration PatternsAdditional Integration Patterns

AgendaAgenda

Overview of Microsoft patterns & practices

Integration patterns

Pattern based design example

Team Scenario?

IntegratingLayerIntegratingLayer

SystemConnectionsSystemConnections

IntegrationTopologiesIntegrationTopologies

Pattern based design – team scenarioPattern based design – team scenario Global Bank

Mid-sized bank Grown through acquisition Limited and disparate online presence

Online initiative Electronic Bill Presentment and Payment (EBPP)

Trace use of patterns throughout design Build full baseline architecture Discuss via the Artefacts created

Business Scenario: ConvergenceBusiness Scenario: Convergence

“In the Convergence pattern, competitors from previously distinct industries start competing to satisfy the requirements of a specific customer set. There are three distinct flavors of this pattern: product, in which product boundaries blur; supplier, in which suppliers become ‘one stop shops’; and complementor, in which companies combine to deliver greater value”

- Profit Patterns, Adrian J. Slywotsky

CEO’s view – CEO’s view – High level enterprise ArchHigh level enterprise Arch

<<Enterprise Process Portfolio>>

Global Bank

Customer Clearinghouse Brokerage

<<Creates>>

<<supply>>

Federal Reserve

<<Resources>>

<<physical>>Output

Global Bank Enterprise Portfolio : CEO Process View

<<physical>>Capital

<<information>>Strategy

<<BusinessService>>Basic Banking -

Consumer

<<BusinessService>>Insuring

<<BusinessService>>Investing

<<Mission>> <<Vision>> <<GuidingPrinciples>>

<<Guides>>

<<Guides>> <<Guides>>

<<information>>Regulation

Credit Bureau3rd Party ServicesOther Financial Institutions

incomplete

incomplete

<<people>>

<<Control>>

<<achieves>>

<<Goal>>Process Goal:

Quantitative Goal

<<Goal>>Process Goal:

Qualitative Goal<<achieves>>

<<BusinessService>>Lending

<<BusinessService>>Sales, General &

Administrative

<<BusinessService>>Basic Banking -

Comercial

GM of Banking – GM of Banking – EBPP viewEBPP view

<<BusinessService>>

Basic Banking - Commercial

Customer Commercial Customer

<<Creates>>

<<supply>><<Resources>>

<<abstract>>Output

Global Bank Enterprise Portfolio - GM Process View

<<physical>>Capital

<<abstract>>BankingStrategy

<<Mission>> <<Vision>> <<GuidingPrinciples>>

<<Guides>>

<<Guides>> <<Guides>>

<<information>>BankingRegulation

<<BusinessService>>

Basic Banking - Consumer

<<BusinessService>>Consumer Lending

<<BusinessService>>Consumer Banking

Other Financial InstitutionsCredit Bureau

incomplete

incomplete

<<people>>

<<Control>>

<<Goal>>Process Goal:

Quantitative Goal

<<Goal>>Process Goal:

Qualitative Goal

<<achieves>>

<<BusinessService>>Payment Processing

<<BusinessService>>Electronic Bill

Presentment and Payment

(Online Bill Payment)

<<BusinessService>>Loan Servicing

<<BusinessService>>Account Management

<<BusinessService>>Loan Origination

<<achieves>>

<<achieves>>

<<achieves>>

<<BusinessService>>Electronic Funds

Transfer

<<BusinessService>>Cash Management

(Checking & Savings)

<<BusinessService>>Card Services

EBPP Director – EBPP Director – HL Processes viewHL Processes view

<<BusinessService>>

Basic Banking – Consumer Banking

<<Creates>> <<physical>>Output

<<BusinessService>>Cash Management

(Checking & Savings)

<<BusinessService>>Electronic Bill

Presentment and Payment

(Online Bill Payment)

<<BusinessService>>Loan Servicing

Customer

<<Goal>>Process Goal:

Quantitative Goal

<<achieves>>

<<Mission>> <<Vision>> <<GuidingPrinciples>>

<<Guides>>

<<Guides>> <<Guides>>

Global Bank Enterprise Portfolio - Process Owner View: Consumer banking

<<physical>>Capital

<<abstract>>Consumer

Banking Strategy

<<information>>Banking Regulation

<<BusinessService>>Account Management

<<BusinessService>>Loan Origination

incomplete

incomplete

Credit BureauClearinghouseOther Financial Institutions

<<supply>>

<<Resources>>

<<people>>

<<Control>>

<<Goal>>Process Goal:

Qualitative Goal

<<achieves>>

<<BusinessService>>Investment

Management

EBPP Major Use CasesEBPP Major Use Cases

Notification Package

Bill Payment System Package

Customer Package

Customer

Signup for EBPP

Get Potential EBPP Payees

(UC4)

Get Current EBPP Payees

(UC5)

Add \ Remove EBPP Payee

(UC3)

Get Current Bills (UC6)

Request Bill Payment (UC7)

Global BankUse Case Diagram - EBPP

Quit EBPP

Biller

Register as EBPP Payee

Bill Payment System

Submit Bills for EBPP

Customers

Send Notifications

Bills due

EBPP Administrator

Notification System

Process Submitted Bills

Transaction Processing

EBPP Subscription Update (UC 2)

Manage Notification

Profile

Add Notification Event

New Bills

Get Customer Data (UC1)

Update Bill Status (UC10)

Get Bill Data (UC8)

Transaction Management

Transfer Funds (UC9)

Transaction Processing Services

Integration Services

Biller Services

Global Bank Bank Enterprise Portfolio - Process Owner ViewConsumer banking: EBPP - Subscription Management

<<BusinessService>>Electronic Bill Presentment and Payment

(Online Bill Payment - Subscription Processing)

<<Goal>>Process Goal:

Quantitative Goal

<<achieves>>

<<Goal>>Process Goal:

Qualitative Goal<<achieves>>

Customer Services

Bill Consoldation Services

<<BusinessService>>Maintain Billers

<<BusinessService>>Presentment

<<BusinessService>>Payment

Tra

nsf

er

Fu

nd

s (U

C9

)

Up

da

te B

ill S

tatu

s (U

C1

0)

Ge

t C

ust

om

er

Da

ta (

UC

1)

[PaymentRequested]

Ad

d\R

em

ove

Pa

yee

s (U

C3

)

Ge

t C

urr

en

t P

aye

es

(UC

5)

Ge

t C

urr

en

t B

ills

(UC

6)

Ge

t C

ust

om

er

Da

ta (

UC

1)

Ge

t P

ote

ntia

l Pa

yee

s (U

C4

)

Ge

t B

ill D

ata

(U

C8

)

<<BusinessService>>Process EBPP Subscriptions

[EBPP Subscription Modifications]

Ge

t S

ub

scri

ptio

n U

pd

ate

s

Tra

nsm

it S

ub

scri

ptio

n U

pd

ate

s to

Su

pp

lier

Pro

cess

Su

bsc

rip

tion

Up

da

te R

esu

lts

Up

da

te S

ub

scri

ptio

n L

ist

<<payee>> Electric Company

<<payee>> Water Company

<<payee>> Sewer Company

Pa

yee

In

sta

nce

s

D1

D2

D3

D4

Re

qu

est

Bill

Pa

yme

nt

(UC

7)

Se

nd

Su

bsc

rip

tion

Ch

an

ge

s

Se

nd

Su

bsc

rip

tion

Ch

an

ge

s

Se

nd

Su

bsc

rip

tion

Ch

an

ge

s

EBPP Update Subscriptions (UC 2)Data Integration Specifications:D1 : Fixed File - File TransferD2 : XML - Batch Request ResponseD3 : XML - Transactional WebService

Transaction

Global Bank Enterprise Portfolio - Process WorkerConsumer banking: EBPP - Bill Presentment & Payment

Customer File Bill Consolidation

Start

Collect Customer

Credentials

Get Customer Data

Get Current Bills

Authenticate Customer

Present Current Bills

No Current Bills for Payment

Unable to Validate

Get Account Data

Select Bills For Payment

Select Account Validate

Availability of Funds

Insufficient Funds

Request Bill Payment

Transfer FundsUpdate Bill Status Succeeded Payment complete

Web Interface

Get Payee Account Data

Compensating Transaction

Reverse TransferUpdate Bill

Status

Failed

Failed

Transaction ManangmentAccount Management

Payment Failed

Layers?

SOI?

Implementing Service Oriented Implementing Service Oriented IntegrationIntegration How do you integrate information systems that

were not designed to work together? Coupling affects interoperability Divergence in platform type systems and data

structures Machine boundaries are important

Design systems to produce and consume XML-based Web Services.

Comply with industry standards, specifically WS-I

Implementing Service Oriented Implementing Service Oriented Integration Integration

Implementing Service Oriented Integration

Using ASP.NET

WSDLSchemaWeb Method

Using BizTalk

[STAThread] static void Main(string[] args) { Gateway.Gateway gateway = new Gateway.Gateway(); Gateway.GetAccountInfoRequest request = new Gateway.GetAccountInfoRequest(); request.AccountID = "123"; try { Gateway.GetAccountInfoResponse response = gateway.GetAccountInfo(request); System.Console.WriteLine("{0} {1} {2}", response.AccountID, response.Name, response.Balance); } catch (SoapException se) { Console.WriteLine(se.Message); } System.Console.ReadLine(); }

[STAThread] static void Main(string[] args) { Gateway.Gateway gateway = new Gateway.Gateway(); Gateway.GetAccountInfoRequest request = new Gateway.GetAccountInfoRequest(); request.AccountID = "123"; try { Gateway.GetAccountInfoResponse response = gateway.GetAccountInfo(request); System.Console.WriteLine("{0} {1} {2}", response.AccountID, response.Name, response.Balance); } catch (SoapException se) { Console.WriteLine(se.Message); } System.Console.ReadLine(); }

<?xml version="1.0" encoding="utf-16" ?> - <xs:schema xmlns="http://msdn.microsoft.com/patterns" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" elementFormDefault="qualified" targetNamespace="http://msdn.microsoft.com/patterns" id="CreditAccountRequest" xmlns:xs="http://www.w3.org/2001/XMLSchema">- <xs:element name="CreditAccountRequest">- <xs:complexType>- <xs:sequence>  <xs:element name="AccountID" type="xs:string" />   <xs:element name="Amount" type="xs:decimal" />   </xs:sequence>  </xs:complexType>  </xs:element>  </xs:schema>

<?xml version="1.0" encoding="utf-16" ?> - <xs:schema xmlns="http://msdn.microsoft.com/patterns" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" elementFormDefault="qualified" targetNamespace="http://msdn.microsoft.com/patterns" id="CreditAccountRequest" xmlns:xs="http://www.w3.org/2001/XMLSchema">- <xs:element name="CreditAccountRequest">- <xs:complexType>- <xs:sequence>  <xs:element name="AccountID" type="xs:string" />   <xs:element name="Amount" type="xs:decimal" />   </xs:sequence>  </xs:complexType>  </xs:element>  </xs:schema>ConsumerConsumer

Message SchemaMessage Schema

[WebMethod] [SoapDocumentMethod(ParameterStyle=SoapParameterStyle.Bare)] public GetAccountInfoResponse GetAccountInfo( [XmlElement("GetAccountInfoRequest")] GetAccountInfoRequest getAccountInfoRequest) { CedarBank.ICedarBank bank = CedarBankPlugInFactory.GetCedarBankImpl();

CedarBank.AccountInfo cedarAccountInfo = bank.GetAccountInfo(getAccountInfoRequest.AccountID);

return BuildAccountInfo(getAccountInfoRequest, cedarAccountInfo); }

[WebMethod] [SoapDocumentMethod(ParameterStyle=SoapParameterStyle.Bare)] public GetAccountInfoResponse GetAccountInfo( [XmlElement("GetAccountInfoRequest")] GetAccountInfoRequest getAccountInfoRequest) { CedarBank.ICedarBank bank = CedarBankPlugInFactory.GetCedarBankImpl();

CedarBank.AccountInfo cedarAccountInfo = bank.GetAccountInfo(getAccountInfoRequest.AccountID);

return BuildAccountInfo(getAccountInfoRequest, cedarAccountInfo); }

ProviderProvider

How is this Description of SOI How is this Description of SOI Different?Different?

Fits in with all integration alternatives.

Written in the context of higher and lower level decisions.

Written with separation of conceptual and implementation.

Baseline?

Early Conversation

Baseline Architecture from PatternsBaseline Architecture from Patterns

Technology?

Baseline Implementation from Baseline Implementation from PatternsPatterns

Deployment?

Baseline Infrastructure from Baseline Infrastructure from ImplementationImplementation

Agile?

Agenda ReviewAgenda Review

Overview of Microsoft patterns & practices

Integration patterns

Pattern based design example

Recommended