Realizing Service Oriented Architecture Anna Liu Architect Advisor Microsoft Australia [email_address]
Preamble <ul><li>What are the takeaways? </li></ul><ul><ul><li>Practical advice for implementing SOA based on real world c...
<ul><li>Multi-National bank </li></ul><ul><li>Grown through acquisition </li></ul><ul><li>Heterogeneous environment </li><...
Global Bank Architecture Internet Banking Wireless Aggregation Branch Banking CRM Core Banking Wealth Management Treasury ...
Situation <ul><li>Fragmented customer view </li></ul><ul><ul><li>Difficult to get complete picture of customer’s relations...
Realizing SOA at Global Bank
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messag...
Schema Rationalization <ul><li>Services need to agree on certain concepts </li></ul><ul><ul><li>What is the format for an ...
Schema Rationalization  CRM Architecture SQL Server (in house) Siebel (commercial) Other (J2EE based) 1
Schema Rationalization  CRM Architecture SQL Server (in house) Siebel (commercial) Other (J2EE based) 1
Reading Service Schema Rationalization   Options <ul><li>Reader-Makes-Right </li></ul><ul><ul><li>When an incoming message...
Schema Rationalization  Recommendation - Define a Canonical Schema <ul><li>Model the Entities </li></ul><ul><ul><ul><li>Cr...
Schema Rationalization   Canonical Schema Usage <ul><ul><li>Message </li></ul></ul><ul><ul><ul><li>Used for communication ...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design   </li></ul><ul><li>3. Reliable Mess...
Service Design <ul><li>Factoring </li></ul><ul><ul><li>Data ownership </li></ul></ul><ul><ul><li>Coarse grain services </l...
Service Design  Factoring - When There’s Data Needed By Many <ul><li>Data May Be Needed by Many Services </li></ul><ul><ul...
Service Design Factoring - Requesting The Owner Make Changes <ul><li>If a Non-Owner Wants a Change It Must Ask for the Cha...
Service Design  Factoring – Service Granularity <ul><li>Service granularity refers to scope of functionality a service exp...
Service Design  Service Anatomy Service Service Facade Web Services Remoting MSMQ Agent COM+ Messages 2
Service Design  Method-centric interface <ul><li>[WebMethod] </li></ul><ul><li>Customer GetCustomer (int custId) </li></ul...
Service Design Message-centric interface <ul><li>[WebMethod] </li></ul><ul><li>GetCustomerMsgResponse GetCustomer (GetCust...
Service Design Command Message <ul><li>[WebMethod] </li></ul><ul><li>CmdResponse DoCommand (CommandRequest req) </li></ul>...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Reliable Messaging  <ul><li>In the absence of Reliable Messaging infrastructure </li></ul><ul><ul><li>Requests get lost… <...
Reliable Messaging <ul><li>Some queuing systems may offer some form of guaranteed delivery </li></ul><ul><ul><li>message i...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Entity Aggregation <ul><li>Why Entity Aggregation? </li></ul><ul><ul><li>Properties for an Entity (Contact or Customer) ma...
Entity Aggregation Schema Reconciliation CUSTOMER FirstName LastName AddressInfo SSID MaritalStatus Canonical  Schema Serv...
Entity Aggregation Instance Reconciliation Service Interfaces Agents Storage Entity Aggregation Service Legacy  Service Le...
Entity Aggregation Instance Reconciliation #2 <ul><li>Aggregation Service holds a Redundant Copy </li></ul><ul><li>Issue o...
Entity Aggregation Global Bank Account Aggregation Service <ul><li>Return a document which contains summary data from all ...
Entity Aggregation Patterns Recommendation: Use the Patterns from the PAG Integration Patterns catalog   <ul><li>PAG Entit...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Legacy Integration <ul><li>The world is full of independently designed systems </li></ul><ul><ul><li>Differences happen al...
Legacy Integration <ul><li>Simulate Request/Response or One way Interaction over the Legacy access model </li></ul><ul><li...
Global Bank Today Internet DMZ Trusted Employees Tellers Server Apps Partners Customers Phase 2: New Opportunities Phase 1...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Process Externalization <ul><li>Multiple Services are usually required to work together to fulfill a business request </li...
Process Externalization Clients and Agents (Service Consumers) Entity  Activity  Process  Infrastructure Event Entity Serv...
Process Externalization Entity  Activity  Process  Infrastructure Event Clients and Agents (Service Consumers) Activity Se...
Process Externalization Entity  Activity  Process  Infrastructure Event Clients and Agents (Service Consumers) Process ser...
Process Externalization Entity  Activity  Process  Infrastructure Event Clients and Agents (Service Consumers) Infrastruct...
Process Externalization Entity  Activity  Process  Infrastructure Event Clients and Agents (Service Consumers) <ul><li>Eve...
Process Externalization Recommendation - Use BizTalk Orchestration 6
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Service Agent <ul><li>Also called “Agent/Service ”,  “Agent”, “Emissary” </li></ul><ul><li>“ Smart Proxy” </li></ul><ul><l...
Service Agent <ul><li>Service Agent </li></ul><ul><ul><li>Manages Activity-Oriented-Data </li></ul></ul><ul><ul><li>Lives ...
Service Agent Agent Design Agent Manager Service Connection Information Populate  and query Executor Cache Queue WSDL gen ...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Service Management  Challenges <ul><li>Web Services Availability, Versioning, Monitoring, Deployment </li></ul><ul><li>Pol...
Service Management  Recommendation – Create a Common Services Framework – Not One-off Ad-hoc solutions! Web Services Provi...
Service Management  Basic Flows Company A (Web Service Provider) 1. Register Organization with CSF Company B Web Service  ...
Service Management   <ul><li>Policy-based Routing   - Goal is to enable Service differentiation </li></ul><ul><ul><li>Use ...
Service Management  CSF Runtime Deployment Scenarios <ul><li>As a Web service intermediary </li></ul>b .NET Web Service  C...
<ul><li>As a chain of web service intermediaries </li></ul><ul><li>Distribute processing across intermediaries </li></ul><...
<ul><li>Point-to-point processing </li></ul>Service Management  CSF Runtime Deployment Scenarios . NET Web Service .NET We...
<ul><li>Flexibly combine all models </li></ul>Service Management  CSF Runtime Deployment Scenarios . CSF Runtime .NET Web ...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Security <ul><li>Security #1 concern for customers with Web Services </li></ul><ul><li>Authorization </li></ul><ul><li>Aut...
Security  Point-to-point vs End-to-end <ul><li>HTTPS/IPSEC  </li></ul><ul><ul><li>Point to point </li></ul></ul><ul><ul><l...
<ul><li>Great applications in financial scenarios </li></ul><ul><li>Inherent support in .NET framework </li></ul><ul><li>F...
Security  Authorization <ul><li>Authorization Manager (Win2K3) </li></ul><ul><ul><li>Hierarchical tasks and roles – for ha...
Security Authentication - SSO and Authentication using Mediated Third Party <ul><li>Architecturally speaking, typical SSO ...
Security SSO Approaches <ul><li>2 Common Architecture Approaches: </li></ul><ul><ul><li>Proxy Authentication Firewall </li...
Security SSO Approach I Proxy Authentication Firewall <ul><li>A central point of policy enforcement </li></ul><ul><li>Simp...
Security SSO Approach II Application Authentication Agent <ul><li>SSO Agent installed at the Web Service </li></ul>Smart  ...
Top SOA Issues <ul><li>1. Schema Rationalization  </li></ul><ul><li>2. Service Design  </li></ul><ul><li>3. Reliable Messa...
Transaction Management <ul><li>2 Phase commit does not work well across loosely coupled SOA links </li></ul><ul><ul><li>Yo...
Summary <ul><li>1. Service Design  </li></ul><ul><ul><li>Factoring, Message based interfaces </li></ul></ul><ul><li>2. Rel...
References <ul><li>Architecture </li></ul><ul><ul><li>http://www.microsoft.com/architecture </li></ul></ul><ul><li>pattern...
Thank You [email_address]
 
Upcoming SlideShare
Loading in …5
×

Download or view Powerpoint presentation slides

842 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
842
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
70
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Download or view Powerpoint presentation slides

  1. 1. Realizing Service Oriented Architecture Anna Liu Architect Advisor Microsoft Australia [email_address]
  2. 2. Preamble <ul><li>What are the takeaways? </li></ul><ul><ul><li>Practical advice for implementing SOA based on real world case studies </li></ul></ul><ul><ul><li>Actionable advice on key design issues </li></ul></ul><ul><ul><li>Relevant insight into the proven practices of customers who have successfully built SOA solutions </li></ul></ul><ul><li>Global Bank – a reference implementation for SOA </li></ul>
  3. 3. <ul><li>Multi-National bank </li></ul><ul><li>Grown through acquisition </li></ul><ul><li>Heterogeneous environment </li></ul><ul><ul><li>Mainframe systems </li></ul></ul><ul><ul><li>J2EE systems </li></ul></ul><ul><ul><li>Microsoft systems (COM and .NET) </li></ul></ul><ul><li>Provides many products & services </li></ul><ul><ul><li>Checking, Savings </li></ul></ul><ul><ul><li>Bill Payment, Insurance, Investing, Institutional and Personal Banking </li></ul></ul>
  4. 4. Global Bank Architecture Internet Banking Wireless Aggregation Branch Banking CRM Core Banking Wealth Management Treasury / Forex Trading / Back office Payment Systems and Card Mgmt 3D Secure Business Intelligence EAI Straight through Processing ATM / POS
  5. 5. Situation <ul><li>Fragmented customer view </li></ul><ul><ul><li>Difficult to get complete picture of customer’s relationship with the bank in one place </li></ul></ul><ul><li>Islands of Data and Business Logic </li></ul><ul><ul><li>Integration is an afterthought </li></ul></ul><ul><li>Difficult/Expensive/Takes too long to meet new business demands </li></ul><ul><ul><li>Business rules duplicated across many systems </li></ul></ul><ul><ul><li>Complex, brittle silo-ed projects difficult to evolve </li></ul></ul>
  6. 6. Realizing SOA at Global Bank
  7. 7. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  8. 8. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  9. 9. Schema Rationalization <ul><li>Services need to agree on certain concepts </li></ul><ul><ul><li>What is the format for an Address? </li></ul></ul><ul><ul><li>What does an Expense Report look like? </li></ul></ul><ul><ul><li>How do we define what a Contact looks like? </li></ul></ul><ul><li>Schema rationalization allows commonality of many business concepts </li></ul><ul><ul><li>e.g. How would you provide a unified view of the Customer in the absence of such rationalization? </li></ul></ul>1
  10. 10. Schema Rationalization CRM Architecture SQL Server (in house) Siebel (commercial) Other (J2EE based) 1
  11. 11. Schema Rationalization CRM Architecture SQL Server (in house) Siebel (commercial) Other (J2EE based) 1
  12. 12. Reading Service Schema Rationalization Options <ul><li>Reader-Makes-Right </li></ul><ul><ul><li>When an incoming message arrives, the receiver fixes it </li></ul></ul><ul><ul><li>The source schema and destination schema are compared </li></ul></ul><ul><ul><li>Stuff that easily maps is moved </li></ul></ul><ul><ul><li>The best fit to transform the mismatch is hand-crafted </li></ul></ul><ul><li>N-Squared Combinatorics </li></ul><ul><ul><li>Every reader must know about all of its partners </li></ul></ul><ul><ul><li>For N partners, N*(N-1) hand-crafted transformations must exist </li></ul></ul><ul><ul><li>As N gets large, this gets too large </li></ul></ul>Some data requires transformation Other data copies through Svc Svc Svc Svc Svc Svc Svc Svc Svc Svc Svc Svc 12 Services 12 X 11 = 132 message transformers 1
  13. 13. Schema Rationalization Recommendation - Define a Canonical Schema <ul><li>Model the Entities </li></ul><ul><ul><ul><li>Create a static, Canonical Schema </li></ul></ul></ul><ul><ul><ul><li>Agree on XML namespaces </li></ul></ul></ul><ul><ul><ul><li>Only expose XSD data types </li></ul></ul></ul><ul><ul><ul><li>Agree on naming conventions </li></ul></ul></ul><ul><ul><ul><li>Keep it simple </li></ul></ul></ul><ul><li>Canonical Schema </li></ul><ul><ul><li>Represents the authoritative, common definition </li></ul></ul><ul><ul><li>Other definitions can be derived from this – Traceability </li></ul></ul><ul><ul><li>Interoperability </li></ul></ul><ul><li>It is not one large XML-Schema </li></ul><ul><ul><li>really a bucket of schemas that collectively form the Canonical Schema </li></ul></ul>1
  14. 14. Schema Rationalization Canonical Schema Usage <ul><ul><li>Message </li></ul></ul><ul><ul><ul><li>Used for communication between services </li></ul></ul></ul><ul><ul><ul><li>Requires Canonical Schema </li></ul></ul></ul><ul><ul><li>Reference Data </li></ul></ul><ul><ul><ul><li>Cached data – usually de-normalized </li></ul></ul></ul><ul><ul><ul><li>Requires Canonical Schema </li></ul></ul></ul><ul><ul><li>Outside the Service vs. Inside the Service </li></ul></ul>Requires Open Schema for Interoperability Yes No Outside Inside 1
  15. 15. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  16. 16. Service Design <ul><li>Factoring </li></ul><ul><ul><li>Data ownership </li></ul></ul><ul><ul><li>Coarse grain services </li></ul></ul><ul><li>Service Anatomy </li></ul><ul><ul><li>How do we expose Services? </li></ul></ul><ul><li>Interface design </li></ul><ul><li>Multi-channel access / transport infrastructure independence </li></ul>2
  17. 17. Service Design Factoring - When There’s Data Needed By Many <ul><li>Data May Be Needed by Many Services </li></ul><ul><ul><li>Customers, Employees, Parts, etc </li></ul></ul><ul><li>Each Piece of Data Needs an Owner </li></ul><ul><ul><li>Only the Owner May Change It </li></ul></ul><ul><li>Owner Publishes Changes to Others </li></ul><ul><ul><li>Others Receive Updates and Cache Versions </li></ul></ul>Ref Vers#23 of Employee Data Update! Ref Vers# 24 of Employee Data Sales Service Authoritative Customer Data HR Service Authoritative Employee Data – Vers#23 Authoritative Employee Data – Vers# 24 Ref Vers#24 of Employee Data Update Employees Vers#24 2
  18. 18. Service Design Factoring - Requesting The Owner Make Changes <ul><li>If a Non-Owner Wants a Change It Must Ask for the Change </li></ul><ul><ul><li>This is a Request Sent to the Owning Service </li></ul></ul><ul><ul><li>The Owning Service May Agree to Change the Data </li></ul></ul><ul><ul><li>If It Changes, This Affects the Next Version </li></ul></ul>Service-B Owning Service-A 2 Request Uses: Vers-X Please Make Data Change 3 A’s-Data Vers-Y A’s-Data Vers-X 1 2
  19. 19. Service Design Factoring – Service Granularity <ul><li>Service granularity refers to scope of functionality a service exposes </li></ul><ul><li>Small scope – e.g. data access – small business value </li></ul><ul><li>Business Services as composite interfaces </li></ul><ul><li>Coarse grained services to more closely match business capability - provide greater business value </li></ul><ul><li>constructed by composing lower-level services to meet business process requirements </li></ul>2
  20. 20. Service Design Service Anatomy Service Service Facade Web Services Remoting MSMQ Agent COM+ Messages 2
  21. 21. Service Design Method-centric interface <ul><li>[WebMethod] </li></ul><ul><li>Customer GetCustomer (int custId) </li></ul><ul><li>{ </li></ul><ul><li>Customer retVal; </li></ul><ul><li>... </li></ul><ul><li>return retVal; </li></ul><ul><li>} </li></ul><ul><li>Pros </li></ul><ul><li>Simple to develop </li></ul><ul><li>Cons </li></ul><ul><li>Encourages RPC like behavior (near model) </li></ul><ul><li>Encourages exposing internal state </li></ul>2
  22. 22. Service Design Message-centric interface <ul><li>[WebMethod] </li></ul><ul><li>GetCustomerMsgResponse GetCustomer (GetCustomerMsgRequest req) </li></ul><ul><li>{ </li></ul><ul><li>GetCustomerMsgResponse retVal; </li></ul><ul><li>req.Process(); </li></ul><ul><li>... </li></ul><ul><li>return retVal; </li></ul><ul><li>} </li></ul><ul><li>Pros </li></ul><ul><li>Encourages encapsulating internal state </li></ul><ul><li>Encourages message-based communication (far model) </li></ul><ul><li>Cons </li></ul><ul><li>More time-consuming to develop </li></ul>2
  23. 23. Service Design Command Message <ul><li>[WebMethod] </li></ul><ul><li>CmdResponse DoCommand (CommandRequest req) </li></ul><ul><li>{ </li></ul><ul><li>switch (req.Command) </li></ul><ul><li>{ </li></ul><ul><li>case Cmds.QueryCustomer: </li></ul><ul><li>retVal = DoQueryCustomer(req); </li></ul><ul><li>case Cmds.UpdateInvoice: </li></ul><ul><li>retVal = DoUpdateInvoice(req); </li></ul><ul><li>... </li></ul><ul><li>} </li></ul><ul><li>return retVal; </li></ul><ul><li>} </li></ul><ul><li>Pros </li></ul><ul><li>Expose a single service which accepts many kinds of messages </li></ul><ul><li>Easier to secure a single URL </li></ul><ul><li>Dynamic command routing </li></ul><ul><li>Cons </li></ul><ul><li>More time-consuming to develop </li></ul><ul><li>Solution is more complex </li></ul>2
  24. 24. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  25. 25. Reliable Messaging <ul><li>In the absence of Reliable Messaging infrastructure </li></ul><ul><ul><li>Requests get lost… </li></ul></ul><ul><ul><li>Requests arrive more than once… </li></ul></ul><ul><li>Idempotent means it’s OK to arrive multiple times </li></ul><ul><ul><li>As long as the request is processed at least once, the correct stuff occurs </li></ul></ul>Idempotent If not yet withdrawal #XYZ then withdraw $1 Billion and label as #XYZ Naturally Idempotent Read Record X Not Idempotent Withdrawing $1 Billion 3
  26. 26. Reliable Messaging <ul><li>Some queuing systems may offer some form of guaranteed delivery </li></ul><ul><ul><li>message is delivered or the sender is notified </li></ul></ul><ul><ul><li>at most once, exactly once semantics </li></ul></ul><ul><ul><li>No need for idempotent message processing? </li></ul></ul><ul><li>However, only tell you that the message got to the destination system </li></ul><ul><ul><li>has the destination business capability processed it? </li></ul></ul><ul><li>For synchronous Request/Response interaction it may not help! </li></ul><ul><ul><li>You still have to implement a timeout and retry if you don’t hear back from the business capability!! </li></ul></ul><ul><ul><li>Now that you’re retrying, the request had better be idempotent!!! </li></ul></ul>3
  27. 27. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  28. 28. Entity Aggregation <ul><li>Why Entity Aggregation? </li></ul><ul><ul><li>Properties for an Entity (Contact or Customer) may come from more than one Legacy system </li></ul></ul><ul><ul><li>Same Entity may be replicated across Legacy systems </li></ul></ul><ul><li>Common Scenarios </li></ul><ul><ul><li>Schema is different across Legacy systems – typically subsetted </li></ul></ul><ul><ul><ul><li>Schema Reconciliation is required </li></ul></ul></ul><ul><ul><li>Schema is different - Keys are different </li></ul></ul><ul><ul><ul><li>Instance Reconciliation required </li></ul></ul></ul>4
  29. 29. Entity Aggregation Schema Reconciliation CUSTOMER FirstName LastName AddressInfo SSID MaritalStatus Canonical Schema Service Interfaces Agents Storage Entity Aggregation Service Legacy Service Legacy Service CUSTOMER FirstName LastName AddressInfo CUSTOMER FirstName LastName SSID MaritalStatus Schema Transformations 4
  30. 30. Entity Aggregation Instance Reconciliation Service Interfaces Agents Storage Entity Aggregation Service Legacy Service Legacy Service CUSTOMER Key1 FirstName LastName ZIP CUSTOMER Key2 FirstName LastName SSID MaritalStatus CUSTOMER FirstName LastName AddressInfo SSID MaritalStatus Insert Operation - InsertCustomer FirstName LastName ZIP Response – Key1 Operation - InsertCustomer FirstName LastName SSID MaritalStatus Response – Key2 4
  31. 31. Entity Aggregation Instance Reconciliation #2 <ul><li>Aggregation Service holds a Redundant Copy </li></ul><ul><li>Issue of Synchronization of Copy </li></ul><ul><ul><li>Single Master – Multiple Replicas </li></ul></ul><ul><ul><ul><li>Legacy system should send a Notification event </li></ul></ul></ul><ul><ul><ul><ul><li>Batch Notification when Batch Update is allowed </li></ul></ul></ul></ul><ul><ul><ul><li>Replicas must synchronize by listening to notifications </li></ul></ul></ul><ul><ul><ul><ul><li>Alternatively for some Entities, it could be pull-based </li></ul></ul></ul></ul><ul><ul><li>Multi-master </li></ul></ul><ul><li>Entity Aggregation Service as Master </li></ul><ul><ul><ul><li>Post update events so that legacy systems can be synchronized </li></ul></ul></ul>4
  32. 32. Entity Aggregation Global Bank Account Aggregation Service <ul><li>Return a document which contains summary data from all key backend systems </li></ul><ul><li>Cache summary as per policy </li></ul>Credit Cards Accounts Investments Summary Service Summary Cache Entity Aggregation Service Maps multiple schemas from different back ends to a single schema which is presented to “outsiders” The internal schema differences are visible from the “inside” only Service must account for what to do if one of the providers is unavailable 4
  33. 33. Entity Aggregation Patterns Recommendation: Use the Patterns from the PAG Integration Patterns catalog <ul><li>PAG Entity Aggregation Patterns http:// msdn.microsoft.com/library/default.asp?url =/library/en-us/ dnpag/html/intpatt.asp </li></ul>4
  34. 34. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  35. 35. Legacy Integration <ul><li>The world is full of independently designed systems </li></ul><ul><ul><li>Differences happen all the way from the hardware though the OS and middleware, up to the application semantics </li></ul></ul><ul><li>Rationalizing these disparate systems is a huge challenge </li></ul><ul><li>Recommendation </li></ul><ul><ul><li>Treat Legacy systems as Business Services </li></ul></ul><ul><ul><ul><li>Surround Legacy systems and build messaging interfaces to them </li></ul></ul></ul><ul><ul><ul><li>Don’t just Bridge them with Services – Adapt them! </li></ul></ul></ul>5
  36. 36. Legacy Integration <ul><li>Simulate Request/Response or One way Interaction over the Legacy access model </li></ul><ul><li>Transform incoming data (Canonical Schemas) to a representation that Legacy systems can understand </li></ul><ul><li>Analyze the App to Identify Its Operations </li></ul><ul><ul><li>Humans Perform Operations with the App </li></ul></ul><ul><ul><li>Many of These Are Cancelable </li></ul></ul><ul><ul><ul><li>The Cancellation May Take Many Steps </li></ul></ul></ul><ul><li>The Goal Is to Capture “Low-Hanging-Fruit” </li></ul><ul><ul><li>Identify Easy to Automate Human Interactions </li></ul></ul><ul><ul><li>Wrap Those as Services </li></ul></ul><ul><li>If Too Hard to Automate, Enqueue for Humans </li></ul><ul><ul><li>Ensure the Requests Aren’t Lost </li></ul></ul><ul><ul><li>OK to Get Human Help </li></ul></ul><ul><li>Try to Automate Cancellation and Confirmation </li></ul><ul><ul><li>Many Times These Can Be Automated, Too </li></ul></ul>5
  37. 37. Global Bank Today Internet DMZ Trusted Employees Tellers Server Apps Partners Customers Phase 2: New Opportunities Phase 1: Service Enablement Phase 3: New Partners Billing Service Clearing House Credit Bureau Accounts Investments Customer
  38. 38. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  39. 39. Process Externalization <ul><li>Multiple Services are usually required to work together to fulfill a business request </li></ul><ul><ul><li>Recommendation - Use a Process Service to Orchestrate business services to fulfill a request </li></ul></ul><ul><ul><li>Usually corresponds to a user-task or a business transaction </li></ul></ul><ul><li>Benefits </li></ul><ul><ul><li>Easy customization – Externalized definition </li></ul></ul><ul><ul><li>Business Analyst friendly representation </li></ul></ul><ul><ul><li>Tools for effective communication </li></ul></ul><ul><ul><li>Robust Exception Handling - Compensation </li></ul></ul>6
  40. 40. Process Externalization Clients and Agents (Service Consumers) Entity Activity Process Infrastructure Event Entity Services represent simple atomic operations on an Entity Database Component Partner Legacy 6
  41. 41. Process Externalization Entity Activity Process Infrastructure Event Clients and Agents (Service Consumers) Activity Services coordinate several Entity Services to enable Business Function execution (UpdateCustomer, AcceptPO) Database Component Partner Legacy 6
  42. 42. Process Externalization Entity Activity Process Infrastructure Event Clients and Agents (Service Consumers) Process services represent long running business processes that may involve complex workflow and human interaction Consider BizTalk Server 2004 for these services Database Component Partner Legacy 6
  43. 43. Process Externalization Entity Activity Process Infrastructure Event Clients and Agents (Service Consumers) Infrastructure Services enable Security, Management and Metering/Monitoring Database Component Partner Legacy 6
  44. 44. Process Externalization Entity Activity Process Infrastructure Event Clients and Agents (Service Consumers) <ul><li>Event Services notify subscribers of </li></ul><ul><li>interesting events triggered </li></ul><ul><li>Invalidate Reference Data </li></ul><ul><li>Publish Reference Data </li></ul>Database Component Partner Legacy 6
  45. 45. Process Externalization Recommendation - Use BizTalk Orchestration 6
  46. 46. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  47. 47. Service Agent <ul><li>Also called “Agent/Service ”, “Agent”, “Emissary” </li></ul><ul><li>“ Smart Proxy” </li></ul><ul><li>Communicate with Services on user’s behalf </li></ul><ul><li>Provides additional capabilities </li></ul><ul><ul><li>Simplify interface </li></ul></ul><ul><ul><li>Offline </li></ul></ul><ul><ul><li>Caching </li></ul></ul><ul><ul><li>Queuing </li></ul></ul><ul><ul><li>Service location resolution </li></ul></ul><ul><ul><li>Identity </li></ul></ul>7
  48. 48. Service Agent <ul><li>Service Agent </li></ul><ul><ul><li>Manages Activity-Oriented-Data </li></ul></ul><ul><ul><li>Lives for a Single Long-Running-Operation </li></ul></ul><ul><li>Uses Only: </li></ul><ul><ul><li>Activity-Oriented-Data </li></ul></ul><ul><ul><li>Requests/Responses (Incoming & Outgoing) </li></ul></ul><ul><ul><li>Reference-Data </li></ul></ul>Reference Data Read-Only Activity Oriented Data Read/Write Service Logic Service Agent 7
  49. 49. Service Agent Agent Design Agent Manager Service Connection Information Populate and query Executor Cache Queue WSDL gen Proxy Agent Add Pull Notify Service requests Client method calls 7
  50. 50. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  51. 51. Service Management Challenges <ul><li>Web Services Availability, Versioning, Monitoring, Deployment </li></ul><ul><li>Policy-driven routing of Web Service requests and responses </li></ul><ul><li>Web Service traffic logging </li></ul><ul><li>Providing Value added services (Metering, Billing etc.) </li></ul><ul><li>Web Services Security* </li></ul>8
  52. 52. Service Management Recommendation – Create a Common Services Framework – Not One-off Ad-hoc solutions! Web Services Providers Web Services Consumers Users Common Services Framework 8
  53. 53. Service Management Basic Flows Company A (Web Service Provider) 1. Register Organization with CSF Company B Web Service Consumer CSF Administration 4. Register Organization with CSF Common Service Framework 2. Register Web Service 3. Define access policies 5. Subscribe to Company A’s Web service CSF Runtime CSF Client Toolkit Secure Log Route 6. Consume web service 7. Web service response 8
  54. 54. Service Management <ul><li>Policy-based Routing - Goal is to enable Service differentiation </li></ul><ul><ul><li>Use policy-based routing to enforce service differentiation </li></ul></ul><ul><ul><li>Routing policy could be based on any defined attributes: </li></ul></ul><ul><ul><ul><li>Class of service. e.g. Silver, Gold, Platinum subscription </li></ul></ul></ul><ul><li>Logging and Monitoring </li></ul><ul><ul><li>Log web service requests, responses, security events etc. </li></ul></ul><ul><ul><li>Logging level can be changed by configuration </li></ul></ul><ul><ul><ul><li>Enterprise Instrumentation Framework (EIF) </li></ul></ul></ul><ul><ul><li>Use Microsoft Operations Manager (MOM) for Collection and Analysis </li></ul></ul><ul><ul><li>Foundation for building other value added services, e.g. Metering and Billing </li></ul></ul>8
  55. 55. Service Management CSF Runtime Deployment Scenarios <ul><li>As a Web service intermediary </li></ul>b .NET Web Service Client .NET Web Service Authenticate Log Policy-based Routing CSF Runtime Web Service Intermediary J2EE Web Service J2EE Web Service Client 8
  56. 56. <ul><li>As a chain of web service intermediaries </li></ul><ul><li>Distribute processing across intermediaries </li></ul><ul><li>AKA “The Message Bus” to some people </li></ul>Service Management CSF Runtime Deployment Scenarios <ul><li>CSF Runtime </li></ul><ul><li>Authenticate </li></ul><ul><li>Route </li></ul>Web Service Intermediary <ul><li>CSF Runtime </li></ul><ul><li>Authorize </li></ul><ul><li>Log </li></ul><ul><li>Route </li></ul>Web Service Intermediary .NET Web Service Client J2EE Web Service Client . NET Web Service J2EE Web Service 8
  57. 57. <ul><li>Point-to-point processing </li></ul>Service Management CSF Runtime Deployment Scenarios . NET Web Service .NET Web Service Client <ul><li>CSF Runtime </li></ul><ul><li>Authenticate </li></ul><ul><li>Encrypt/Decrypt </li></ul><ul><li>CSF Runtime </li></ul><ul><li>Authenticate </li></ul><ul><li>Encrypt/Decrypt </li></ul><ul><li>Authorize </li></ul><ul><li>Log </li></ul>8
  58. 58. <ul><li>Flexibly combine all models </li></ul>Service Management CSF Runtime Deployment Scenarios . CSF Runtime .NET Web Service J2EE Web Service J2EE Web Service Client CSF Runtime .NET Web Service Client Web Service Intermediary Web Service Intermediary CSF Runtime CSF Runtime 8
  59. 59. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  60. 60. Security <ul><li>Security #1 concern for customers with Web Services </li></ul><ul><li>Authorization </li></ul><ul><li>Authentication </li></ul><ul><li>Confidentiality – Encryption </li></ul><ul><li>Integrity – Digital Signatures </li></ul><ul><li>Policy </li></ul><ul><li>Services a trust boundary </li></ul><ul><ul><li>Authenticate service consumer </li></ul></ul><ul><ul><li>Authorize service consumer </li></ul></ul>9
  61. 61. Security Point-to-point vs End-to-end <ul><li>HTTPS/IPSEC </li></ul><ul><ul><li>Point to point </li></ul></ul><ul><ul><li>More performant </li></ul></ul><ul><li>WS-Security </li></ul><ul><ul><li>End-to-end </li></ul></ul><ul><ul><li>Message level </li></ul></ul><ul><ul><li>XML signing and encryption more costly </li></ul></ul><ul><li>Recommendation </li></ul><ul><ul><li>WS-Security preferred </li></ul></ul><ul><ul><li>HTTPS/IPSEC for higher performance requirements if appropriate </li></ul></ul>9
  62. 62. <ul><li>Great applications in financial scenarios </li></ul><ul><li>Inherent support in .NET framework </li></ul><ul><li>Flexible and extensible </li></ul><ul><li>Key concepts: principal, identity… </li></ul><ul><ul><li>bool IsInRole = MyPrincipal.IsInRole(&quot;Manager&quot;); </li></ul></ul><ul><li>MSDN Developer’s guide: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconintroductiontorole-basedsecurity.asp </li></ul>Security Role-Based Security 9
  63. 63. Security Authorization <ul><li>Authorization Manager (Win2K3) </li></ul><ul><ul><li>Hierarchical tasks and roles – for handling complex scenarios </li></ul></ul><ul><li>WSE 2.0 – role-based authorization model for secure access to a service </li></ul><ul><ul><li>IPrincipal interface on security tokens, IsInRole() </li></ul></ul><ul><ul><li>Declaratively via Policy statements </li></ul></ul><ul><li>PAG </li></ul><ul><ul><li>“ Designing Application managed Authorization” </li></ul></ul><ul><ul><ul><li>http://msdn.microsoft.com/library/?url=/library/en-us/dnbda/html/damaz.asp </li></ul></ul></ul><ul><ul><li>Authorization & Profile Application Block </li></ul></ul>9
  64. 64. Security Authentication - SSO and Authentication using Mediated Third Party <ul><li>Architecturally speaking, typical SSO solutions use third party mediated authentication design that is similar to Kerberos </li></ul>Trusted Third Party Application Service Credential Policy Store 1. Authenticate with User Credential 2. Validate Credential 3. Issue Ticket-Granting-Ticket (TGT) 4. Request for Service Ticket, using TGT as proof of previous authentication 5. Service Ticket 6. Application request with service ticket as proof of authentication Smart Client 9
  65. 65. Security SSO Approaches <ul><li>2 Common Architecture Approaches: </li></ul><ul><ul><li>Proxy Authentication Firewall </li></ul></ul><ul><ul><li>Application Authentication Agent </li></ul></ul>9
  66. 66. Security SSO Approach I Proxy Authentication Firewall <ul><li>A central point of policy enforcement </li></ul><ul><li>Simplify management </li></ul><ul><li>Propagate user identity to web applications </li></ul>Smart Client Application Authentication Firewall Web Service 1 Web Service 2 Web Service 3 Propagate App Request + User Identity Trusted Third Party 9
  67. 67. Security SSO Approach II Application Authentication Agent <ul><li>SSO Agent installed at the Web Service </li></ul>Smart Client Trusted Third Party Web Service 1 Web SSO Agent Web Service 2 Web SSO Agent Web Service 3 Web SSO Agent 9
  68. 68. Top SOA Issues <ul><li>1. Schema Rationalization </li></ul><ul><li>2. Service Design </li></ul><ul><li>3. Reliable Messaging </li></ul><ul><li>4. Entity Aggregation </li></ul><ul><li>5. Legacy Integration </li></ul><ul><li>6. Process Externalization </li></ul><ul><li>7. Service Agents </li></ul><ul><li>8. Service Management </li></ul><ul><li>9. Security </li></ul><ul><li>10. Transaction Management </li></ul>
  69. 69. Transaction Management <ul><li>2 Phase commit does not work well across loosely coupled SOA links </li></ul><ul><ul><li>You may not have tight control over your business partner’s resource </li></ul></ul><ul><li>WS-Transaction </li></ul><ul><ul><li>WS-Coordination, WS-AtomicTransaction, WS-BusinessActivity </li></ul></ul><ul><li>Design architecture away from the need of tightly coupled distributed transaction processing </li></ul><ul><li>Some support for long running transactions in BizTalk Server </li></ul>10
  70. 70. Summary <ul><li>1. Service Design </li></ul><ul><ul><li>Factoring, Message based interfaces </li></ul></ul><ul><li>2. Reliable Messaging </li></ul><ul><ul><li>Synchronous Request/Response: Idempotency; Fire/Forget: today use MSMQ or BizTalk Messaging </li></ul></ul><ul><li>3. Schema Rationalization </li></ul><ul><ul><li>Create Canonical Schema </li></ul></ul><ul><li>4. Entity Aggregation </li></ul><ul><ul><li>Design for Entity Aggregation </li></ul></ul><ul><li>5. Legacy Integration </li></ul><ul><ul><li>Adapt Services, Service Taxonomy </li></ul></ul><ul><li>6. Process Externalization </li></ul><ul><ul><li>BizTalk Orchestration </li></ul></ul><ul><li>7. Service Agents </li></ul><ul><ul><li>Value-added communication, Offline etc. </li></ul></ul><ul><li>8. Service Management </li></ul><ul><ul><li>Address service management needs for all Services – not ad-hoc solution </li></ul></ul><ul><li>9. Security </li></ul><ul><ul><li>Trust boundary, WS-Security for end-to-end </li></ul></ul><ul><li>10. Transaction Management </li></ul><ul><ul><li>Avoid 2PC, use WS-Transaction </li></ul></ul>
  71. 71. References <ul><li>Architecture </li></ul><ul><ul><li>http://www.microsoft.com/architecture </li></ul></ul><ul><li>patterns & practices </li></ul><ul><ul><li>http://www.microsoft.com/practices </li></ul></ul>
  72. 72. Thank You [email_address]

×