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

Popular posts from this blog

XML Schema and JSON Schema Validation in Mule 4

Parsing a JSON String and Converting it to XML in TIBCO

Using XML To Java in TIBCO BW