SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Effective Fault Handling in
Oracle SOA Suite 11g
Ronald van Luttikhuizen [Vennster]
Guido Schmutz [Trivadis]

1-Oct-2012 | Oracle OpenWorld & JavaOne




                                          1|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: guido.schmutz@trivadis.com
• Blog: http://guidoschmutz.wordpress.com
• Twitter: gschmutz

                                                                  2|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: ronald.van.luttikhuizen@vennster.nl
• Blog: blog.vennster.nl
• Twitter: rluttikhuizen

                                                                     3|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




                                                     4|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

                                                                   5|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




                                                              6|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

                                                                          7|x
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
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
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 127.0.0.1 on port 8001</faultstring>
  </soap:Fault>
</soap:Body>

                                                                                 10 | 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




                                                     11 | x
Fault Handling SOA vs. traditional systems

External     BPM          User      Multiple service consumers
                        Interface   Services part of larger unit
                                    Heterogeneous & external components
                                    Long running processes
              ESB
                                    Asynchronous
                                    Timed events
                                    Often enterprise-wide
Implemen-   Implemen-   Implemen-
  tation      tation      tation    Transactions


                                                               12 | 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




                                                     13 | x
Old System with
                   limited scalability

Short Network
 interruptions                 No 7*24 avail. for
                               single instance of
                               credit card service


                                   Response
                                 sometimes get
 Fault if product is                 lost
no longer available

                        Not always
                         available




                                         14 | x
Patterns for Fault Tolerant Software

Compensation
Exception shielding
(Limit) retry
Share the load
Alternative
Exception handler
Heartbeat
Throttling

                                          15 | 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




                                                                 16 | 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




                                                                 17 | 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




                                                     18 | x
19 | x
Product Management
Result 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

                                                                  20 | 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

   Proxy             Business      1             Product DB
  Service             Service
                 2         3

       Result
       Cache
OSB


                                                                   21 | x
Product Management
Service Throttling

  Restrict the number of messages on the message flow to a Business
    Service
              Message Buffer
   Proxy                         Business       Product
  Service                         Service         DB
OSB

  ● Set from Operational Settings on the OSB console




                                                               22 | x
Credit Card Booking
Retry 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

                                                                   23 | x
Credit Card Booking
Retry Configuration

  Configured on the business service in OSB
                                 1
   Proxy         Business
                             after 2s     Credit Card Service
  Service         Service        2
OSB
                        5x




                                                                24 | x
Credit Card Booking
Service 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
                                                                        25 | x
Credit Card Booking
Service Pooling
                           Credit Card Service instance 1
      Proxy     Business
                           Credit Card Service instance 2
     Service     Service
   OSB                     Credit Card Service instance 3




                                                            26 | x
Order Management
Transaction configuration
                                   Transaction of OSB
                                   Service Consumer




                                   Transaction of OSB
                                   Service Consumer
 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

                                                                          27 | x
Transactions in OSB


Explanation and Demo of Transactions in OSB




                                              28 | x
Order Management (II)
   Fault Message on Callback Contract



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

                                                                         29 | x
Order Management (II)
Fault Message on Callback

“Business Fault” modeled as another operation on the
   Callback WSDL




                                                       30 | x
Order History
Fault 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

                                                                 31 | x
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>


                                                                  32 | x
Order Handling Process
            Return errors as synchronous response

                            Problem
                            ● Both Product Management and Credit Card Booking can
           Fault Handling     return Business Faults

           Fault Handling   Solution
Reply with Fault            ● Handle errors and map them to errors returned to the
                              service consumer (i.e. the caller of the process)




                                                                               33 | x
Order Handling Process
 Return errors as synchronous response
Handle Business Faults in BPEL error handler and reply with an error




                                                                   34 | 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
Pick 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
                                                                        35 | x
Order Handling Process (II)
Handle missing callback with timeout
Pick Activity for handling callback
   message with timeout branch




                 c




                                       36 | x
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 compensation
Handle Business        ● Use the BPEL compensate activity together with
Fault and Compensate
                         compensation handler to undo the Booking of the
                         Credit Card


                                                                      37 | 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




                                                       38 | x
Order Handling Process (IV)
Non-idempotent operations
                    Problem
                    ● Credit Card Booking is a non-idempotent operation
                    Solution
   Non-Idempotent   ● 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




                                                                       39 | x
Order Handling Process (V)
 Generic Error Handler w. Fault Policy Framework

                               Problem
                               ● Unexpected (technical) fault
