The principle of Service Oriented Architecture known as Service Composability can be broken up into two basic principles: Service Discoverability and Service Composition. When it comes to the realm of Service Design, a lot of attention is paid to the enabling of those characteristics that are so commonly associated with Service Oriented Architecture marketing – reuse and loose coupling.
While these two aspects are undoubtedly vital, indeed critical to the attainment of long term Service Oriented Architecture transition projects, there is a lot more that should be taken into consideration. Though abstraction can be utilized to support the realization of loosely coupled, reusable services, we have to confront the fact that even the services that are most reusable will not be useful if they cannot be found by those who are responsible for the creation of potential clients.
Moreover, even loosely coupled services will not have a great deal of reuse potential if they are not able to be assembled into compositions in an effective fashion. Thus, it is vital to take into consideration the principles of Service Composition and service discoverability. We will focus on the latter first.
Service Discoverability is meant to help one avoid the accidental creation of services that are either redundant or implement logic that is redundant. Owing to the fact that each particular service operation is meant to provide a potentially reusable piece of automation logic, metadata that comes attached to a service must describe not only the service’s overall purpose in an efficient manner, but also the functionality that its individual operations offer.
This particular principle of Service Orientation is similar to Discoverability on the level of architecture, in which case the term “Service Discoverability” is meant to refer to the technology architecture’s ability to provide a mechanism of discovery, for example a service directory or registry. Such extensions effectively become part of the overall infrastructure that is meant to support the implementation of a Service Oriented Architecture.
On the level of service, the discoverability principle can be referred to the design of an individual service so that it becomes as discoverable as possible – no matter whether the discoverability extension or product actually exists in the surrounding implementation environment.
The reason behind this is that even if there is no need for a service registry owing to the fact that there is not enough of a service inventory to warrant the need for one, services should consistently be designed as resources that are highly discoverable in some fashion. By doing so, the evolutionary governance off those services can be better managed when the service portfolio increases in size, as each service will then be equipped with the metadata that is required to properly communicate its capabilities and meaning.
As service portfolios increase in size, Service Compositions will become an increasingly vital design aspect – not to mention a vital one – in the building of service oriented solutions. The primary reason why this principle is of such importance is because it makes sure that services can be designed in such a fashion so as to participate as effective controllers or members of the compositions.
For a service to be composable, an emphasis must also be placed on the design of Service Operations. Composability can be viewed as another form of reuse. Thus, operations should always be designed in a standardized fashion – with the right level of granularity – in order to maximize opportunities for composition.
A common Service Oriented Architecture extension that underlines composability’s relevance is known as orchestration. With orchestration, service oriented Business processes are able to be expressed through composition languages like WS BPEL. This essentially classifies the process as a service composition that is represented by a parent process service. Either way, a service has to be very composable, no matter whether or not immediate composition requirements are already in existence.
In Service Oriented Architecture, each of the principles is related to all the others in some way. Service Composability, for instance, is a principle that is influenced by the extent to which many other principles are applied in a collective fashion.
Discoverability is also connected to effective composition. One of the primary rules of service abstraction is that services must be representative of a range of logic from other types of supported sources – that includes other services. When services encapsulate others, then a composition has occurred.
In order to construct an effective composition, the designer of the service will have to find a means of discovering the most suitable services in order to act as members of the composition.
Moreover, once the composition has been finished and deployed, potential clients of the service that represents the composition will greatly benefit from an awareness of its capabilities and its existence, as well as its purpose.
Discovery supports and enables all of these scenarios – by doing so, it effectively furthers the cause of service orientation and Service Oriented Architecture.