Service Oriented Architecture and Service Orchestration
Service-oriented architecture
(SOA) is a software design principle which allows an application to be exposed
as an independent service that can be accessed and reused by one or more applications.
Two applications interact through an interface which defines the message
exchange pattern and the service contract in order to establish communication successfully
between them. It is a great concept that separates implementation logic from
the data definitions and allows modularity of programs that can be treated as “silos”--which
means they can be developed separately at the same time without any
dependencies. More of it on http://en.wikipedia.org/wiki/Service-oriented_architecture.
Service orchestration is a
concept closely related to SOA which allows services to be arranged and
organized into workflows. It enables independent services to interact and talk
to each other to achieve an automated end-to-end process. It is often compared
to an orchestra in which different musical instruments are being harmonized and
played artistically as a single entity, though each instrument can exist on its
own.
SOA and service orchestration are
two concepts that address many challenges in enterprise systems nowadays.
Companies usually have various applications that have been existing for quite a
time. One application may rely on another application for a particular data or on
another one for user authentication. Instead of creating scripts that perform
query against a database to fetch data, the service consumer can simply call a
service by sending a message specifying the operation and the data filters to a
specific web address. The consumer doesn’t actually have to know where the data
came from whether it was from a database or a lookup file. This also makes
services “technology agnostic.” The service provider can thus change its internal
implementation anytime without impacting the consumer as long as the data
definitions remain intact.
There are many software that
applies SOA and service orchestration principles. Some of them are the TIBCO
ActiveMatrix products such as BusinessWorks and Service Grid, and the Mule ESB
which is quite interesting because it is also something besides SOA enterprise;
it can be used to integrate mobile and cloud applications as well. I might try
it one of these days and write about my learnings.
I have some working knowledge of TIBCO
ActiveMatrix Service Grid and I can say it is more of a service orchestration
software and a great one at that. In a nutshell, it is a tool that enables you
to create a “composite” of web services (or “promoted” web services) that call
other “component” web services (created within the same composite or project) or other “reference”
web services (external to the composite). In quotes are the terms specific to
the tool. Component web services can be implemented as Java, Spring Framework,
Web App, Mediation, or another composite within the project. Mediation is used
as sort of a preprocessor before calling another web service and some of its built-in functions include data transformation, message routing, and logging. The tool can be used
by architects for designing the whole SOA flow and can be passed on to developers for
completion. A great feature of this tool is the use of virtual bindings that
allow you to configure shared resource instances at deployment time. This means
you don’t have to know all the connection-related details in order to build and
deploy the SOA project. This clearly separates the development aspects from
infrastructure.
Comments
Post a Comment