| Stacking solutions in the cloud for fun and profit

Definition of Cloud Computing


Perhaps the biggest buzzword in today’s IT: “Cloud Computing” is a term that is used (and misused) to describe so many different things that it’s so easy to loose sight of what Cloud Computing is really all about.

In this page, I’ll try to demystify the concept of Cloud Computing, identify it’s different variations and hopefully empower the reader with the ability to distinguish between Cloud and just plain Hype.

There are many types of clouds, but they all share the same basic definition

We already know that the water vapors otherwise known as clouds (the meteorological ones) come in different shapes and sizes (see below illustration image).

But despite their differences, all clouds comply with the same basic scientific definition, which sets them apart from other visible masses of water such as a puddle or a rain drop. Cloud Types

Image source: Christopher M. Klaus

IT clouds follow the same logic - they come in different shapes, but still must match that basic definition of cloud. This leads us to two important statements that we need to keep in mind:

  1. There are multiple versions, or types of clouds.
  2. All of them share the same fundamental traits that make them, well, clouds.

So what is that common basic definition?

Here in the United States, scientific standards (and definitions) and made by the National Institute of Standards and Technology (NIST), located not far from my home near Washington, DC.

NIST has published a definition for Cloud Computing, and for once I completely agree with it (by the way, this is the only definition of Cloud Computing used by the Federal government).

My shortened version of the NIST definition:

Italic text represents quotes taken directly from NIST, the remainder is my own notes and comments. Note that this is only a shortened, edited version of the full document.

In order to be considered cloud, a service must be (at a minimum):

On-demand self-service. “A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.”

Quite often, these actions are also done without any human interaction on the client’s side as well (the Cloud-aware application allocates resources for itself and releases them back when they are no longer needed).
Resource pooling “The provider’s 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.”

This pooling of unused resources allows the provider to rapidly shift resources between different consumers’ workloads, providing consumers with rapid access to additional resources by demand.
Rapid elasticity “Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.”

Just to dispel some false claims: by rapid we mean within seconds to minuets (not in days as some not-so-cloud providers offer), and an interesting interpretation of unlimited I ran across is “Allowing the consumer to provision 1000 times the minimum amount of resources”.

Cloud types (or Delivery Models)

While the above are the basic traits that are mandatory to every Cloud service - we also distinguish between the different types of Cloud services (like we identify a definition to a meteorological cloud, and then continue to name the individual cloud types).

Cloud services are divided into the following, ordered in a descending order of customer flexibility:

Software As A Service (SAAS) “The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.”
Platform As A Service (PAAS) “The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.”

Note that in order to be considered cloud, the PAAS provider must enable the aforementioned Rapid Elasticity - meaning that the consumer application will be seamlessly granted more and more resources by demand. If your resource usage is capped by the provider it is a likely indication that you are not running on a Cloud.
Infrastructure As A Service (IAAS) “The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).”

Cloud ownership (or Deployment Models)

In addition to the above definitions which establish what a Cloud is, and what types of clouds are available - there is also the definition of where it is located (and by who is it operated):

Private cloud The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise.
Community cloud The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise.
Public cloud The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
Hybrid cloud The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).

Final Thoughts

Cloud Computing is an exciting new concept that opens for us a world of possibilities.

But exciting as it may be, it is not a silver bullet to solve all of our problems (just a good chunk of them). As with everything we do - those who exercise careful thought and consideration will find for themselves how and where it offers value to them.