Private clouds, hosted or on-premise, are rapidly becoming commonplace. More and more businesses are learning of cloud computing and seeing that running their own cloud is both feasible and potentially valuable.
But due to a general lack of cloud knowledge, it is becoming more and more common that clouds are recommended when they do not suit the needs of the business at all. Often this happens when people confuse private clouds with traditional virtualization management systems.
The Differences Between Virtualization and Cloud Computing
A cloud is a special type of virtualization platform and fills a unique niche. Cloud computing takes traditional virtualization and layers it with automated scaling and provisioning that allows for rapid, horizontal scaling of applications. This is not a normal business need.
Cloud also lends itself, and is often tied to, self-service of resource provisioning. But this alone does not make an IT environment a cloud nor justify the move to a cloud platform—although it could be an added incentive.
What makes the cloud interesting is the ability to provide self-service portals to end users and the ability for applications to self-provision themselves. These are the critical aspects that set a cloud platform apart from traditional virtualization.
However, you don't have to set up a cloud in order to gain features such as simplified whole-domain system management from a single pane of glass, large-scale consolidation, easy migration between hardware systems, rapid provisioning of new systems, high availability, etc. These features are all available in other ways, primarily through or on top of standard platform virtualization.
It is not that these features cannot be made available in a private cloud, but these features are not aspects of the cloud. Rather, they are aspects of the underlying virtualization platform. The cloud layer is above these and simply passes through the benefits of the underlying layers.
Often companies move to the cloud because they mistakenly believe that many of the features commonly associated with private clouds are not available in some other, simpler form. This is rarely the case.
Normal virtualization platforms, such as VMware's vSphere and Microsoft's HyperV, offer all of these options. They can be used to make robust clusters of physical servers, managed from a single interface, with incredibly high reliability and rapid provisioning of new systems that require minimal specialty knowledge from the IT department and maintain traditional business workflows.
In fact, most of the time when I am speaking with businesses that believe that they may be interested in pursuing the ownership of their own cloud, the features that they really want are not cloud features at all.
The term "cloud" has simply become so popular recently that people begin to assume that all kinds of important features must be attributed to it. But this is simply not the case.
The private cloud remains, and will remain, a predominantly niche solution appropriate for only a very small number of companies.
By contrast, the use of public clouds or the use of hosted services delivered from cloud platforms will become, and indeed has already become, nearly ubiquitous. But single-company ownership of a private cloud is a long way from being a critical need for most businesses, and in many cases, I suspect, never will become so.
Where Private Clouds Shine
Private clouds shine in two key areas. The first is for a business that needs a large number of temporary or ad hoc systems "spun up" on a regular basis. This often occurs with large development teams and application testing groups, especially if these groups target multiple operating systems. For these groups, the ability to provision temporary testing systems or lab systems rapidly can be very advantageous.
And cloud computing's ability to expose provisioning tools that allow business customers to create, manage and destroy their own system instances with built-in charge back mechanisms can be very beneficial to corporate efficiency. The interaction between the IT department and the end users becomes nearly frictionless for this transaction. Responsibility for maintaining the cloud as a whole can easily be segregated from the responsibilities of maintaining individual systems.
While it is seldom used in this manner for production workloads, private cloud allows a self-service approach that many business units desperately seek today. It is impractical on a small scale, due to the overhead of creating and maintaining the cloud platform itself. But on a large scale, the private cloud can be hugely productive.
In addition to technical advantages, this aspect of cloud computing can serve as a model for thinking of IT as an internal service provider and departments as customers. We have long discussed IT and other business units in these terms but we rarely truly think of them in this way.
The second area where cloud computing really comes into its own, and the one for which the concept was developed originally, is to handle auto-provisioning for horizontally scaling applications. That is, it allows application workloads to increase their capacity-handling ability by spawning new instances for themselves.
On a small scale, many Web applications, due to their stateless nature, do this within a single system by spawning new thread workers to handle additional connections. An Apache Web server might start with eight listeners ready to service requests. But as those threads become exhausted, it automatically starts new threads to handle additional incoming connections so that it is able to scale within the confines of a single server.
In a cloud computing environment, that same application might sense thread exhaustion approaching on a system-wide level (or based on other metrics such as a lack of free memory or a loss of performance). It would use then use an API exposed from the cloud computing platform to signal the cloud management system to provision a new copy of the system that was calling it—essentially cloning itself on the fly. In a matter of seconds, a new virtual server, identical to the first, would be up and running, joining its parent in servicing incoming requests. This child or clone system would likewise spawn new threads internally, as needed, and then if it too sensed exhaustion would call the cloud platform to create yet another new system to handle even more threads.
In this way, the application can grow itself almost infinitely (within the hardware limits of the entire cloud platform) as needed, on the fly, automatically. Then, as individual systems become idle, workloads die down, one at a time. A system can signal to the cloud management system that it is no longer needed, and the system will be powered off and destroyed, as it was simply a stateless clone. That frees system capacity for other applications and workloads that may need to take advantage of the spare capacity.
As we can see, cloud computing is massively powerful, especially with the bulk of today's public and enterprise applications being written in a stateless manner in order to take advantage of Web protocols and end user interfaces. Web applications are especially adept at leveraging cloud computing's scalability model, and most large-scale Web applications leverage this elastic expanding and contracting of capacity today.
Many new NoSQL models are beginning to emerge, demonstrating that databases, in addition to application front-end processing nodes, may soon benefit from similar models. Companies can certainly leverage these models for internal applications as well as public-facing ones. However internal applications rarely need to scale beyond a single system, so it is quite rare to find private clouds being leveraged in quite this way.
The Dark Side of the Cloud
The dangers of cloud computing come in the form of additional complexity above and beyond normal virtualization. Cloud computing's ability to create and destroy systems rapidly can make it tempting for users to attempt to use cloud resources as if they were persistent systems, which they can be made to be. But that can result in data loss.
Possibly the biggest cloud concern is a human one: the increased likelihood of experiencing uncontrolled system sprawl as end users wildly spin up more and more new systems. Because these systems are created by end users and not IT, they are probably not tightly controlled and monitored. That leaves systems in a rogue and oft-forgotten state. This can lead to a maintenance and security nightmare as systems go unpatched and uncared for. It also increases risk and drains resources.
And most worrisome is the possibility that forgotten systems won't have proper licensing. Tracking and reporting on auto-provisioned systems carries process risk caused by the huge shift in how systems are created. IT departments are accustomed to the heavy licensing processes necessary to maintain compliance. But most business units are not equipped to handle these processes.
There are accommodations for the licensing needs of cloud computing, but this is extra complexity and management that must be addressed. Allowing systems to exist without direct IT department oversight clearly carries risk of a potentially unforeseen nature.
Private cloud ownership brings many exciting possibilities, but it is clear that these benefits and opportunities are not for everyone. They cater to larger businesses, to those with good process control. They are best for companies running applications that can take advantage of the system-level elasticity and those needing large scale ad hoc system creation and destruction.
In my opinion, most large enterprises will find limited use for the private cloud. Smaller organizations will rarely find the private cloud to be advantageous in the near future, if ever.