Service Oriented Architecture

Service Oriented Architecture or SOA is a way to design a software application, in which we divide each logical unit/ component of the system as self sufficient service. The idea is not very new and has its roots in distributed computing. But the concept of SOA has gained more popularity recently due to the fact that IT is going very fast changes now as compared to past. Technology that is hot today might become obsolete in an year. SOA guarantees insurance against such a change. How? Let’s start with a very small example, a one page form submission for online registration to say a college

Let’s say I choose JSP or Servlets to implement this simple solution. When user hits the link, JSP code gets executed and serves HTML form page to user. On submit of request, another or same JSP file gets called which processes the form. Let’s say now I want to change my frontend experience, and say want to use cool flash, or html 5 or some JavaScript framework for better user experience. Its a bit change as my UI is tightly coupled with backend. Same problem will occur if I want to change my server side language, and want to use dot Net or PHP instead of Java.

SOA comes to help in this scenario. Let’s if I have used a plain HTML/ Javascript frontend and created a Java Webservice at backend (receiving and sending say XML request and response), both the areas are now loosely coupled and are independent of each other. I could simply take out HTML and replace with flash UI or something new that came up recently, without even notifying the server side code, which will keep on serving XMLs. Similarly I could take out Java Webservice and replace with dot Net or something else without caring about front end as long as it parses similar request and sends back response.

The above example might not explain the exact usage of SOA but it gives some picture. We can extend the above example, by thing of a complex system say a banking system, which has multiple components like retail banking, corporate banking, account management, loan management, customer relation management etc. If all these are created in tightly coupled fashion, it will be very difficult to manage and maintain a system, forget about upgrade. Whereas if the system is implemented in SOA manner, with small manageable services components, it is much more easier to maintain and upgrade.

http://en.wikipedia.org/wiki/Service-oriented_architecture

http://en.wikipedia.org/wiki/Distributed_system