Unexpected (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
                                                                                  40 | x
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>


                                                                                                41 | x
Order Handling Process (V)
Generic Error Handler w. Fault Policy Framework

 Explanation of generic fault handler




                                                  42 | 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




                                                     43 | 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.    Muliple endpoints                               OSB
network problems                                                  Service pooling
Guarantee message delivery to order management system             Availability of queues                          OSB (and SOA Suite for XA
                                                                  Enqueue and dequeue in service consumer         propagation to OSB)
                                                                  transaction
Returning business fault over async MEP from order management     Separate operation and fault message            OSB and SOA Suite (callback
system                                                                                                            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      OSB and SOA Suite (correct
                                                                  consumer                                        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   Fault policy frameworks, error queue, generic   SOA Suite
processes solving it in their own way using process logic.        error handler, SOA Suite APIs & composite
                                                                  sensors.
                                                                                                                                 44 | 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

                                                                                        45 | x

Más contenido relacionado

La actualidad más candente

Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforcedeimos
 
My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12Mat Keep
 
Development of concurrent services using In-Memory Data Grids
Development of concurrent services using In-Memory Data GridsDevelopment of concurrent services using In-Memory Data Grids
Development of concurrent services using In-Memory Data Gridsjlorenzocima
 
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scale
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scaleHow LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scale
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scaleLinkedIn
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic applicationTaras Matyashovsky
 
Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance Simon Haslam
 
How to Become a Winner in the JVM Performance-Tuning Battle
How to Become a Winner in the JVM Performance-Tuning BattleHow to Become a Winner in the JVM Performance-Tuning Battle
How to Become a Winner in the JVM Performance-Tuning BattleCapgemini
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Datadeimos
 
#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?Tammy Bednar
 
Effective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database MirroringEffective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database Mirroringwebhostingguy
 
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...Tobias Koprowski
 
1 architecture & design
1   architecture & design1   architecture & design
1 architecture & designMark Swarbrick
 
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationMichel Schildmeijer
 
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Alex Gorbachev
 
44spotkaniePLSSUGWRO_CoNowegowKrainieChmur
44spotkaniePLSSUGWRO_CoNowegowKrainieChmur44spotkaniePLSSUGWRO_CoNowegowKrainieChmur
44spotkaniePLSSUGWRO_CoNowegowKrainieChmurTobias Koprowski
 

La actualidad más candente (20)

Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforce
 
My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12
 
Development of concurrent services using In-Memory Data Grids
Development of concurrent services using In-Memory Data GridsDevelopment of concurrent services using In-Memory Data Grids
Development of concurrent services using In-Memory Data Grids
 
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scale
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scaleHow LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scale
How LinkedIn uses memcached, a spoonful of SOA, and a sprinkle of SQL to scale
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
 
Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance
 
SQL Server High Availability
SQL Server High AvailabilitySQL Server High Availability
SQL Server High Availability
 
SQL Server User Group 02/2009
SQL Server User Group 02/2009SQL Server User Group 02/2009
SQL Server User Group 02/2009
 
How to Become a Winner in the JVM Performance-Tuning Battle
How to Become a Winner in the JVM Performance-Tuning BattleHow to Become a Winner in the JVM Performance-Tuning Battle
How to Become a Winner in the JVM Performance-Tuning Battle
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
 
#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?
 
Effective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database MirroringEffective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database Mirroring
 
SQL Azure for ITPros
SQL Azure for ITProsSQL Azure for ITPros
SQL Azure for ITPros
 
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...
Virtual Study Beta Exam 71-663 Exchange 2010 Designing And Deploying Messagin...
 
Rohit_Panot
Rohit_PanotRohit_Panot
Rohit_Panot
 
1 architecture & design
1   architecture & design1   architecture & design
1 architecture & design
 
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementation
 
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
 
Session 319
Session 319Session 319
Session 319
 
44spotkaniePLSSUGWRO_CoNowegowKrainieChmur
44spotkaniePLSSUGWRO_CoNowegowKrainieChmur44spotkaniePLSSUGWRO_CoNowegowKrainieChmur
44spotkaniePLSSUGWRO_CoNowegowKrainieChmur
 

Similar a Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g

Effective fault handling in SOA Suite 11g
Effective fault handling in SOA Suite 11gEffective fault handling in SOA Suite 11g
Effective fault handling in SOA Suite 11gGuido Schmutz
 
Fault Handling in SOA Suite 11g
Fault Handling in SOA Suite 11gFault Handling in SOA Suite 11g
Fault Handling in SOA Suite 11gGuido Schmutz
 
Netpod - The Merging of NPM & APM
Netpod - The Merging of NPM & APMNetpod - The Merging of NPM & APM
Netpod - The Merging of NPM & APMBoni Bruno
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliencyMasashi Narumoto
 
Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Lari Hotari
 
Service Ownership with PagerDuty and Rundeck: Help others help you
Service Ownership with PagerDuty and Rundeck:  Help others help you Service Ownership with PagerDuty and Rundeck:  Help others help you
Service Ownership with PagerDuty and Rundeck: Help others help you TraciMyers5
 
Cutomize sap webinar
Cutomize sap webinarCutomize sap webinar
Cutomize sap webinargabrielsyst
 
React&Redux : The Amdocs Way (Sneak Peak)
React&Redux : The Amdocs Way (Sneak Peak)React&Redux : The Amdocs Way (Sneak Peak)
React&Redux : The Amdocs Way (Sneak Peak)Sandeep Bamane
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]Jimmy Angelakos
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery Dmitry Buzdin
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservicesBilgin Ibryam
 
Real-time Manufacturing Management for a Hybrid Process
Real-time Manufacturing Management for a Hybrid ProcessReal-time Manufacturing Management for a Hybrid Process
Real-time Manufacturing Management for a Hybrid Processmichaelthonea
 
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Preeya Selvarajah
 
Oracle EBS R12.2 - The Upgrade Know-How Factory
Oracle EBS R12.2 - The Upgrade Know-How FactoryOracle EBS R12.2 - The Upgrade Know-How Factory
Oracle EBS R12.2 - The Upgrade Know-How Factorypanayaofficial
 
PHD Virtual Automating Disaster Recovery Testing to Ensure Application Recovery
PHD Virtual Automating Disaster Recovery Testing to Ensure Application RecoveryPHD Virtual Automating Disaster Recovery Testing to Ensure Application Recovery
PHD Virtual Automating Disaster Recovery Testing to Ensure Application RecoveryMark McHenry
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Rick Hightower
 
Citrix Troubleshooting 101
Citrix Troubleshooting 101Citrix Troubleshooting 101
Citrix Troubleshooting 101eG Innovations
 
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-Native
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-NativeApp Modernization with .NET Core: How Travelers Insurance is Going Cloud-Native
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-NativeVMware Tanzu
 

Similar a Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g (20)

Effective fault handling in SOA Suite 11g
Effective fault handling in SOA Suite 11gEffective fault handling in SOA Suite 11g
Effective fault handling in SOA Suite 11g
 
Fault Handling in SOA Suite 11g
Fault Handling in SOA Suite 11gFault Handling in SOA Suite 11g
Fault Handling in SOA Suite 11g
 
Netpod - The Merging of NPM & APM
Netpod - The Merging of NPM & APMNetpod - The Merging of NPM & APM
Netpod - The Merging of NPM & APM
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliency
 
Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014
 
Service Ownership with PagerDuty and Rundeck: Help others help you
Service Ownership with PagerDuty and Rundeck:  Help others help you Service Ownership with PagerDuty and Rundeck:  Help others help you
Service Ownership with PagerDuty and Rundeck: Help others help you
 
Cutomize sap webinar
Cutomize sap webinarCutomize sap webinar
Cutomize sap webinar
 
React&Redux : The Amdocs Way (Sneak Peak)
React&Redux : The Amdocs Way (Sneak Peak)React&Redux : The Amdocs Way (Sneak Peak)
React&Redux : The Amdocs Way (Sneak Peak)
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
 
Real-time Manufacturing Management for a Hybrid Process
Real-time Manufacturing Management for a Hybrid ProcessReal-time Manufacturing Management for a Hybrid Process
Real-time Manufacturing Management for a Hybrid Process
 
ADF Performance Monitor
ADF Performance MonitorADF Performance Monitor
ADF Performance Monitor
 
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
 
Oracle EBS R12.2 - The Upgrade Know-How Factory
Oracle EBS R12.2 - The Upgrade Know-How FactoryOracle EBS R12.2 - The Upgrade Know-How Factory
Oracle EBS R12.2 - The Upgrade Know-How Factory
 
PHD Virtual Automating Disaster Recovery Testing to Ensure Application Recovery
PHD Virtual Automating Disaster Recovery Testing to Ensure Application RecoveryPHD Virtual Automating Disaster Recovery Testing to Ensure Application Recovery
PHD Virtual Automating Disaster Recovery Testing to Ensure Application Recovery
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
 
Citrix Troubleshooting 101
Citrix Troubleshooting 101Citrix Troubleshooting 101
Citrix Troubleshooting 101
 
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-Native
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-NativeApp Modernization with .NET Core: How Travelers Insurance is Going Cloud-Native
App Modernization with .NET Core: How Travelers Insurance is Going Cloud-Native
 

Más de Getting value from IoT, Integration and Data Analytics

Más de Getting value from IoT, Integration and Data Analytics (20)

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
R introduction decision_trees
 
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
IoT and the Future of work
 
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
 
Omc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van SoestOmc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van Soest
 

Último

UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Último (20)

UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g

  • 1. Effective Fault Handling in Oracle SOA Suite 11g Ronald van Luttikhuizen [Vennster] Guido Schmutz [Trivadis] 1-Oct-2012 | Oracle OpenWorld & JavaOne 1|x
  • 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. 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. 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 4|x
  • 5. 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 5|x
  • 6. 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
  • 7. 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 7|x
  • 8. 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
  • 9. 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
  • 10. 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 127.0.0.1 on port 8001</faultstring> </soap:Fault> </soap:Body> 10 | x
  • 11. 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 11 | x
  • 12. Fault Handling SOA vs. traditional systems External BPM User Multiple service consumers Interface Services part of larger unit Heterogeneous & external components Long running processes ESB Asynchronous Timed events Often enterprise-wide Implemen- Implemen- Implemen- tation tation tation Transactions 12 | x
  • 13. 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 13 | x
  • 14. Old System with limited scalability Short Network interruptions No 7*24 avail. for single instance of credit card service Response sometimes get Fault if product is lost no longer available Not always available 14 | x
  • 15. Patterns for Fault Tolerant Software Compensation Exception shielding (Limit) retry Share the load Alternative Exception handler Heartbeat Throttling 15 | x
  • 16. 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 16 | x
  • 17. 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 17 | x
  • 18. 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 18 | x
  • 20. Product Management Result 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 20 | x
  • 21. 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 Proxy Business 1 Product DB Service Service 2 3 Result Cache OSB 21 | x
  • 22. Product Management Service Throttling Restrict the number of messages on the message flow to a Business Service Message Buffer Proxy Business Product Service Service DB OSB ● Set from Operational Settings on the OSB console 22 | x
  • 23. Credit Card Booking Retry 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 23 | x
  • 24. Credit Card Booking Retry Configuration Configured on the business service in OSB 1 Proxy Business after 2s Credit Card Service Service Service 2 OSB 5x 24 | x
  • 25. Credit Card Booking Service 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 25 | x
  • 26. Credit Card Booking Service Pooling Credit Card Service instance 1 Proxy Business Credit Card Service instance 2 Service Service OSB Credit Card Service instance 3 26 | x
  • 27. Order Management Transaction configuration Transaction of OSB Service Consumer Transaction of OSB Service Consumer 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 27 | x
  • 28. Transactions in OSB Explanation and Demo of Transactions in OSB 28 | x
  • 29. Order Management (II) Fault Message on Callback Contract 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 29 | x
  • 30. Order Management (II) Fault Message on Callback “Business Fault” modeled as another operation on the Callback WSDL 30 | x
  • 31. Order History Fault 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 31 | x
  • 32. 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> 32 | x
  • 33. Order Handling Process Return errors as synchronous response Problem ● Both Product Management and Credit Card Booking can Fault Handling return Business Faults Fault Handling Solution Reply with Fault ● Handle errors and map them to errors returned to the service consumer (i.e. the caller of the process) 33 | x
  • 34. Order Handling Process Return errors as synchronous response Handle Business Faults in BPEL error handler and reply with an error 34 | x
  • 35. 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 Pick 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 35 | x
  • 36. Order Handling Process (II) Handle missing callback with timeout Pick Activity for handling callback message with timeout branch c 36 | x
  • 37. 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 compensation Handle Business ● Use the BPEL compensate activity together with Fault and Compensate compensation handler to undo the Booking of the Credit Card 37 | x
  • 38. 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 38 | x
  • 39. Order Handling Process (IV) Non-idempotent operations Problem ● Credit Card Booking is a non-idempotent operation Solution Non-Idempotent ● 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 39 | x
  • 40. Order Handling Process (V) Generic Error Handler w. Fault Policy Framework Problem ● Unexpected (technical) fault Unexpected (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 40 | x
  • 41. 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> 41 | x
  • 42. Order Handling Process (V) Generic Error Handler w. Fault Policy Framework Explanation of generic fault handler 42 | x
  • 43. 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 43 | x
  • 44. Summary Issue Solution Product Overloading product management system ThrottlingResult cache OSB Credit Card Service does not guarantee 7*24 uptime due to e.g. Muliple endpoints OSB network problems Service pooling Guarantee message delivery to order management system Availability of queues OSB (and SOA Suite for XA Enqueue and dequeue in service consumer propagation to OSB) transaction Returning business fault over async MEP from order management Separate operation and fault message OSB and SOA Suite (callback system 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 OSB and SOA Suite (correct consumer 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 Fault policy frameworks, error queue, generic SOA Suite processes solving it in their own way using process logic. error handler, SOA Suite APIs & composite sensors. 44 | x
  • 45. 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 45 | x