A private cloud implements one model of cloud deployment in a private environment accessable by a single organization that has access to the resources used to implement the cloud. In other words, it is a cloud that an organization implements using its own resources (machines, networks, storage, data centers, etc.) behind its firewall.
The definition of a private cloud is different from that of a public cloud because the latter implements clouds for multiple organizations (possibly competitors) using a single set of resources. A good analogy is this: A public cloud is similar to a public power utility. A third party manages the infrastructure required to deliver computing services to customers who pay fees for those services. The common-carrier Internet is analogous to power company transmission lines.
There are also more subtle differences between public and private cloud definitions. Private clouds must incorporate the governance policies and infrastructure capabilities specified by the organization that deploys them. In contrast, public clouds, for reasons of scale, provide low-cost but high-quality commodity services to their customers, just like the power company. A private cloud definition is the IT framework that the organization imposes on it. A public cloud "flattens" the structure into a high-quality commodity that can be offered a relatively low cost due to efficiencies derived from scale.
What's the difference between private clouds and virtualized data centers? Operating system virtualization (the ability to run virtual machines using a hypervisor as the base software layer) is a powerful tool and many IT organizations have implemented plans to use this tool to improve IT operations. "Are these private clouds just virtualized data centers?" is a typical question we get.
Operating system virtualization is an important component of a private cloud definition. But that alone, even when deployed throughout a data center, does not define a private cloud. That is, a private cloud depends on operating system virtualization but it also requires quite a bit in addition to the ability to run virtual machines even if the virtualization technology supports this ability across the data center.
The key difference lies in the purpose virtualization fulfills when it is used to control a data center versus when it is used to implement a cloud. When used as a data center control technology the "operator" (typically a system administrator) uses virtualization to abstract the "server" running in a VM away from the hardware on which it runs. By making a server a virtual entity (one not attached to a specific piece of hardware) it can be moved, suspended, or upgraded independently of how the hardware running it is manipulated. Thus virtualization provides a way for a system administrator to manipulate the resources in a data center more flexibly and faster to achieve greater efficiencies.
However, to be an effective tool for administration, the data center virtualization tools must operate as a console. That is, when an administrator issues a control command, the command is implemented and the result returned in a way that allows the system administrator to know the state of the system from moment to moment.
In a cloud, virtualization serves a different purpose, which is to provide isolation between resources allocations. That is, virtualization inside a cloud prevents different collections of virtual machines from interfering with each other. Indeed many clouds do not take advantage of the VM mobility and multi-tenancy functions supported by most hypervisors -- two key functionalities used heavily in virtualized data centers.
In addition, cloud platforms use virtualization asynchronously. There is no cloud "console" that can report the state of the resources faithfully because to implement one, the cloud would need to make virtualization requests one-at-a-time so that the state would be clearly known at the time it is reported. Put another way, by the time a correct accounting of the operations performed in a cloud is recorded, the internal state will have changed. The only way to prevent this state of affairs is to make the cloud handle requests one-at-a-time so that the internal state changes sequentially. Synchronizing requests in this way severely limits scalability.
Get Started with a Eucalyptus AWS-compatible Private Cloud
Try Eucalyptus for free on our machines or yours with our hosted Eucalyptus Community Cloud (ECC) or by downloading our FastStart automated installer.