Cloud computing today combines various established distributed software techniques with newer Web-oriented architecture.
In a way, cloud can be viewed as a massively scaled version of formerly 'hot' computing architectures such as grid or on-demand computing – albeit with much heavier reliance on modern virtualization technology.
From the earliest time of cloud computing – some people might position this in 2007 or thereabouts – arguments have centered on whether or not you had to re-do your existing architecture to benefit from the cloud architecture. This is not an important point to a new army of Web business startups in search of customers, but for existing companies with established customers and established IT operations, arguments continue on what to place on the cloud and how to place it there.
Hybrid architectures that mix private and public clouds with existing on-premise set-ups are just now being explored. As users gain more experience with these hybrids, best practices for integration based on ESBs and message brokers may emerge.
For cloud computing, architecture issues of API, data architecture, and languages have been of paramount concern since the first days. The early Google cloud asked developers to work in Python – the early Salesforce.com cloud asked developers to work in Apex. Over several years that has changed, with much more Java and C# support available today. Most recently, Platform as a Service (PaaS) offerings for development have entered; these developer sandboxes are increasingly based on a wide menu of open source frameworks that, theoretically, can be moved from one cloud to another.
When Amazon.com got its cloud rolling, it did so with an approach based strongly on Web services. The notion of service-oriented component partitioning in the cloud has continued. Much early effort has centered on means to configure application server and application framework components and clusters so that the cloud achieves its promised computing efficiency.
"You seldom can just take an existing application and plop it onto a cloud-based environment. Many times, the system needs to be re-architected and rebuilt," said Jonathan Rende, vice president and general manager for Application Solutions, HP Software.
The cloud, he continued, often relies on the already developed notion of building-out services as composite applications, where, for example, credit card authentications and transactions are Web-based services that are called-in to an online store front as needed.
"What you are seeing in cloud computing," said Bob Renner, CEO, Liason, "is a lot of different architectures – some new, some modified. As a result, the architectures that are emerging are hybrid, and complicated." Data integration becomes an even more complex proposition as you seek to integrate enterprise applications, whether they are of the in-house or vertical Software as a Service (SaaS) variety, or they are "a horizontal cloud-based stack that serves as infrastructure," he said.
Early cloud provided infrastructure for computation, must as did the predecessor grid school of architecture. The early days of cloud architecture are recalled by Redmonk Analyst Stephen O'Grady. At that time, bare bones implementations of cloud infrastructure were epitomized by Amazon.com.
“You could turn machines on or off, but it was difficult to do many of the things we think about today," said O'Grady. "A lot of the initial adoption mirrored what we were used to. To date, Infrastructure as a Service (IaaS) has been the dominant paradigm from a cloud adoption standpoint.”
Early usage was one of two things: Web workloads and batch workloads, such as those found scientific research and multimedia content creation. These required much CPU horsepower. But, since then, organizations have started deploying new cloud architectures for a variety of standard workloads. O'Grady said, “It is emerging as another option to deploy your apps to.”
The PaaS of progress
Evolution of cloud platforms has proceeded more slowly than cloud infrastructure. “PaaS has not dented IaaS for a few reasons," said O'Grady.
"The initial wave of platform providers was very constrained, which has limited interest. For example, they would choose the database and programming language, and frequently the API as well,” he said.
“Over the last year, we have seen a spike in platform technologies because vendors have woken up to the fact that the developers in the cloud don't want to be locked into a platform," he continued. Open source APIs are on the rise.
They follow the style of Heroku and use standardized componentry. Platform projects like the Cloud Foundry from VMware and OpenShift from Red Hat support multiple languages like Java, Python, Ruby, and Scala. Frameworks such as Spring, Rails and Django are finding wide cloud platform support.
“The promise, if you want to take advantage of developing another platform, is that you don't have to worry about all of the things you used to,” O'Grady said. "That is all part of the cloud provider value-add. At the same time, if you leave a platform, the framework is replicable elsewhere.” Still, Spring, Rails and Django are new to many enterprise developer groups.
Integrating ESBs and Message Brokers into cloud applications is just in its infancy, said O'Grady. Red Hat's Open Shift and Amazon Cloud Front have built some integration tools on top of the standard Red Hat middleware stack, messaging bus and app server. But there has not been much work on traditional enterprise integration with ESBs in the cloud, he said.
In the long run, better integration middleware will make it easier to bridge cloud-to-cloud services, and will help enterprises to create apps that span public and private clouds. O'Grady said, “We are going to get to the point, where the cloud becomes the default option. For enterprises, we are going to see more demand for cloud than for the traditional integration pieces in that environment.”
APIs: Give it a REST
When architects look at cloud computing, or anything that is new, they likely look first for elements familiar from previous experience. While the rise of SOA implementations based on Representational State Transfer (REST) architecture has been slow, it has also been steady.
Today, it is a major trend in both cloud and SOA. The style should be understood before undertaking any cloud analysis.
An off-shoot of HTTP work, REST is a way of handling, for example, data representations rather than data resource itself. It is a style, rather than a standard. In recent interview, Winston Bumpus, president of the Distributed Management Task Force (DMTF) told SearchSOA.com that he anticipated the DMTF would work to standardize a unified cloud interface based on REST later this year.