Service Oriented Architecture and the Cloud
We in IT are lucky that the big new ideas keep coming in, even if it can be hard sometimes to keep up with them. SOA was yesterdays big idea, and now its Cloud. But these ideas are more than one-hit wonders: they need investments in equipment, skills and culture change that take years to provide a good return on your investment. Many enterprises have now invested in SOA, with initiatives planned, in progress or nearing completion.
How will Cloud computing affect those initiatives? Was the SOA investment wasted?
Of course, we all hope that the answer is No, and the conventional wisdom among analysts is that this is the case. Independent analyst David Linthicum, for example, says that SOA is all about the process of defining an IT solution or architecture, while cloud computing is an architectural alternative. Thus, SOA cant be replaced by cloud computing. In fact, most cloud computing solutions are going to be defined through SOA.
So, your SOA investment can still pay off. But how exactly, do you achieve this? How will Cloud Computing help you to develop and deploy SOA?
Cloud computing can bring many benefits. Business scenario workshops conducted at two recent Open Group conferences in Toronto and Hong Kong identified nine key reasons why enterprises will use Cloud computing:
Agility Timeliness Resource optimization Cost Ease of innovation Security Risk management Compliance Quality of IT support, and Business continuity.
Each of these explains the explosion of interest in Cloud computing. And because they are all solid business reasons, there is no doubt that Cloud will be, not just a media phenomenon, but an increasingly-large component of enterprise IT systems.
One thing is for sure, if you implement Cloud, you wont stop hearing about services. Cloud generally comes in three flavors, all of which are based on the service concept: Software as a Service (SaaS), Platform as a Service (PaaS) and Infrastructure as a Service (IaaS).
In the SaaS flavor, the consumer uses the providers applications running on a public Cloud infrastructure. For example, rather than buying a CRM package to run on your in-house systems, you can interface to a CRM package provided as a service on the Cloud.
With IaaS, the consumer deploys and runs arbitrary software, which can include operating systems and applications, on the providers infrastructure. So, rather than setting up a data center, you can run your software on a Cloud providers systems.
PaaS is at a level between SaaS and IaaS: the provider supplies not just the raw infrastructure but also operating systems, middleware and programming tools, and the consumer can deploy applications onto this platform.
But using Cloud effectively is rather more difficult than picking your favorite ice cream flavor. You need to understand the advantages and disadvantages, both from a business and from a technical perspective, of each of the different kinds of Cloud services. Then you can determine how they should integrate with, or replace, the services already provided by your in-house IT department. This should also be part and parcel of the development of your enterprise architecture. Because services are fundamental to Cloud, it helps if that architecture is already service-oriented, just as Linthicum suggests.
How SOA Contributes to Cloud
SOA means more than just thinking in terms of services. It implies a particular way of constructing enterprise business systems using IT. An SOA system includes software services and an SOA platform and supporting infrastructure, just as a column in a classic Greek temple has a capital, a shaft and a base. The software services are supported by the SOA platform, which typically includes components such as an enterprise service bus (ESB) and a service registry. There are established standards for the components of the SOA platform, such as the Web services description language (WSDL) and WS-messaging, and there are commercial off-the-shelf products that support these standards. The SOA platform is in turn supported by the enterprise IT infrastructure of computers, data stores and networks. These elements of the SOA style also relate to the different kinds of Cloud service. The software services relate directly to SaaS, the infrastructure relates directly to IaaS, and the SOA platform relates, but not yet directly, to PaaS.
From the consumers perspective, the SaaS providers applications are software services that can replace some internally-provided software services and integrate with others, using the internal SOA platform extended over the Internet. This implies no radical architectural change. Decisions on use of externally-provided services can be made on a case-by-case basis, depending on cost, ease of deployment and other factors for the particular services concerned.
The software deployed over IaaS can include part or all of the SOA platform, with some or all of the software services that run on it. Again, there is no radical architectural change. The decision depends on the same factors as a decision to set up an in-house data center: equipment and support costs, return on investment, security, capability for disaster recovery, and so on.
The correspondence is however not quite as close for PaaS. Today, the popular Cloud platform services are running mostly at the operating system and programming language level rather than at the level of the SOA platform. They support standards such as Linux and Java, rather than WS-Messaging and WSDL. Of course, a SOA platform can be implemented on top of Linux and Java, for example, more easily than directly on the raw infrastructure, but this is not as good as being able to obtain the SOA platform itself as a Cloud service. To be really useful for SOA, Cloud platforms should include enterprise service buses, service registries and other SOA platform components―in other words, SOA as a Service.One advantage of SOA is that it gives you a head start with using Cloud, and you at least have that reward for your SOA investment. But SOA is not just a jumping-off point for Cloud computing. When you implement Cloud, you also get to keep your SOA. Indeed, Cloud can strengthen your existing SOA and contribute directly to current SOA initiatives.
If you have a mature SOA, with an established SOA platform, you can look to SaaS providers for some of your services. This can be the best way of achieving the functionality that you need for the nine reasons listed for Cloud deployments―from agility and timeliness through to business continuity. If you want to provide new functionality quickly or if you are concerned about loss of service in case of natural disaster and the services you need are available on the Cloud, then your problem is solved.
Equally, if you do not have the resources to develop or support the services that you need, or if you want to experiment with new business offerings without taking a big investment risk, Cloud can be the answer. You can also, of course, consider using IaaS and PaaS in its current form, for the same reasons.
If you are setting up or extending your SOA platform, you should think about using IaaS and PaaS as the basis for that platform. But the real advantage will come with SOA as a Service. The cost and difficulty of establishing the SOA platform is often a major barrier to adoption of SOA. You can adopt a service-oriented approach without having an expensive platform, for example by hard wiring services instead of de-coupling them by using messaging, but you will not gain the full benefits of SOA in this way. It is difficult to justify a full SOA platform on the basis of a small project, and just as difficult to justify a large-scale SOA development without having done a small project first. Cloud can remove that barrier and avoid that dilemma by making SOA platforms instantly available and paid for per-use rather than by an up-front investment.
Cloud is in many ways the next logical step beyond SOA. SOA applies the service principle to application software within the enterprise. Cloud applies that principle at the infrastructure and platform levels, as well as the application level, and between enterprises, as well as within them.
SOA requires major investments in equipment, skills and culture change. The SOA skills and culture learned in the process will also help an enterprise to take advantage of Cloud. In return, Cloud will help the enterprise overcome the barriers of finance and risk that hinder adoption of SOA. In particular, SOA as a Service on the Cloud could dramatically accelerate SOA implementations and deployment.
Finally, Cloud is about what you use, and SOA is about how you use it. What is much easier to learn than how. An investment in SOA training will still pay off when you have Cloud―and dont worry too much about the additional Cloud learning costs, it wont take long for your people to be productive.
Chris Harding leads the SOA Working Group at The Open Group, an open forum of customers and suppliers of IT products and services. In addition, he is a director of UDEF Forum, and manages The Open Groups work on semantic interoperability. He can be contacted at firstname.lastname@example.org.Please enter your content here.