The Building Blocks of the Cloud
Experts in cloud computing have a hard time agreeing on what it means to be “cloud”. It’s therefore not surprising that the general public has had a hard time figuring out where to get started in building out a cloud infrastructure. The best way is to forget about dogma and definitions and instead focus on the building blocks that make cloud computing possible.
Virtualization and Cloud
So many senior IT professionals think cloud is nothing more than a marketing term for virtualization (or, worse, for time sharing). It’s not. In fact, cloud is possible without leveraging virtualization. For the purposes of this article and in most common cloud infrastructures, however, virtualization forms the foundation of cloud computing but is not by itself cloud computing.
The key feature of virtualization that is critical to cloud computing is the ability to abstract away the physical layer of IT infrastructure and enable automated provisioning of IT resources. There are many benefits to virtualization even if you don’t “go cloud”. For example, you can start using a greater percentage of your physical resources using virtualization than in physical infrastructures. Virtualization alone, however, won’t get you things like application automation, on-demand delivery, and true metering.
A cloud infrastructure platform is the technology that turns a virtualized infrastructure into a true cloud. Abiquo, Cloud.com, Eucalyptus, Nimbula, OpenStack, and VMware vCloud Service Director are all examples of cloud platforms. A cloud infrastructure completely hides the remaining exposed aspects of the physical tier from users of your infrastructure.
With virtualization tools, for example, you typically define clusters of physical servers that can pool together and be virtualized. When you want a VM, you define the host on which you want to launch it and often even have to install and operating system and configure your networking.
Cloud platforms simplify all of this from the perspective of someone provisioning a system. You select from a list of pre-defined operating system templates and network configurations and tell the cloud platform to give you a virtual machine matching your specifications. It worries about the physical host on which the virtual machine is deployed. It worries about managing data center capacity. It provides the catalog of standard virtual machine templates and configurations.
Beyond the Basic Cloud
With a cloud platform on top of a virtualization platform, you have a cloud. It’s probably not a complete solution for most business needs, however. Once you have your cloud, you will need to find a way to deal with cloud infrastructure management and configuration management.
Cloud infrastructure management tools like enStratus and RightScale enable you to integrate public and private cloud infrastructures into a single virtual cloud. They support the on-demand provisioning and de-provisioning of cloud resources and the integration of those resources into an automated application stack. Features of cloud infrastructure management include auto-scaling, automated disaster recovery, backup management, and cloud abstraction.
Configuration management helps you make the transition from traditional IT operations to “devops”. Devops is an operational philosophy built around the concept of “infrastructure as code”. In other words, instead of building you IT operations around documented policies and procedures, you capture your application and system management in reusable scripts that support proven and repeatable automation.
This model works well with cloud computing because a cloud computing infrastructure is entirely programmable from the point a request for an IT resource is made through deployment. A cloud infrastructure management tool will typically use a configuration management tool like Chef or Puppet to handle the configuration of a newly provisioned platform to meet the needs of an application it is deploying into that environment.
For example, you might have a LAMP application being deployed into a private cloud. You will have defined your virtual machine templates in your cloud platform using a structure supported by your virtualization tier. You then define your application architecture using a cloud infrastructure management tool. Your cloud infrastructure management tool tells the cloud platform to allocate virtual machines. The cloud platform allocates them on the appropriate physical hosts in the virtualization tier. The cloud management tool then tells your configuration management tool to configure each virtual machine to support the piece of the LAMP stack it is supporting. Finally, the cloud management tool deploys the application components onto the virtual machines and the system is ready to function.
Other Cloud Components
This may be “enough cloud” for most organizations. Workflow management and cloud-scale testing are sometimes needed more for enterprise and highly elastic environments, respectively. It’s definitely worth having a look at workflow management if you have complex IT workflow requirements. And if you intend to launch an application that needs to be able to support a sudden, massive spike in traffic, it makes sense to have the tools to test those capabilities.