Ok, first thing first. SOA = S.O.A. = Service oriented architecture.
- What is SOA?
Service oriented architecture is the idea of how loosely coupled software components communicate with one another to get a job done.
Although this idea can be applied in a variety of ways and at a variety of levels, typically people mean things like “a web application that uses REST or SOAP” or “a news aggregator collecting data through RSS (xml)”.
The common factor with SOA is the use of standardized communication protocols.
- Why use SOA?
If SOA is essentially just the use of a standardized communication protocol then each service in the system can change as long as it continues to communicate in the same way without disrupting the entire system. That is each specific piece of software can be switched for a different one and the overall system will continue to function in the same way.
Example: A software system uses 3 components to get a job done. Each of these 3 components communicate with one another using a common standardized communication protocol.
It is determined that one of the components from vendor X is not as efficient as a competing product vendor Y. It is decided to replace the components from vendor X with the product from vendor Y.
The component can be replaced without changing either of the other original 2 components since the new component communicates in the same way as the old less efficient one did.
In this idealized case we can see the use of a standardized communication protocol and loosely coupled components allow us to mix and match components to improve the overall system.
With a more traditional non SOA this sort of change would have been much more difficult to accomplish.