The cloud is all the rage this year, so not to be left out, I thought I better write something about it. Once you get past the ‘cheaper, faster, better’ hype, one of the common themes is the apparent synergy between the cloud and SOA. Well duh! The cloud is all about making IT resources available as services, and Service Oriented Architecture is all about creating solutions with service building blocks. In this column Let’s start looking at this with some definitions:
"SOA is an architectural approach to developing solutions where a 'service' is the main concept of analysis, design, implementation, deployment, and operations". To get the most benefits from SOA, it is best done at a scope that spans organizational boundaries. Service designs must incorporate both business and information requirements.
On the other hand, “The cloud is a deployment and sourcing model for IT resources, which are provided as services.”
There are three categories of services that are generally recognized when discussing the cloud:
So, SOA is an architectural style where a service is the fundamental concept. SOA depends on the architectural principles of separation of concerns, distribution of responsibility, cohesion, and coupling to break solutions into modular, deployable units of function and information. The cloud depends on these architectural principle of services, where there are three primary types of resources being modularized as services; logic, platforms, and infrastructure. In other words, if done right, the cloud is both an example of SOA, and a perfect platform for SOA.
SOA and the cloud share common fundamentals. The implication for the cloud is that the same service design principles that make a good SOA service need to be applied to a cloud service: well defined interfaces, loose coupling, proper decomposition, common semantics, etc. Unfortunately, just like many SOA designers don't really understand this, many cloud service designers don't either. So buyer beware. Make sure the services you're getting are well designed, implemented, and operated. Now the question is where do these cloud services fit into an overall SOA approach?
A SOA solution should be expected to integrate both cloud based services and on-site services, into the service catalog to support business processes. In addition, it should easily be possible to provision your own service on a cloud infrastructure, or to use cloud based platforms for development. For example, SaaS vendors already provide a full range of SaaS business services. This may well be the predominant model for sourcing business services in a few years. From a development perspective, we could use a PaaS BPM tool to create business processes, or a PaaS Integrated Development Environment (IDE) to create custom services. And from an infrastructure perspective, we could use an IaaS platform to provision any custom services that we create.
So the options are many. But here’s the sticking point…the big IF. “If done right” means that organizations adopting the cloud need to take an ‘architecture first’ approach to what they’re doing. The potential for building newer, faster, in-the-cloud application silos is tremendous, and the challenges of integrating these applications at the business process level are daunting. Then there are the thorny issues of security, management, governance, etc. A particular concern for the combination of SOA and the cloud is the issue of integration. That includes integration at the information semantic level, the functional level, and the operational level. As architects, we must not only understand the relationship of SOA and the cloud, but we must shape it so that it adds value to our enterprise, rather than complexity, cost, redundancy, inconsistency, or risk. What is your SOA cloud strategy?