Modelling a SOA
In my current project, communication between the front-end and back-end systems is based on web services (SOAP over HTTP). However, due to the way in which these web services have been modelled, they can hardly be employed in a SOA, as each web service is responsible for one use case, which is way too product/application specific (i.e. too coarse-grained). Consequently, the whole concept of using web services as a means of communication is rendered useless.
On the other hand, web services that hardly do anything useful (i.e. too fine-grained) are unlikely to be useful in an SOA either. Apparently the granularity of a web service is key to the likelihood of the web service to be employed in a SOA.
The granularity of a web service is determined when it is modelled. In order to obtain and model proper generic services, the following prerequisites have to be taken into consideration:
- It is essential that thinking in generic components is propagated to all layers of your organization, not just to the layers involved with the technology itself. The biggest profit to be made is a turn-over of your organization from a product/silo-oriented way of thinking to a function/service-oriented way.
- Translate the high-level concepts that have been formulated this way to the implementation.
- Keep thinking in generic terms during this translation. Example: you may implement the sending of a letter with attached bill as one service, but this service becomes unusable as soon as one wants to support electronic payments.
- Look for generic functions on a inter-project basis, as opposed to an intra-project basis.
Of course, this is precisely the difficulty of a successful SOA: per definition the modelling, implementation, deployment and maintenance are cross-project concerns in a SOA, and therefor many project managers may be tempted to shift these responsibilities to other departments. Only if all people in an organization are willing to start thinking cooperatively, a SOA can be successful.
12:04AM May 31, 2007
by Zeger Hendrikse in Java & J2EE |