I see a lot of confusion when it comes to creating a private cloud. Many seem to think that by virtualizing your servers in your local on-premise data center, you have created a private cloud. But by itself, virtualization falls far short of the characteristics of a private cloud and is really just server consolidation and data center automation. The original five cloud characteristics, as stated by the National Institute of Standards and Technology (NIST), are what defines a cloud:
- On-demand self-service: A user can provision a virtual machine (or other resources such as storage or networks) as needed automatically without intervention from IT
- Broad network access: Virtualization is available for all internal customers that are on the network through various client platforms (e.g., mobile phones, tablets, laptops, and workstations)
- Resource pooling (multitenancy): Computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources (storage, processing, memory, and network bandwidth) but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter)
- Rapid elasticity (hyper-scaling): Resources can be scaled up or down manually or in some cases automatically to commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time. There is no need for IT to provision VMs individually and install the OS and software
- Measured service (operations): As opposed to IT charging costs back to other departments based on traditional budgeting, costs are based on actual usage. Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service
Since virtualization only solves #3, a lot more should be done to create a private cloud. Also, a cloud should also support Platform-as-a-service (PaaS) to allow for application innovation. Fortunately there are products to add the other characteristics to give you a private cloud, such as Microsoft’s Azure Stack. And of course you can always use a public cloud.
The main difference between a private cloud and a public cloud is in scaling. A public cloud like Azure has no “ceiling” so resources can be added with no limits (i.e. hyper-scaling). A private cloud has a ceiling and you may have to wait for more hardware to be installed before you can scale. Comparing a public cloud vs a private cloud vs a hybrid approach will be the topic of another blog.