I’ve always felt that analogies are a great way to clarify complex and confusing principles. And the difference between cloud and server virtualization seems to be one of the most confusing comparisons being made today.
First, I’d like to be blunt and start by saying: stop comparing the two! Once we stop with the comparisons, things get simpler to understand. It’s when we put them side-by-side that people get wrapped around the axle.
People frequently ask me about moving their applications from VMware to OpenStack. Or they ask how they can install OpenStack to run the legacy applications they built five years ago. These are the wrong questions to ask and are adding to the confusion.
The differences between OpenStack and virtualization are similar to the differences between two distinct types of power plants.
First, let’s look at a nuclear plant. It’s large and expensive to build. It is very time consuming to increase your power output as you need to build out the plant to give you more capacity to generate more power, but there are also limits to how many of those huge nuclear silos you can build on a site.
There are also facets of redundancy contained within this analogy: every aspect of the power plant’s infrastructure has built in redundancy, because you know that if something breaks the effect is loss of very valuable resources and a catastrophic drop in power output.
This basically describes traditional server virtualization. Virtualization offers redundancy and high availability built into the infrastructure, but is time consuming to add capacity to increase your performance output. Getting more performance means “scaling up” or “vertical scaling.” You primarily add more memory and processors to make your physical hypervisors perform better, but once again you can only add so much until you have maxed out your server hardware capacity, or you start to run into diminishing returns.
Now let’s look at OpenStack, which I compare to a wind farm.
A wind farm comprises relatively inexpensive turbines. To get more power output, you add more turbines. You can add an endless amount of these little turbines into a massive pattern and plug them all into the grid to create your output. Redundancy of each little turbine is not your biggest concern because if one turbine goes down you only lose a small amount of power output.
This basically describes cloud. In a cloud model you should never expect infrastructure to supply redundancy. You should build your application to be aware of infrastructure issues and to be self-healing. If a cloud server fails, your application can simply spin up a new one to take its place.
Gaining more performance is primarily done through adding more cloud servers into the larger pool, however adding virtual resources to existing servers can also be achieved based on the needs of your application. This process of spinning up additional cloud servers is called “scaling-out” or “horizontal scaling.” Your focus changes to adding (and removing) smaller and more inexpensive nodes as your application performance needs change over time.
Server virtualization is a technology solution; cloud is a whole new business model — it’s not simply an upgrade. To take advantage of the cloud you need to look at your application architecture and new ways to take advantage of the power that the cloud can give you. The application needs to become the brains of the operation that automates scaling and redundancy, with the infrastructure merely forming the supporting foundation.
This post is actually a summary of a video I did not too long ago that is hosted on the Rackspace Knowledge Center. In the video I also discuss application state, which is another consideration to be aware of when thinking about the cloud.
I hope this analogy eliminates the confusion between OpenStack and virtualization and helps you choose the best solution for your particular workload.
If you would like to get a better understanding or build your knowledge of OpenStack, you can download the freely available Rackspace Private Cloud Software powered by OpenStack. We have made it extremely easy to deploy by automating most of the installation steps for you. This article explains the install in an easy to follow step-by-step process.