Effective fault handling in SOA Suite 11g


Published on

t is one thing to architect, design, and code the “happy flow” of your automated business processes and services. It is another thing to deal with situations you do not want or expect to occur in your processes and services. This session dives into fault handling in Oracle Service Bus 11g and Oracle SOA Suite 11g, based on an order-to-cash business process. Faults can be divided into business faults, technical faults, programming errors, and faulty user input. Each type needs a different approach to prevent them from occurring or to deal with them. For example, apply User Experience (UX) techniques to improve the quality of your application so that faulty user input can be prevented as much as possible. The session shows and demos what patterns and techniques can be used in Oracle Service Bus and Oracle SOA Suite to prevent and handle technical faults as well as business faults.

Published in: Technology
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Effective fault handling in SOA Suite 11g

  1. 1. Effective Fault Handlingin Oracle SOA Suite 11gRonald van Luttikhuizen [Vennster]Guido Schmutz [Trivadis]1-October-2012 | Oracle OpenWorld 1|x
  2. 2. Guido Schmutz• Working for Trivadis for more than 15 years• Oracle ACE Director for Fusion Middleware and SOA• Co-Author of different books• Consultant, Trainer, Software Architect for Java, Oracle, SOA and EDA• Member of Trivadis Architecture Board• Technology Manager @ Trivadis• More than 20 years of software development experience• Contact: guido.schmutz@trivadis.com• Blog: http://guidoschmutz.wordpress.com• Twitter: gschmutz 2|x
  3. 3. Ronald van Luttikhuizen• Managing Partner at Vennster• Oracle ACE Director for Fusion Middleware and SOA• Author of different articles, co-author Oracle SOA Book 11g book• Upcoming book SOA Made Simple• Architect, consultant, trainer for Oracle, SOA, EDA, Java• More than 10 years of software development and architecture experience• Contact: ronald.van.luttikhuizen@vennster.nl• Blog: blog.vennster.nl• Twitter: rluttikhuizen 3|x
  4. 4. Agenda1. What is Fault Handling ?2. Fault Handling in SOA vs. traditional systems3. Scenario and Patterns4. Implementation of Scenario5. Summary and Best Practices 4|x
  5. 5. What is a Fault ?● Something happened outside normal operational activity or “happy flow” • Technical error • Programming error • Faulty operation by user • Exceptional business behavior● Prevention and handling 6|x
  6. 6. Two Types of FaultsBusiness faults● Faults that service clients can expect and recover from● Failure to meet a particular business requirement● Often: expected, business value, contractual and recoverableTechnical faults● Faults that service clients do not expect and cannot (easily) recover from● Results of unexpected errors during runtime, e.g. null pointer errors, resources not available, and so on● Often: unexpected, technical, implementation and non-recoverable 7|x
  7. 7. Business Fault<wsdl:operation name="orderProduct"> <wsdl:input message="order:OrderProductRequestMessage"/> <wsdl:output message="order:OrderProductResponseMessage"/> <wsdl:fault message="order:ProductNotInStockFaultMessage" name="ProductNotInStockFault"/> 1. Service contract <wsdl:fault message="order:CustomerNotFoundFaultMessage" name="CustomerNotFoundFault"/> including fault</wsdl:operation><xsd:element name="CustomerNotFoundFaultMessage"> <xsd:complexType> <xsd:sequence> <xsd:element name="CustName" type="xsd:string"/> 2. Fault message payload <xsd:element name="City" type="xsd:string"/> </xsd:sequence> </xsd:complexType></xsd:element> 8|x
  8. 8. Business Fault (II)<soap:Envelope> <soap:Header/> <soap:Body> <soap:Fault> 3. Actual service response <faultcode>CST-1234</faultcode> <faultstring>Customer not found</faultstring> <detail> <CustomerNotFoundFault> <CustName>John Doe</CustName> <City>Long Beach</City> </CustomerNotFoundFault> </detail> </soap:Fault> </soap:Body></soap:Envelope> 9|x
  9. 9. Technical Fault<wsdl:operation name="orderProduct”> <wsdl:input message="order:OrderProductMessage"/> <wsdl:output message="order:OrderProductResponseMessage"/> <wsdl:fault message="order:ProductNotInStockFaultMessage" 1. Service contract name="ProductNotInStockFault"/> including fault <wsdl:fault message="order:CustomerNotFoundFaultMessage" name="CustomerNotFoundFault"/></wsdl:operation> 2. Actual service response<soap:Body> <soap:Fault> <faultcode>S:Server</faultcode> <faultstring>Could not connect to URL on port 8001</faultstring> </soap:Fault></soap:Body> 10 | x
  10. 10. Agenda1. What is Fault Handling ?2. Fault Handling in SOA vs. traditional systems3. Scenario and Patterns4. Implementation of Scenario5. Summary and Best Practices 11 | x
  11. 11. Fault Handling SOA vs. traditional systemsExternal BPM User Multiple service consumers Interface Services part of larger unit Heterogeneous & external components Long running processes ESB Asynchronous Timed events Often enterprise-wideImplemen- Implemen- Implemen- tation tation tation Transactions 12 | x
  12. 12. Agenda1. What is Fault Handling ?2. Fault Handling in SOA vs. traditional systems3. Scenario and Patterns4. Implementation of Scenario5. Summary and Best Practices 13 | x
  13. 13. Old System with limited scalabilityShort Network interruptions No 7*24 avail. for single instance of credit card service Response sometimes get Fault if product is lostno longer available Not always available 14 | x
  14. 14. Patterns for Fault Tolerant SoftwareCompensationException shielding(Limit) retryShare the loadAlternativeException handlerHeartbeatThrottling 15 | x
  15. 15. Agenda1. What is Fault Handling ?2. Fault Handling in SOA vs. traditional systems3. Scenario and Patterns4. Implementation of Scenario5. Summary and Best Practices 19 | x
  16. 16. 20 | x
  17. 17. Product ManagementResult Caching Result Cache Problem ● Not to overload the old, non-scalable product system with the new demand Solution ● Use Result Caching to cache the product information (read-only operation) ● Use Service Throttling to limit the number of concurrent requests 21 | x
  18. 18. Product ManagementResult Caching Results are returned from cache rather than always invoking the external service ● Product data is rather static, so ideal candidate for caching Proxy Business 1 Product DB Service Service 2 3 Result CacheOSB 22 | x
  19. 19. Product ManagementService Throttling Restrict the number of messages on the message flow to a Business Service Message Buffer Proxy Business Product Service Service DBOSB ● Set from Operational Settings on the OSB console 23 | x
  20. 20. Credit Card BookingRetry Configuration Retry Problem ● Unstable network between us and the external services Solution ● Use Retry mechanism of OSB to try multiple times ● No Fault Management necessary for service consumer if network interruption is only for a short time 24 | x
  21. 21. Credit Card BookingRetry Configuration Configured on the business service in OSB 1 Proxy Business after 2s Visa Service Service Service 2OSB 5x 25 | x
  22. 22. Credit Card BookingService Pooling Service Pooling Problem ● Credit Card Service does not guarantee 7*24 availability for one single instance Solution ● Use the multiple instances (endpoints) that the company provides and use service pooling feature of OSB ● No Fault Management for the service consumer if at least one endpoint is available 26 | x
  23. 23. Credit Card BookingService Pooling Credit Card Service instance 1 Proxy Business Credit Card Service instance 2 Service Service OSB Credit Card Service instance 3 27 | x
  24. 24. Order HistoryFault Management Framework Use Fault Policy Management In Mediator to configure retry Problem ● Order History System not available should have no impact on Business Process Solution ● Use Mediator with Fault Management Framework to configure retry independent of availability of Order History Web Service 32 | x
  25. 25. Order History Fault Management Framework<faultPolicyBindings version="2.0.1"> <composite faultPolicy="OrderProcessFaultPolicy"/></faultPolicyBindings><faultPolicies> <faultPolicy version="2.0.1" id="OrderProcessFaultPolicy"> <Conditions> <action ref="RetryAction"/> </Conditions> <Actions> <Action id="RetryAction"> <Retry> <retryCount>3</retryCount> <retryInterval>2</retryInterval> <exponentialBackoff/> <retryFailureAction ref="HumanInterventionAction"/> <retrySuccessAction/> </Retry> </Action> </Actions> </faultPolicy></faultPolicies> 33 | x
  26. 26. Order Handling Process Return errors as synchronous response Problem ● Both Product Management and Credit Card Booking can Fault Handling return Business Faults Fault Handling SolutionReply with Fault ● Handle errors and map them to errors returned to the service consumer (i.e. the caller of the process) 34 | x
  27. 27. Order Handling Process Return errors as synchronous responseHandle Business Faults in BPEL error handler and reply with an error 35 | x
  28. 28. Order Handling Process (II) Handle missing callback with timeout Problem ● Order Processing response message can get lost in the Order Processing system, i.e. the callback message will never arrive in the process Solution ● Timeout on the Wait For Answer with a BPEL pick activityPick with timeout with a timeout ● Undo the process by doing compensation Compensate ● Use the BPEL compensate activity together with compensation handler to undo the Booking of the Credit Card 36 | x
  29. 29. Order Handling Process (II)Handle missing callback with timeoutPick Activity for handling callback message with timeout branch c 37 | x
  30. 30. Order Handling Process (III)Compensation Handling Problem ● Order Processing callback message can be a Product No Compensation Longer Available Business Fault Handler Solution ● Undo the process by doing compensationHandle Business ● Use the BPEL compensate activity together withFault and Compensate compensation handler to undo the Booking of the Credit Card 38 | x
  31. 31. Order Handling Process (III)Compensation HandlingCompensate activity invokes compensation handling on the inner scope• Can only be invoked from within a fault handler or another compensation handler 39 | x
  32. 32. Order Handling Process (V) Generic Error Handler w. Fault Policy Framework Problem ● Unexpected (technical) faultUnexpected (technical) error ● Multiple processes that deal with unexpected faults in their own way Solution ● Use fault handler mechanism to enqueue on error queue without adding process logic ● Create one process to listen to error queue and handle faults ● Retrieve process information by using (composite) sensors 41 | x
  33. 33. Order Handling Process (V)Generic Error Handler w. Fault Policy Framework Explanation of generic fault handler 42 | x
  34. 34. Order Handling Process (V) Generic Error Handler w. Fault Policy Framework<faultPolicyBindings version="2.0.1"> <composite faultPolicy="GenericFaultPolicy"/></faultPolicyBindings><faultPolicies> <faultPolicy version="2.0.1" id="GenericFaultPolicy"> <Conditions> <action ref="GenericAction"/> </Conditions> <Actions> <Action id="GenericAction"> <javaAction className="nl.vennster.GenericHandler“ defaultAction=“HumanIntervention"> <returnValue value="HumanIntervention" ref=" HumanIntervention"/> </javaAction> </Action> </Actions> </faultPolicy></faultPolicies><property name="oracle.composite.faultPolicyFile">oramds:/apps/fault-policies.xml</property><property name="oracle.composite.faultBindingFile">oramds:/apps/fault-bindings.xml</property> 43 | x
  35. 35. Agenda1. What is Fault Handling ?2. Fault Handling in SOA vs. traditional systems3. Scenario and Patterns4. Implementation of Scenario5. Summary and Best Practices 44 | x
  36. 36. SummaryIssue Solution ProductOverloading product management system ThrottlingResult cache OSBCredit Card Service does not guarantee 7*24 uptime due to e.g. Muliple endpoints OSBnetwork problems Service poolingGuarantee message delivery to order management system Availability of queues OSB (and SOA Suite for XA Enqueue and dequeue in service consumer propagation to OSB) transactionReturning business fault over async MEP from order management Separate operation and fault message OSB and SOA Suite (callbacksystem contract between the two)Order history service not available Retry in Mediator using fault policy framework SOA SuiteBusiness fault handling from service to process to consumer Catch faults in process and reply fault to OSB and SOA Suite (correct consumer contracts)Detect missing response message Timeout in pick activity SOA SuiteHandle product no longer available Compensation SOA SuiteAvoid calling credit card booking twice Set non-idempotent property SOA SuiteProcesses needing to deal with unexpected technical faults. All Fault policy frameworks, error queue, generic SOA Suiteprocesses solving it in their own way using process logic. error handler, SOA Suite APIs & composite sensors. 45 | x
  37. 37. Summary & Best Practices● Differentiate between business and technical faults● Design service contracts with faults in mind: formally describe business faults in service contracts● Don’t use exceptions as goto’s● Design with criticality, likeliness to fail, and cost in mind● Differentiate fault patterns in OSB and BPM/BPEL • OSB: Retry, throttling, transaction boundaries • BPM/BPEL: Compensation, business fault handling, generic fault handler, timeout● Handle unexpected errors generically● Make services autonomous● Fault-handling on scope of services and in wider perspective 46 | x
  38. 38. Thank You! Vennster Ronald van Luttikhuizen ronald.van.luttikhuizen@vennster.nl Trivadis AG Guido Schmutz guido.schmutz@trivadis.comBASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 47 | x