Thursday, October 23, 2008

SOA Overview

Service-oriented architecture (SOA) Definition : A service-oriented architecture can be defined as a group of services, which communicate with each other.
The process of communication involves either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed.
SOAs build applications out of software services. Services are intrinsically unassociated units of functionality, which have no calls to each other embedded in them. They typically implement functionalities most humans would recognize as a service, such as filling out an online application for an account, viewing an online bank statement, or placing an online booking or airline ticket order. Instead of services embedding calls to each other in their source code, protocols are defined which describe how one or more services can talk to each other. This architecture then relies on a business process expert to link and sequence services, in a process known as orchestration, to meet a new or existing business system requirement.

XML has been used extensively in SOA to create data which is wrapped in a nearly exhaustive description container. Analogously, the services themselves are typically described by WSDL, and communications protocols by SOAP. Whether these description languages are the best possible for the job, and whether they will remain the favorites in the future, is an open question. What is certain is that SOA is utterly dependent on data and services that are described using some implementation of metadata which meets the following two criteria: the metadata must be in a form which software systems can use to configure themselves dynamically by discovery and incorporation of defined services, and also to maintain coherence and integrity. The metadata must also be in a form which system designers can understand and manage at a reasonable cost and effort.
SOA services are loosely coupled, in contrast to the functions a linker binds together to form an executable, a dynamically linked library, or an assembly. SOA services also run in "safe" wrappers such as Java or .NET, and other programming languages that manage memory allocation and reclamation, allow ad hoc and late binding, and provide some degree of indeterminate data typing.
SOA is an architecture that relies on service-orientation as its fundamental design principle.In a SOA environment, independent services can be accessed without knowledge of their underlying platform implementation.
SOA relies on services exposing their functionality via interfaces which other applications and services read to understand how the service can be utilized.

PIP your AIA

AIA stands for Application Integration Architecture. Architecture (http://dictionary.reference.com/browse/Architecture) is a fundamental underlying design of computer hardware, software, or both. In other words, it is an integrated set of tools and concepts which helps you build new solutions. All major software vendors have their own AIA delivered via the Application Servers, JBoss from RedHat, WebSphere from IBM, Oracle 10g AS from Oracle, WebLogic from BEA, NetWeaver from SAP, WebMethods. If you look into each of the AIA from each of the vendor, you will not see much difference in terms of delivered functionality. Each architecture includes an HTTP Server, a servlet container, an Enterprise Service Bus, a BPEL Engine, etc.

What does differentiate one AIA from another? PIPs, the Process Integration Pack.

PIPs are pre-built solutions for specific tasks. For example, if your company is implementing Oracle Siebel CRM and Oracle eBusiness Suite Order Management, you go with Oracle AIA and use Siebel CRM Integration Pack for Oracle Order Management. Surely, both WebSphere and WebLogic have Oracle eBS and Siebel adapters, and one can build a custom integration solution with AIA from IBM or BEA. However, only Oracle AIA with the PIP gives you the initial boost. When you implement SAP and integrate it with Siebel, your best solution would be the SAP NetWeaver for the very same reason. You use AIA from 'independent' vendors like IBM, BEA or RedHat when you need to integrate multiple applications with and there are no PIPs available. For example, if you are integrating Oracle eBusiness Suite Financials with Lawson Financials, your best choice would be WebSphere because there are already adapters for both of the applications available with no PIP to boost your integration.
Resume: before committing to an AIA from a vendor, investigate what PIPs are available for the integration which you need to build. It may be better to change the AIA in order to unitlize existing PIPs.