Virtualization vs Private Cloud

I originally wrote this in answer to a question posted on the LinkedIn CloudStack Users Group, but my verbosity pushed the reply way over the allowable length in the LinkedIn comment form field. Plus, with all the hype around cloud these days, there needs to be more real-world examples of where cloud fits and where it doesn't.

The question was this (with minor edits for spelling and grammar):

Private cloud vs virtualization

I searched the net for the difference between private cloud and virtualization. I found some articles, but none of them could illustrate this difference by a real example, they gave just the concepts: self service, ubiquitous, resource pooling, …

My question is: what is the add value of private cloud, especially with cloudstack, for an enterprise that already has a virtualized datacenter, especially with vmware?

Virtualization is a component of cloud, whether public or private. To better illustrate the difference, let's consider a couple of use cases and examples:

Example 1.
An IT department, continually installing/reinstalling new servers, implements a virtualization solution so they can provision infrastructure faster and consolidate servers. They virtualize their servers using their hypervisor of choice along with management tools. They upload iso files into their management software so they can install new OSes into a new virtual machine. They have to be on the local network in order to manage the virtual machines or orchestration software. And if they are charging back capacity to their internal customers' budgets (Marketing, Sales, Engineering, etc), they're probably just splitting the cost between each group, or maybe evaluating how many virtual machines they stand up for each group.

Is this cloud? Not really. This is really just server consolidation, data center automation, etc. Their solution doesn't really meet all five characteristics of cloud computing:

  1. On-demand self-service (they still have to provision virtual machines for their internal customers).
  2. Broad, network access (this is for internal customers on the network)
  3. Resource pooling (this is where virtualization fits, so yes)
  4. Rapid elasticity (they still have to provision VMs, and they don't necessarily scale fast)
  5. Measured service (they're charging back to their users based on traditional budgeting, not based on actual usage)

Example 2.
A company has a headquarters office with a central IT staff that supports company-wide and departmental applications. They also have several branch offices with local IT staffs that focuses on break/fix repair of local desktops and network services. The branch offices may occasionally set up a local server and install some software at a manager's request, but they usually request central IT to provide supported servers or applications at HQ. Central IT is looking to provide better support for their branch offices without having to hire more staff, provide faster turnaround time when provisioning services for supported apps, and even allowing quick, easy servers on-demand to their branch offices for local, unsupported applications. So they install their hypervisor of choice, deploy storage in their preferred manner, and add some management software. However, in additional to providing ISO files for VM installation, they also prepare some disk images with pre-installed, supported OSes. Additionally, the management software provides for multiple users of different access levels to perform tasks such as launching virtual machines. Now, the Marketing department in a branch office can try out some new analytics software by logging into a portal, provisioning a new server, installing the trial software, and using it for a few days. If they don't like it, they turn it off and delete the VM. Engineering may deploy multiple VMs to set up a production application, but also spin up a few additional VMs to use as development and staging environments. They no longer have to put in capital requests for servers, nor do they have to search around some old supply closets and pull out some old dusty desktop system to use as a local staging server.

Is this a private cloud? Yes!

This company still using virtualization, but now they've added a level of self-service for branch offices (whether it's local IT using it or someone else) to consume services without necessarily requesting the limited resources of central IT. They can access this service from their branch office, possibly using a VPN connection over the Internet or an SSL/TLS web-based portal (broad network access). They can spin up additional capacity quickly and turn it off just as fast (rapid elasticity). And because of all this, central IT can now meter actual usage of each service by various departments on a monthly or even hourly basis and charge departments accordingly.

In Example 1 above, the IT department might deploy VMware ESXi and use its built-in management tools, or perhaps deploy Red Hat with KVM and virt-manager. Those are tools available to the server administrators to manage the virtual machines themselves. In Example 2, CloudStack would sit on top of those hypervisors and management tools to provide everything beyond basic virtualization: user self-service portals, prebuilt disk images, usage metering, access from branch offices, etc.

That's the difference between virtualization and private clouds.