So it is very easy to implement a happy flow. However handling errors, rolling back transactions and recovering from errors and failures can be quite challenging. It is not possible to find all the possibilities during development or design. Some errors or failures will only occur when very rare circumstances come into play together. Then all the parts of the application either will handle the error and will ensure that no data is lost and the application survives or not. In the last case people lose data, applications crash and managers get upset.
A very good read on this topic is the book Release It!.
Most of the time I write services in either Oracle Service Bus or Oracle SOA Suite. I can mock expected error behaviour, however sometimes having errors when you don’t expect them can give you new insite into the stability and resilience of the application.
To create (unexpected) errors a Managed Server can be stopped, data sources can be removed or entire virtual machine’s can be deleted. However these Managed Servers are quite heavy and when I ask somebody if I can break something during a test I am usually asked to get a cup of coffee ;)
So I wanted a different method (unfortunately not implemeted at a customer) so I created an Oracle Web Service Manager (OWSM) policy. I was inspired by the Chaos Monkey application made by Netflix. The Chaos Monkey application creates havoc. The OWSM policy should also create problems, but in a very modest way. It generates an error on a random basis.
The OWSM framework is not really meant for this kind of policies, but it is a start! The sources can be found on my GitHub repository.
The policy is build using JDeveloper. I build it using JDeveloper 184.108.40.206, but I think it can be back ported to 12.1.3. There are two deployment profiles: Read the complete article here.
For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.