Are you Cloud Computing yet?

I still believe something I said some time ago about Cloud Computing.  In a short post I wrote in March of 2009 I said, “Cloud Computing as a paradigm shift is a significant technological evolution that has the power to drive a revolution for how businesses and technology relate to one another and operate together.”  As the market matures for Cloud Computing it has become more clear what it makes a service a cloud computing service.  There are a few common characteristics of a software, platform, or infrastructure services that have surfaced over time.

On-demand Resources. The concept of using only what you need when you need it.  There is no perfect demand curve.  There is going to be some waste.  But, one should try to minimize over or under provisioning through the use of on-demand deployment techniques.

Pay-Per-Use.  When you provision on demand resources you will pay for those resources at a reasonable granularity relative to the SLA you need.  You should expect to pre-pay longer when you need much stronger SLAs from your provider.  

When you compare public cloud use versus private cloud computing deployments.  What changes is the granularity at which you operate fiscally.  For an off premise public cloud like EC2 you might operate and pay by the hour.  For and Off/On-Premise in a private cloud you might operate by the physical node with much longer deployment times and life-cycles.  But, well managed, it can still be pay per use but at a monthly or even annual granularity.

Elastic.  The ability of a deployed resources to be scaled up and down relative to demand.  This is also related to billing but you may find that for service providers to provide very strong SLA’s you must reserve capacity and be willing to pay for that weather you use it or not.  Examples of this are Amazon EC2 reserved instances and nScaled’s disaster recovery as a service.

Scalable.  This related to elasticity.  It’s the ability of a system to grow in response to demand for more transactions.  People often expect a cloud to be magically scalable and many services unfairly promise this sort of thing.  But, scalability is much deeper than your IaaS providers cloud.  It has to do with how the software you install is written and runs.  See the recent article Building for the Cloud is Building for Scalability for more thoughts on this matter.

Highly Available.  The characteristic of a system that dictates that there are zero single points of failure.  This means that you could pull any one (or sometimes more) components completely out of the system with no notice what-so-ever and it will keep operating in a normal or possibly gracefully degraded state.  One way to do the the process of going over any given deployment and discovering the availability problems I call SPOF (Single Point of Failure) analysis.  This is an architectural excercise done with the operations, business, and development teams that related the services, servers, and software together and identifies any SPOF’s (single points of failure).

Individual components do not necessarily need to automatically recover to achieve high availability. But, at the very least, they should be monitored and people should be notified so that corrective actions can be planned.  More than any other piece actually achieving high availability will provide the best night-time so you can rest medicine.

If the service (either IaaS, PaaS, or SaaS) does not have those three features then it, in and of itself, is not really Cloud Computing.  It may be using or be a component of a cloud computing effort.  It may be on its way to becoming cloud computing.  But, in and of itself, it’s not cloud computing yet.  Let’s discuss an example.

A straight-forward example of this would be launching a single EC2 AMI and asking the following question.  Is using an EC2 AMI to host your website really Cloud Computing?  If you subscribe to the requirements here then no, it is not.  One EC2 AMI, no matter what you say about it, isn’t in and of itself, cloud computing.  It uses cloud computing components but the web site (or SaaS if you prefer) is not cloud capable because if I (or amazon) turns off the EC2 AMI then your website will fail.  But, if you combine it with more EC2 instances, AWS load balancing, good DNS, and the web site application itself can scale over multiple instances without creating more SPOF’s then nice work!  It is rocking the cloud.  Now your cloud computing!  Yes, I verbed the phrase there.  That brought to mind a comic strip I saw some time ago that went like this:

Calvin: I like to verb words.
Hobbes: What?
Calvin: I take nouns and adjectives and use them as verbs. Remember when "access" was a thing? Now, it's something you do. It got verbed. Verbing weirds language.
Hobbes: Maybe we can eventually make language a complete impediment to understanding

Are you “Cloud Computing” yet?