|
What is a Service?
A Service is an implementation of a well-defined business
functionality that operates independent of the state of any
other Service defined within the system. Services have a well-
defined set of interfaces and operate through a pre-defined
contract between the client of the Service and the Service
itself.
A Service can be of various nature. A Business service may mean
“getAccountBalance”. A business Transaction Service
may mean something like “makeCreditCardPayment”. A
system Service may offer some operations like
“deleteAFile”.
In Service Oriented Architecture, the system operates as a
collection of services. Each Service may interact with various
other Services to accomplish a certain
task. The operation of one Service might be a combination of
several low level functions. In that case, these low level
functions are NOT considered Services.
How to Identify Services
Technically, you can make any piece of functionality as a
Service, but doing so will make the organizational IT systems
cluttered and complicated to maintain. The advantage is in keeping
the Services as a set of well-organized functionalities.
Services must represent a tangible Business concept. For
example, getAccountBalance() is a tangible business process but
convertStringToNumber() is not an identifiable business concept
and therefore is not a candidate for a Service.
The process of identifying potential Services is by no means an
easy task. At this stage, I have seen many organizations get
carried away by the available technologies forgetting that the
technology should not drive the Business. Although, identifying
Services is a series of organization-wide analysis, certain
analysis patterns can be applied to find out the potential
services. Here are some things to consider when deciding.
- Analyse a certain part of the organizational business
process and decompose them into several smaller business
process. For example, Order Processing System of an organization
can be decomposed into smaller business processes such as
checkInventory(), processPayment(), updateInventory() etc.
- Identify if any of the smaller business processes are re-
used or can potentially be reused in other organizational
business process. For example, checkInventory() can also be used
by the Stock Management application within the organization. The
reusable business processes are strong candidates for operating
as Services.
- Draft the required inputs to these business processes and
define what the specific outputs they must produce. Attention
must be paid to keep these inputs and outputs generic so that
the Service remains reusable and are capable of providing
Service to changing business models. For example,
processPayment() service at present might only accept check
payment but should be flexible enough to support Card payment in
order to support changing business needs. Hence, the input to
the processPayment() Service must be defined in a generic
fashion. We will discuss more about Service Specification
in part 2 of this article.
- Identify, if these Business processes are already
implemented as an IT system within the organization. If yes,
then analyse the Business critical factor for all the existing
applications to identify which ones need to be converted to SOA.
For example, if a clothes retailer no longer accepts
refund/exchange of goods, we do not need to consider to look
into Refund/Exchange application.
- Identify, what Services operate together, what are the
dependencies between various Services.
- Find out, if the Services will be used only internally or
will be opened to external consumers also. This will have impact
on the definition of the Services.
- Identify, whether the Services operate in a synchronous or
asynchronous manner. What is the permissible response time for
the Services?
These are guidelines from my experience in working in the
industry with quite a few organizations, where we successfully
provided SOA based solutions. By no means is this list complete
and I do not believe that there can ever be a complete set of
formulas for identifying the correct set and subset of Services
to be implemented. It is always an ongoing process as new
requirements keep on coming in. But the gist of the story is
that one needs great attention to identify the sets of Services
that are to be deployed within the organization.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|