When candidate
services have been selected and documented in the Candidate
Services Portfolio, you then need to determine which ones will be exposed
as services. Although, in theory, any candidate service could be exposed by
exporting its interface as a service description, not every candidate service
should be. It might not be economically and practically feasible to do
so (nonfunctional requirements might be compromised). In particular, the naive
decision to expose "all methods from all classes" will result in an overwhelming
and often unmanageable number of services, leading to the "Service Proliferation
Syndrome." This creates huge performance and service management problems, not
to mention the fact that you might be giving away the company's intellectual
capital. Moreover, you must remember that there is a cost associated with
every service that you choose to expose. The funding, governance, and the
underlying infrastructure (security, performance, management) of the service
and the components that will implement them must be taken into account.
Clearly, some criteria are needed to help decide whether to expose a service.
Most importantly, you need to decide whether to fund the creation of the service
component that will provide the functionality of the service, as well as the
maintenance, monitoring, security, performance, and other service level agreements
for the service.
Value of Service Litmus Tests
Project experiences indicate a set of criteria in the form of the Service
Litmus Test can and needs to be used to filter the collections of candidate
services. This metaphor is used to denote a set of tests that, when applied,
will determine whether a given service is eligible for exposure by using
a service description. These tests are employed together and help answer questions
such as these:
- From the list of candidate services, which ones are best to expose?
- Thus, which ones will we fund?
- Which ones have business value?
Example: Service Litmus Test Criteria lists criteria that are commonly used
during litmus testing.
At the one extreme, every business use case might be considered to be a candidate
service. At the other, only a few services are selected for exposure. Applying
the Service Litmus Test usually gives something in the middle: a manageable
set of services that the business wants to expose and that can later be used
within compositions.
Candidate services that pass all of the Service Litmus Tests should then be
exposed as services in the service-oriented architecture (SOA). There might
be candidate services that did not pass the Service Litmus Test yet are still
implemented as services. The Service Litmus Test is an aid to determine
which services to expose. If a business chooses to expose candidate services
that did not pass the Service Litmus Test, the implication is that benefits
associated with an SOA will not be maximized.
Candidate services that do not meet the Service Litmus Test criteria will
have to be implemented in some fashion, because they still are required to fulfill
business needs. They might be implemented as methods on service components and
will not require the generation of WSDL (Web Services Description Language)
or other forms of service definitions; or they might be used as non-exposable
entities. |