Integration Patterns OverviewIntegration Patterns Overview
Christopher BaldwinArchitectMicrosoft [email protected]
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