Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g
-
Upload
amis-friends-of-oracle-and-java -
Category
Technology
-
view
375 -
download
0
description
Transcript of Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g
![Page 1: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/1.jpg)
1 | x
Effective Fault Handling in
Oracle SOA Suite 11g
Ronald van Luttikhuizen [Vennster]
Guido Schmutz [Trivadis]
1-Oct-2012 | Oracle OpenWorld & JavaOne
![Page 2: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/2.jpg)
2 | x
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: [email protected]
• Blog: http://guidoschmutz.wordpress.com
• Twitter: gschmutz
![Page 3: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/3.jpg)
3 | x
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: [email protected]
• Blog: blog.vennster.nl
• Twitter: rluttikhuizen
![Page 4: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/4.jpg)
4 | x
Agenda
1. What is Fault Handling ?
2. Fault Handling in SOA vs. traditional systems
3. Scenario and Patterns
4. Implementation of Scenario
5. Summary and Best Practices
![Page 5: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/5.jpg)
5 | x
Fault Handling
● The goal of every programmer should be to write unbreakable software
● Extent of achievement depends on how good expected and unexpected exception conditions are handled and managed
● Object-oriented languages such as C++ and Java provide an efficient way for handling exceptions using constructs such as try, catch, and finally
● With a SOA, most of what is available at language level is still valid and usable
● SOA raises different challenges once starting orchestrating services and creating composite applications
● Prevention vs. handling
![Page 6: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/6.jpg)
6 | x
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
![Page 7: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/7.jpg)
7 | x
Two Types of Faults
Business faults ● Faults that service clients can expect and recover from
● Failure to meet a particular business requirement
● Often: expected, business value, contractual and recoverable
Technical 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
![Page 8: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/8.jpg)
8 | x
Business Fault <wsdl:operation name="orderProduct">
<wsdl:input message="order:OrderProductRequestMessage"/>
<wsdl:output message="order:OrderProductResponseMessage"/>
<wsdl:fault message="order:ProductNotInStockFaultMessage"
name="ProductNotInStockFault"/>
<wsdl:fault message="order:CustomerNotFoundFaultMessage"
name="CustomerNotFoundFault"/>
</wsdl:operation>
<xsd:element name="CustomerNotFoundFaultMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustName" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2. Fault message payload
1. Service contract including fault
![Page 9: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/9.jpg)
9 | x
Business Fault (II) <soap:Envelope>
<soap:Header/>
<soap:Body>
<soap:Fault>
<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>
3. Actual service response
![Page 10: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/10.jpg)
10 | x
Technical Fault <wsdl:operation name="orderProduct”>
<wsdl:input message="order:OrderProductMessage"/>
<wsdl:output message="order:OrderProductResponseMessage"/>
<wsdl:fault message="order:ProductNotInStockFaultMessage"
name="ProductNotInStockFault"/>
<wsdl:fault message="order:CustomerNotFoundFaultMessage"
name="CustomerNotFoundFault"/>
</wsdl:operation>
<soap:Body>
<soap:Fault>
<faultcode>S:Server</faultcode>
<faultstring>Could not connect to URL 127.0.0.1 on port 8001</faultstring>
</soap:Fault>
</soap:Body>
1. Service contract including fault
2. Actual service response
![Page 11: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/11.jpg)
11 | x
Agenda
1. What is Fault Handling ?
2. Fault Handling in SOA vs. traditional systems
3. Scenario and Patterns
4. Implementation of Scenario
5. Summary and Best Practices
![Page 12: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/12.jpg)
12 | x
Fault Handling SOA vs. traditional systems
Multiple service consumers
Services part of larger unit
Heterogeneous & external components
Long running processes
Asynchronous
Timed events
Often enterprise-wide
Transactions
ESB
Implemen- tation
Implemen- tation
Implemen- tation
BPM User Interface
External
![Page 13: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/13.jpg)
13 | x
Agenda
1. What is Fault Handling ?
2. Fault Handling in SOA vs. traditional systems
3. Scenario and Patterns
4. Implementation of Scenario
5. Summary and Best Practices
![Page 14: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/14.jpg)
14 | x
Old System with limited scalability
No 7*24 avail. for single instance of credit card service
Short Network interruptions
Response sometimes get
lost
Not always available
Fault if product is no longer available
![Page 15: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/15.jpg)
15 | x
Patterns for Fault Tolerant Software
Compensation
Exception shielding
(Limit) retry
Share the load
Alternative
Exception handler
Heartbeat
Throttling
![Page 16: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/16.jpg)
16 | x
Fault Recovery Strategies
● Inaction – Ignore the request
● Balk – Admit failure
● Guarded suspension – Suspend execution until conditions for correct
execution are established
● Provisional action – Pretend to perform the request, but do not
commit until success is granted
● Recovery – Perform an acceptable alternative
![Page 17: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/17.jpg)
17 | x
Fault Recovery Strategies
● Rollback – Try to proceed, but on failure, undo the effects of a
failed action
● Retry – Repeatedly attempt a failed action after recovering from
failed attempts
● Appeal to higher authority – Ask someone to apply judgment and
steer the software to an acceptable resolution
● Resign – Minimize damage, write log information, then signal
definite and safe failure
![Page 18: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/18.jpg)
18 | x
Agenda
1. What is Fault Handling ?
2. Fault Handling in SOA vs. traditional systems
3. Scenario and Patterns
4. Implementation of Scenario
5. Summary and Best Practices
![Page 19: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/19.jpg)
19 | x
![Page 20: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/20.jpg)
20 | x
Product Management
Result Caching
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
Result Cache
![Page 21: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/21.jpg)
21 | x
Product Management
Result Caching
Results are returned from cache rather than always invoking the
external service
● Product data is rather static, so ideal candidate for caching
Product DB
OSB
Proxy Service
Business Service
1
2 3
Result Cache
![Page 22: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/22.jpg)
22 | x
Product Management
Service Throttling
Restrict the number of messages on the message flow to a Business
Service
● Set from Operational Settings on the OSB console
OSB
Proxy Service
Business Service
Product DB
Message Buffer
![Page 23: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/23.jpg)
23 | x
Credit Card Booking
Retry Configuration
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
Retry
![Page 24: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/24.jpg)
24 | x
Credit Card Booking
Retry Configuration
Configured on the business service in OSB
Credit Card Service
OSB
Proxy Service
Business Service
1
2 after 2s
5x
![Page 25: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/25.jpg)
25 | x
Credit Card Booking
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
Service Pooling
![Page 26: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/26.jpg)
26 | x
Credit Card Booking
Service Pooling
Credit Card Service instance 2
Credit Card Service instance 1
Credit Card Service instance 3 OSB
Proxy Service
Business Service
![Page 27: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/27.jpg)
27 | x
Order Management
Transaction configuration
Problem ● Guarantee that the message will be delivered to the order management
system
Solution ● Make sure that queues are available, even if the Handle Order system is not
● Make sure that queuing run’s in the same transaction as the service consumer
Transaction of OSB
Service Consumer
Transaction of OSB
Service Consumer
![Page 28: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/28.jpg)
28 | x
Transactions in OSB
Explanation and Demo of Transactions in OSB
![Page 29: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/29.jpg)
29 | x
Order Management (II)
Fault Message on Callback Contract
Problem ● Need to return a Product No Longer Available Business Fault over an
Asynchronous MEP
Solution ● Design a separate Fault Message and Operation on the Callback
contract (WSDL) and use that
Fault Message on
Callback Contract
![Page 30: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/30.jpg)
30 | x
“Business Fault” modeled as another operation on the Callback WSDL
Order Management (II)
Fault Message on Callback
![Page 31: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/31.jpg)
31 | x
Order History
Fault Management Framework
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
Use Fault Policy Management
In Mediator to configure retry
![Page 32: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/32.jpg)
32 | x
Order History
Fault Management Framework
<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>
<faultPolicyBindings version="2.0.1">
<composite faultPolicy="OrderProcessFaultPolicy"/>
</faultPolicyBindings>
![Page 33: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/33.jpg)
33 | x
Order Handling Process
Return errors as synchronous response
Problem
● Both Product Management and Credit Card Booking can
return Business Faults
Solution
● Handle errors and map them to errors returned to the
service consumer (i.e. the caller of the process)
Fault Handling
Fault Handling
Reply with Fault
![Page 34: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/34.jpg)
34 | x
Order Handling Process
Return errors as synchronous response
Handle Business Faults in BPEL error handler and reply with an error
![Page 35: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/35.jpg)
35 | x
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 activity
with a timeout
● Undo the process by doing compensation
● Use the BPEL compensate activity together with
compensation handler to undo the Booking of the Credit Card
Pick with timeout
Compensate
![Page 36: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/36.jpg)
36 | x
Order Handling Process (II)
Handle missing callback with timeout
Pick Activity for handling callback
message with timeout branch
c
![Page 37: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/37.jpg)
37 | x
Order Handling Process (III)
Compensation Handling
Problem
● Order Processing callback message can be a Product No
Longer Available Business Fault
Solution
● Undo the process by doing compensation
● Use the BPEL compensate activity together with
compensation handler to undo the Booking of the
Credit Card
Handle Business
Fault and Compensate
Compensation
Handler
![Page 38: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/38.jpg)
38 | x
Order Handling Process (III)
Compensation Handling
Compensate activity invokes compensation
handling on the inner scope
• Can only be invoked from within a fault handler or
another compensation handler
![Page 39: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/39.jpg)
39 | x
Order Handling Process (IV)
Non-idempotent operations
Problem
● Credit Card Booking is a non-idempotent operation
Solution
● To avoid BPEL calling the Book Card operation again (not really possible here), we have set the idempotent
Property on the partner link to FALSE
Idempotent
Non-Idempotent
![Page 40: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/40.jpg)
40 | x
Problem
● Unexpected (technical) fault
● 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
Unexpected (technical) error
Order Handling Process (V)
Generic Error Handler w. Fault Policy Framework
![Page 41: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/41.jpg)
41 | x
<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>
<faultPolicyBindings version="2.0.1">
<composite faultPolicy="GenericFaultPolicy"/>
</faultPolicyBindings>
Order Handling Process (V)
Generic Error Handler w. Fault Policy Framework
<property name="oracle.composite.faultPolicyFile">oramds:/apps/fault-policies.xml</property>
<property name="oracle.composite.faultBindingFile">oramds:/apps/fault-bindings.xml</property>
![Page 42: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/42.jpg)
42 | x
Order Handling Process (V)
Generic Error Handler w. Fault Policy Framework
Explanation of generic fault handler
![Page 43: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/43.jpg)
43 | x
Agenda
1. What is Fault Handling ?
2. Fault Handling in SOA vs. traditional systems
3. Scenario and Patterns
4. Implementation of Scenario
5. Summary and Best Practices
![Page 44: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/44.jpg)
44 | x
Summary Issue Solution Product
Overloading product management system ThrottlingResult cache OSB
Credit Card Service does not guarantee 7*24 uptime due to e.g.
network problems
Muliple endpoints
Service pooling
OSB
Guarantee message delivery to order management system Availability of queues
Enqueue and dequeue in service consumer
transaction
OSB (and SOA Suite for XA
propagation to OSB)
Returning business fault over async MEP from order management
system
Separate operation and fault message OSB and SOA Suite (callback
contract between the two)
Order history service not available Retry in Mediator using fault policy framework SOA Suite
Business fault handling from service to process to consumer Catch faults in process and reply fault to
consumer
OSB and SOA Suite (correct
contracts)
Detect missing response message Timeout in pick activity SOA Suite
Handle product no longer available Compensation SOA Suite
Avoid calling credit card booking twice Set non-idempotent property SOA Suite
Processes needing to deal with unexpected technical faults. All
processes solving it in their own way using process logic.
Fault policy frameworks, error queue, generic
error handler, SOA Suite APIs & composite
sensors.
SOA Suite
![Page 45: Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g](https://reader033.fdocuments.in/reader033/viewer/2022052504/54b6082e4a79597f378b4591/html5/thumbnails/45.jpg)
45 | x
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