Saturday, March 28, 2009

Services Orchestration Design Principles & Best Practices

In real life SOA implementation services collaborate and executes in a particular fashion to perform a process. Process implementation uses Orchestration and Choreography of services. In this blog entry, I would like to focus on services orchestration.

From my experience on Oracle Fusion, TIBCO, Aqualogic and WebMethods I have collected some Services Orchestration Design Principle & Best Practices. I am listing those, independent of Tools/Platforms:

1. Keep Orchestration depth to manageable limit. (Refer: http://architecture-soa-bpm-eai.blogspot.com/2009/01/composite-services-complexity-measure.html)
2. Keep service dependency in manageable limit (Refer: http://architecture-soa-bpm-eai.blogspot.com/2009/01/inter-service-dependency-model.html)
3. Keep granularity of services under predefined criteria. Visit this criterion regularly.
4. Avoid recursive service calls.
5. Classify services as technical and business
6. Avoid complex and huge service contracts
7. Handle anticipated Faults and Exceptions
8. Keep Fault handling and Exception logic out of main process flow
9. Develop compensatory processes
10. Pay attention to Quality of Service (QoS) of services involved in Orchestration
11. Pay governance policies to services involved in Orchestration
12. Remember Separation of concerns
13. Validate messages flowing in a process – in process, and in out of the process
14. Pay heed to vendor specific best practices and design principles
15. Last but not least: Test, test, test, …

No comments:

Post a Comment