SOA has been a buzzword in enterprise computing for a while. Cloud computing is relatively new one but gaining stronger momentum than SOA. With these two terms, many people get a little confused: is cloud computing just a new name for SOA? And can they play together?
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
Before drawing a conclusion, let’s take a look at the definitions from wikipedia.org:
Service Oriented Architecture (SOA): is a flexible set of design principles used during the phases of systems development and integration. A deployed SOA-based architecture will provide a loosely-integrated suite of services that can be used within multiple business domains.
Cloud Computing: is Internet-based computing, whereby shared resources, software and information are provided to computers and other devices on-demand, like a public utility.
As we’ve read in various articles and books, SOA is mainly for enterprise; the cloud computing is, as its definition points out, Internet based services. In my previous blog, I mentioned cloud as architecture pattern (CAA), which can be leveraged in enterprises as well. If we compare the SOA and CAA, they look somewhat similar and share some core principles:
- Emphasize service concept
By definition, a service is performance of work by one for another. Both CAA and SOA delegate works to other parts of the system, either by the service provider or other business components. With the delegation, people can use the services without worrying the implementation details and scalability. Also the services can be shared by multiple applications/users for the best use of services.
- Promote loose coupling
They demand minimum coupling among different parts of the system. As a result, any change on one part of the system has limited impact on the overall system.
SOA and CAA differ significantly in these areas:
- Horizontal vs. vertical services
The services in SOA are mainly focusing on business. Each service may represent one aspect of the business. Combined together, these services consist of a business application or solution. In this sense, the services are horizontal.
The services in CAA are mainly layered according to typical software stacks. The lower services support the upper to deliver applications. Therefore, I call them vertical services.
- Application vs. infrastructure
SOA is for application architecture. The dividing of different components is based on their roles in the SOA applications. More often than not, you start with a business problem and then abstract out the services. These services can be re-used by other applications in the future.
Cloud Computing is for IT delivery. The dividing of different services is based on their roles in software stack, therefore mostly well defined. You don’t need a problem before defining the cloud services. The services can be easily re-used by all applications.
SOA and cloud computing share many common principles, but also differs significantly in their role in IT architecture. SOA is mainly an application architecture with horizontal services; while cloud computing is an IT architecture with vertical services.
Given the differences, SOA and cloud computing complement each other very well. I will talk about how to leverage SOA in cloud computing for enterprises in future blogs. Stay tuned.