When many people think of cloud computing they immediately think of virtualization and virtual machines in particular. This is completely natural and not at all surprising. After all, one of the core underlying technologies used in cloud computing is virtualization. However, it is important not to confuse one element of cloud computing with the entire thing – and this can sometimes happen. Actually, I don’t really think people literally confuse virtualization with cloud computing – but I have heard people refer to their collection of virtual images as their “private cloud.” They are too easily satisfied and view their collection of virtual machines as being “good enough.” They don’t see how moving to a real cloud – private, public, or hybrid – could transform their data center. They are greatly mistaken.
First, let’s consider what is typically meant by cloud computing. I think we need an impartial definition here so let’s look at what has been produced by the National Institute of Standards and Technology (NIST). It’s their job to define standards and guidelines, including minimum requirements, for use in federal agencies and nongovernmental organizations. NIST published this definition of cloud computing in September of 2011. The definition is very complete and yet also concise (just two real pages of definition). They define the five essential characteristics of the cloud model: three service models and four deployment models.
Let’s start by looking at the essential characteristics:
- On-demand, self-service
- Broad network access
- Resource pooling
- Rapid elasticity
- Measured service
So, for a solution to be called a cloud it should meet these essential characteristics. In this list, it is clear that managing a collection of virtual machines is certainly not a cloud. You must be able to have resources allocated when they are needed and in a self-service fashion. You must be able to do this from anywhere with broad network access. You must provide resource pooling for use by multiple consumers in a multitenant model based upon consumer demand. Indeed, virtualization certainly comes into play with resource pooling – but only to the extent that it can be leveraged to easily manage and move workloads. The consumers should not even be concerned with the physical location of the workloads. Elasticity is imperative and must be supported to both scale outward and inward as demand dictates, optimally in an automatic fashion. This is something not easily done when you are just managing virtual machines. Finally, the ability to measure usage of the services is important and should provide transparency for both the provider and consumer of the utilized service.
The NIST also defines the three primary service models: software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS); and also four primary deployment models: private cloud, community cloud, public cloud, and hybrid cloud.
So I think this gives us a good working model for cloud computing and the value that it can bring over only virtual machines. That isn’t to say that virtualization isn’t important. I think it is very important for cloud computing – bordering on critical. It’s just that virtualization must be thought of within this broader notion of cloud computing to gain all of the value that this new paradigm has to offer. We’ve been aware of this for some time at IBM and you can easily see it in the solutions that we’ve delivered for both private and public clouds. I think our competitors are just now starting to see this too and are beginning to think beyond only virtual machines. But there are many differences between our cloud solutions and those of our competitors. One element is that our competitors are often focused only on their particular hypervisor (virtualization infrastructure) technologies to facilitate cloud solutions; IBM, however, gives you a choice.
The next question that I think you should ask is – “what role does virtualization play in the cloud and what exactly is it that I should virtualize?” You can probably guess that it is more than only virtual machines. At IBM, we have always been taking the broader view – looking beyond where we are today so that we are prepared for tomorrow.
So what does it mean to take a broader view of virtualization? At its core, virtualization is about introducing a level of abstraction between the producer and the consumer of something. We began this journey by virtualizing the hardware – memory, CPU, storage, networking, and others. This led to virtual machines combining these building blocks typically with an operating system.
Let’s not stop there – we can do so much more as we move up the software stack. For example, IBM Workload Deployer and its predecessor the WebSphere Cloudburst Appliance have provided what we call Virtual System Patterns for three years now. The motivation behind this is that – although virtual machines are great – there are very few business solutions that are only dependent upon a single virtual machine running some software.
We saw a need to create an abstraction of a complete system with multiple federated machines to support complete application solutions provisioned as a single entity. We provide deep integration for complete systems built upon standards to support middleware provisioning; leveraging best practices, and based on our years of customer experience. We also provide utilities in an open, extendable structure to support customization and integration of third-party solutions. This is all accomplished using a patterns-based approach with a very simple drag-and-drop interface. Once more, our competitors are just starting to play catch-up here by introducing similar concepts with graphical user interfaces that allow you to build topologies of virtual systems. It’s amusing to see how similar they look to what we’ve had for years. I guess imitation really is the most sincere form of flattery.
Once again, we didn’t stop there. We took the abstraction up a level higher and introduced application virtualization last year in our IBM Workload Deployer private cloud management solution. By application virtualization I mean providing the capabilities to abstract the application from the underlying infrastructure such that it can be elastic, highly available, and provide agility across a pool of application infrastructure resources.
This type of application virtualization is built into our virtual application pattern (hence the name) – an application-centric way of defining, provisioning, and managing the complete lifecycle of your application. Features such as elasticity of the application itself and shared services to support non-functional requirements are delivered in policies using common metrics such as response time service level agreements (SLA). Requirements that are common for nearly any application, such as high availability, are “baked” right into the solution without any definition required. Virtual application patterns support specific types of applications in a highly integrated solution – integrated both on the front-end user interface, and on the back-end implementation of the running systems. Management is from an application perspective – not focused on the various middle components that are necessary to support the application. This a true platform as a service (PaaS) solution where IBM Workload Deployer dynamically builds the necessary platform infrastructure to support the specific needs of the application. I don’t see anything similar in scope and user simplicity from our competitors – they’ll be playing catch-up yet again.
So this is what cloud computing is all about. It is about much more than simply virtualization – it is about transforming the data center. It is about innovation and simplicity. IBM is including intelligence into the solutions that we provide and integrating the expertise we have gained over years of experience right into those solutions to simplify IT for our customers. We are providing our customers with the IT for their business so that they don’t have to be in the business of IT themselves.