There are two terms floating around the computing space lately: hybrid-cloud and private cloud...
Hybrid cloud is the state of having infrastructure in both a local data-center and a public cloud provider. It is both an acknowledgement of the reality companies face today, and a strategy for transitioning out of data-centers.
Private cloud is the concept of replicating all of the benefits of the public cloud in a company’s data-center. The idea of private cloud is usually not feasible and almost always undesirable.
About 3 years ago at re:Invent, AWS exclaimed that there is no such thing as private cloud. But what about the many companies that were implementing cloud-like functionality in their data centers? After years of watching companies attempt to implement these solutions, I have to agree with Amazon’s public cloud stance.
To understand why there is no such thing as a private cloud we must first understand what the cloud brings. There are three things that establish something as cloud computing:
A supported self-service layer to access compute resources
An elastic set of resources that can handle large shifts in computing demand
A constantly evolving platform that allows for new ways to approach software development.
It is important for these three items to work in concert with each other to provide the promise of cloud computing.
So how do these three points relate to private cloud, or a lack thereof? Each of the three pillars of cloud computing I mention has a set of business constraints and realities around them that must be met for a company to have the power to implement a cloud computing platform. Let’s walk through the three areas of cloud computing to see why it is nearly impossible to create a private cloud.
1. Self-Service Access
On its surface self-service access to compute is the simplest of the three pillars to implement. It seems that an organization just needs a tool that provides API and portal access to compute creation. This is something that VMWare and OpenStack have been promoting for a while. Unfortunately there are two problems that cause this to be difficult to implement: control over growth and support for end users.
The natural control of cloud computing resources is cost. When the cost is high, organizations reduce the demand on computing resources to align with needs. In private cloud, a process must be put in place to determine the value of compute compared with other needs for an organization.
In theory, companies could charge for resources utilized in self-service infrastructure, but this adds complexity to the implementation of private cloud tooling. I have never seen this method used.
Instead companies use gating approval processes that remove the agility from accessing these resources because the ease of access to compute resources was eliminated. Pricing and budgeting are much better control structures that companies already have in place for dealing with resource demands.
Support, and the customer service ethos, is an understated aspect of cloud computing. Public cloud providers are competing with each other for business and have a customer support and service drive to create satisfied customers that bring repeat business. This is never true internally as the “client” business units that access these resources don’t have a choice of vendors.
In addition, “service” organization also doesn’t have to worry about losing out to a competitor. The service group is usually tasked with multiple competing priorities and has to decide where client needs fit in. While it is not impossible, it is very difficult to drive a culture of customer first behavior into internal service organizations. It would require an isolated group covered by metrics that ensure it behaves in a very customer focused manner.
The next problem faced by the private cloud is elasticity. One of the greatest promises of the public cloud is the lessened need for thorough resource planning, and the ability to adapt to increased demand as the business needs change without purchasing expensive hardware.
In the public cloud, provisioning is shared by every client of the cloud service provider (CSP). This shared cost across thousands of customers allows CSPs to overprovision - a critical key for elasticity in times of need.
Private clouds do not have the same flexibility. Every purchased piece of equipment is immediately and permanently added to the cost of a private cloud. In times when a company does not need as many resources, private cloud does not reduce cost as the computers have been purchased and provisioned. Companies own the total cost of compute that may be needed no matter what the actual needs are.
Finally, private clouds fail on innovation. Public cloud providers are constantly adding services to their offerings. Each additional innovation is often inspired by requests from companies that utilize the service and have unmet needs. Innovation is also spurred by competition as the providers attempt to provider higher value while competing for business.
While vendors claiming to provide private cloud are also innovating and driving new features into their products, the cost to a company implementing private cloud is much higher. First, every new feature must either be implemented or in the case of a product installed. This work or the cost of purchase are immediately taken by the company. In the public cloud, the company can implement proof of concept applications with new innovations for very low cost before investing further.
For these reasons, the private cloud is not something that truly exists today and is unlikely to in the future. While this can be disconcerting for internal infrastructure teams that are looking for ways to use existing servers instead of the public cloud, there is good news.
The tools that are currently billed as private cloud and the principles behind cloud computing should be implemented in organizations that have to live in the data center.
Implementing containers or other flexible infrastructure solutions will make the eventual transition to public cloud much easier. These tools and processes are about abstracting compute infrastructure away. This in turn makes a transition to cloud nearly seamless.