Tuesday, September 11, 2012

Is Service Oriented Architecture (SOA) really new? Or it is just "Old wine in new skin" ?

In this post I am going to compare Service Oriented Architecture to the following:
  1. Object Oriented Programming (OOP)
  2. Enterprise-resource planning (ERP)
  3. Software Development Life Cycle (SDLC) also known as Traditional Waterfall Model
  4. Agile  Development

1. Object-oriented programming:
            Object-oriented programming (OOP) is a theory that revolutionized the programming world. It is a method of programming that allows classes and objects to be created in any manner and yet be called from any point during the execution of the main program. In a similar manner, SOA believes that there can be distributed systems and yet they can function together.
           
            OOP enhances portability as well scalability by the use of OOP technique. SOA is exactly the same in the scalability and portability perspective. The only difference is that OOP deals with objects and classes whereas SOA deals with services and system in a distributed environment.

            Even though both seem to be very similar, it is to be noted that one is programming language concept and another is a system development concept. Hence, I believe SOA is a new concept for software / system development.

2. Enterprise-resource planning (ERP):
            SOA is different from ERP since ERP believes in one central service / system which will act as a controller when it comes to data communication. In SOA, it is a more open system than ERP since it allows services to communicate with each other in the manner they want. There is no limitation or restrictions on how services should communicate with each other.

            On an overall perspective, even though ERP and SOA seem to be preaching the use of distributed systems. SOA seems to be more scalable and more direct as compared to ERP. SOA supports direct communication between services whereas ERP needs communication to take place through a central controller. I believe SOA is a new revolutionary theory as compared to ERP. 

3. SDLC (traditional waterfall method):
            SDLC is a strict method of software development method that is very rigid. One must follow each and every step while using this method. When compared to SOA, SOA is not as rigid and does not have rigid rules that one must follow. SOA is strict in the manner in which communication should occur between services and clients but there are no rules that demand any particular method of development.

            In contrast to SDLC in which each component is dependent upon its predecessors which limits scalability, in SOA, the theory is that services should be individually developed and should be scalable independently. Another feature of SOA that embraces scalability is the versioning which allows multiple version of the service to exist and work with individual services or systems as required.

            In my opinion SOA is contrast as compared to SDLC; SOA is a new technology as compared to SDLC.

4. Agile development:
            Agile development is a new software development technique that is similar to SOA. It is similar to SOA because it embraces scalability and embraces the concept of OOP. Agile Software development allows creation of classes and functions that can be used independently and yet can be used together if needed. This theory is very similar to what SOA preaches, the only difference being that SOA deals with services whereas Agile Software development deals with objects and classes. There is a very minute limitation in SOA; it is that there might be some minor dependencies among services.
           
Overall, I believe SOA is not at all a new technology as compared to Agile Software development. It does not seem to very different hence it feels like “Old wine in a new skin.”