What is SOA?
SOA stands for Service Oriented Architecture. It is the current generation of distributed application architectures. We can look at the evolution of SOA by contrasting it with past generations of distributed application architectures -
- Terminal-Server where data and business logic were on the same server. Most of the technologies of this era were mainframe [server] centric such as CICS.
- Client-Server where data and some business logic was on the server and other logic was on the client along with a user interface [generally a GUI]. Most of the technologies of this era were PC centric such as Windows. This also was the era when COM, DCOM & other RPC protocols started becoming prevalent for clients to talk to servers. This also saw the evolution of server centric ERPs for specific verticals from SAP, etc.
- Multi-tier or n-tier where data was on a database server cluster, business logic was on an application server cluster and a web server farm rendered web pages onto client browsers. The technologies of this era included MTS [now COM+] for application servers, ASP & IIS for the web servers & Internet Explorer for the client. This was also the generation of EAI [enterprise application integration], messaging workflows & a demand for e-commerce applications as part of the dot com boom, where several application servers for specific areas became popular such as Commerce Server for e-commerce or b2c applications & Biztalk server for b2b, EAI & messaging workflow applications.
- Pre-SOA - Which brings us to the current generation. The problem with all previous generations is that applications built with technologies from each of the previous generations can still be found within any single enterprise as there is no reason to discard perfectly functional and useful applications that have matured and run competently over the years. Also each of the previous generations did provide valuable architectures that are not obsoleted or overridden by each successive generation. The robustness of a CICS application or the uniformity of an ERP or the convenience of a Biztalk based EAI hub cannot be discounted by any enterprise that has invested in any of these technologies to date.
- SOA - Hence SOA is not a disruptive innovation. It's benefits are 2-fold -
- For application developers, it provides for a uniform & standard mechanism to expose or reuse the business logic in a system from within an enterprise or on the web irrespective of the technology it was originally built on.
- For an Enterprise, SOA allows for all business logic in heterogeneous legacy systems to be exposed using interfaces [WSDL] constrained by well-known message types [XSDs or WCF Contracts] in a standard fashion [WS* specs] that can be accessed in a uniform manner [SOAP] from within and outside of the Enterprise.