Composition Autonomy
How
can compositions be implemented to minimize loss of autonomy?
|
Problem
Composition controller
services naturally lose autonomy when delegating processing tasks to composed
services, some of which may be shared across multiple compositions.
|
|
Solution
All composition members can
be isolated to maximize the autonomy of the composition as a whole.
|
|
Application
The agnostic member
services of a composition are redundantly implemented in an isolated
environment.
|
Impacts
Increasing autonomy on a
composition level results in increased infrastructure costs and operational
expenses.
|
|
Principles
Service Autonomy,
Service Reusability,
Service Composability
|
Architecture
Composition
|
Table 6.4 – Profile summary for
the Composition Autonomy pattern.
Problem
Services are ideally individually autonomous so that they
can provide a high degree of behavioral predictability when repeatedly reused.
This allows a single, agnostic service to be shared across multiple
compositions in support of automating multiple business processes.
However, a natural result of any distributed service
composition is a loss of autonomy by any service composing another simply due
to the fact that the service is required to invoke solution logic that resides
outside of its controlled execution environment.
When individual services provide a high level of autonomy,
the collective autonomy of the composition is correspondingly elevated and this
is generally adequate for most service compositions. But when one or more
composition members have a poor level of autonomy or when the quality of
service requirements of the composition as a whole demand a higher degree of
robustness and reliability, then a distributed composition may be insufficient.

Figure 6.18 – In a highly distributed
environment, a service compositionŐs overall autonomy will be collectively
determined by the autonomy of its individual composition members. When services
are designed in accordance with the Service Autonomy design principle, this
collective autonomy will generally be sufficient. However, there are times when
a higher degree of composition autonomy is required. As shown in this figure,
Service D offers the lowest level of autonomy because its logic is accessed by
external programs.
Solution
The members of the composition are deployed within an
isolated environment so as to give the composition as a whole a high level of
autonomy.

Figure 6.19 – By grouping the
member services of a composition into a separate deployment environment, the
collective autonomy is maximized because the implementation is dedicated to the
compositionŐs business task and none of the services are otherwise shared.
Services C and D in particular benefit from this new implementation as they are
no longer subject to shared access.
Application
There are many variations of this design pattern that can be
applied, several of which correspond to the typical autonomy levels described
in Chapter 10 of SOA: Principles of Service Design.
To increase the autonomy of a composition the following
steps can be taken:
• Two
or more composition members are deployed on the same physical server to avoid
remote communication.
• The
composition member services are isolated to avoid shared access.
• The
agnostic composition members are redundantly implemented, as per the Redundant
Implementation pattern.
• Composition
members requiring data access are supplied with dedicated or replicated data
stores, as per the Service Data Replication pattern.
Impacts
Because the requirements for increasing the overall autonomy
of a service composition usually involve upgrading or extending the existing
enterprise infrastructure, there are obvious costs and impacts that need to be
taken into consideration.
Redundant implementations of agnostic services further add
governance effort and expense so that these independent implementations are
kept in synch with their shared counterparts.
Relationships
Because of its narrow emphasis on supporting the goals of
the Service Autonomy design principle, this pattern has just a handful of
relationships. Fundamentally, Composition Autonomy is concerned with maximizing
the reliability and availability of services based on the Agnostic Context
pattern in full support of the Capability Recomposition pattern.
Service Data Replication and Redundant Implementation design
patterns help establish an appropriate level of isolation for service
compositions. Often, security reasons will dictate the need to isolate
externally facing services as well as their composition members, which may lead
to the need to apply Composition Autonomy in support of the Inventory Endpoint
pattern.

Figure 6.20 – The Composition
Autonomy pattern is implementation-centric and will generally require the
application of more specialized patterns to realize required levels of
composition isolation.
Case Study Example
Case study content is not available on this Web site.