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.”

Tuesday, July 31, 2012

NAT (Network Address Translation) Router, How does it work?


NAT (Network Address Translation) is a process by which private network devices can reach out to the devices on the Internet and receive responses. In a normal or usual scenario every household has a public address and this address is used by multiple devices internally (private devices). Without NAT, there would have been only one internal or private device accessing the Internet. Also NAT is required as it works as a gate way between the private network (for example network 192.169.x.x) and the public network (for example 203.246.x.x). By default and in real world the private devices are not accessible to the public network directly. They have to be accessed through the NAT router.

The process of making a private device available or able to access the internet is as follows:
1.      Local machine attempts to access www.google.com (74.125.229.34)
2.      NAT router creates a new entry in the lookup table associated with the local machine’s private network address and the internal source port.
3.      NAT router rewrites the machine’s IP address to that of the NAT’s public IP and open up a new source port and rewrites the original port number with the new one.
4.      The new combination of public IP and new source port number are recorded alongside the private source IP and original port number in the lookup table.
5.      The NAT router also adjusts the checksums so that it would reflect the changes that were made.
6.      The packet is forwarded to www.google.com (74.125.229.34)

When the response is received, the NAT router checks its lookup table for any entries whose public source port corresponds to the destination port of the inbound packet and whose destination IP corresponds to the source IP of the inbound packet. Once this is determined, the NAT router rewrites the IP header of the inbound packet according to the lookup table and forwards it to the correct private machine.

This process continues and runs successfully in the same manner, no matter how many devices are in the private network.