The biggest challenge in cloud computing may be the fact that there's no standard or single architectural method. In fact, there are few definitions of the cloud computing concept that are fully accepted. Therefore, it's best to view cloud architectures as a set of approaches, each with its own examples and capabilities.
A cloud computing system is a set of IT resources designed to be allocated ad hoc to run applications, rather than be assigned a static set of applications as is the case in client/server computing. In a cloud computing environment, a user (via a virtual desktop, for example) requests information from an application. The cloud computing environment must then broker resources to run that application.
Virtualization is the key element in any form of application or resource brokering. To understand why, look at the process from the virtual desktop perspective:
- The user requests an application resource in a symbolic form (via URL or a Web service UDDI).
- The cloud computing environment fields the request and assigns resources to the task.
- Resources are loaded with the required software.
- The address of the resources is returned to the user and the application interaction proceeds.
As this sequence shows, the most critical requirement for cloud computing is that users have a virtual view of their applications and should never refer to an application resource with a static address. Doing so would prevent the cloud from allocating resources flexibly. Since all cloud computing models must support a virtualized "front-end" interface to users, the management style of their virtual resources may be very different from one implementation to another.
Cloud computing models
Cloud computing is new -- its potential is exciting and its applications are limitless. By guaranteeing that cloud resources link effectively with virtual desktop capabilities, enterprises can get the most out of cloud services that are available from third parties. They can also efficiently redirect computing centers into a cloud model for maximum performance and cost effectiveness.
The simplest model of cloud computing can be created using a pool of servers that have been "virtualized" using an application tool like the Web Services directory, UDDI or a network tool used for server load balancing. This can make multiple servers (real or virtual) appear as a single resource -- a cloud. The problem with this model is that it's not a major advancement over existing client/server architectures because it doesn't provide true resource independence -- servers are still dedicated to an application set.
The next step in cloud architectures is the use of a software tool that builds cloud-ready applications. Salesforce.com uses this in its Platform-as-a-Service (PaaS) model. The tools ensure that the applications built under the model can be brokered onto multiple servers and will run in a way that doesn't interfere with other users. This model is popular among cloud computing network providers, and can be integrated with SaaS offerings from the same providers using their application tools.
Network providers -- or even enterprises -- could build a more sophisticated model using a combination of network virtual storage and virtual server technology. This model would allow an application to be created as an "image" or "instance" and stored in the cloud.
When an application request is received, it is assigned to a virtual server, loaded there from stored copy of the application image and granted access to the required data from a storage pool. The use of virtual servers here allows operating system independence, as long as the hardware systems have a common binary execution format (the x86 instruction set, for example). Amazon's Elastic Cloud Computing (EC2) fits this model. A similar model can be created using Java Virtual Machine technology. Java applications can run on any hardware platform, providing even more resource independence.
The "ultimate" cloud computing model would be one where full resource virtualization like this would be combined with resource brokering logic that takes into account the cost of resources, network connectivity, performance requirements, user geography, and so on. The IBM/Google cloud computing model meets these requirements; a similar framework could be built combining tools from Cisco and other virtualization vendors. The difference between this and the aforementioned model would be visible to the cloud user perhaps only in the form of lower prices or better performance, both of which can come out of the improved resource brokerage process.
It's important to note that while most cloud computing architectures and offerings are built on a Web Service or SOA framework, the connection to either is not essential. In fact, cloud resources can resemble servers in a client/server arrangement. This application is relatively rare because most companies use cloud computing as a means of supporting special application sets; therefore, they supplement their own IT resources. Integrating these special ad hoc applications with in-house applications requires virtual desktop tools that perform best and most flexibly if all applications present their capabilities as Web services.
About the author:
Tom Nolle is president of CIMI Corporation, a strategic consulting firm specializing in telecommunications and data communications since 1982. He is a member of the IEEE, ACM, Telemanagement Forum, and the IPsphere Forum, and is the publisher of Netwatcher, a journal in advanced telecommunications strategy issues.
Cloud computing models: Which one is best for your business?
Virtualization and the cloud are not panaceas