Wednesday, 22 October 2008

What is SOA - Service Characteristics - Composable

Composability is the ability of services to be used in orchestration scenarios by higher level services or processes. It is a special case of the reusability characteristic in that the services need to be uniform as well as reusable. The reason for this primary reason for this requirement is that the orchestrating service will in all probability but built using something like BPEL not a conventional programming language, so any variations in service style become more difficult to deal with.

This uniformity includes things like:

Interface granularity

I hate the phrase “coarse grained” because its almost meaningless in any practical sense, however services do need offer a uniform level of granularity in order to be composable.

Error Handling

Service consumers need to be able to differentiate between unexpected “system” exceptions, and recoverable “business exceptions” which may be retried under different conditions or by supplying different data. In the case of system exceptions the consumer won't know for sure if the service operation completed or not, since for example the network connection might have died after the service completed its transaction. For this reason its desirable that services be idempotent, I.e. retriable. Where services are not idempotent, compensating (undo) operations should be offered.


Composable services should ideally offer a uniform security model to consumers, including single sign on abilities, channel or payload encryption.

Whilst it is possible to design such uniformity into your services, the reality is that in a typical enterprise landscape the underlying service platforms and functional interfaces will be quite varied. This is where Enterprise Service Buses come in, providing features such as multi channel adapters, single sign-on, security adapters, routing and message transformation.

You may also like:

Service Characteristics - Contract
Service Characteristics - Abstract
Service Characteristics - Composable
Service Characteristics - Autonomous
Service Characteristics - Discoverable
Service Characteristics - Distributed
Service Characteristics - Reusable