So, what is SOA?

January 4th, 2009

I read so many articles about SOA and they all seem to have slightly different takes on this term. And, there are a few more related acronyms/buzzwords thrown in to the mix to confuse the audience. Sadly, some of this is due to the vendors pushing their own products using certain acronyms.

So, I decided to add to that confusion by using the basic concepts to describe SOA, as I understand it :)

SOA is a style of designing whole or components/sub-systems of Distributed Enterprise Business Systems by utilizing the following principles:

  • Encapsulation/Facade: Encapsulate the complexity of the application behind a clean “interface” that forms the foundation of the functionality exposed by the System/Sub-system/Component.
  • Design-by-contract/Service specification: The “interface” exposed becomes the “functional” contract for the System/Sub-system/Component. This should be documented very well, including the constraints, preconditions, postconditions, etc. This also needs to be precise.
  • Composition of services: It should be possible to compose the services at various levels - System or Sub-system or Components as per the deployment strategy. This allows for the system to be assembled for large-scale or small-scale deployments.

There are other aspects that are determined by how these services are implemented and hosted/deployed (by using various technologies, languages, application server, etc.):

  • Performance
  • Scalability
  • QoS
  • Portability & Interoperability of services

SOA helps integration. There are a lot of higher-level abstractions/languages/specifications/frameworks/products for implementing SOA in Enterprise products/solutions - WebServices, ESB, BPEL, JBI, WCF, etc. But, they all are built upon the above fundamental concepts.

Technorati Tags: , , , , ,

Leave a Reply

TOP