Wednesday, August 25, 2010

On a Cloud Services SIG Meeting of the SDForum.

Yesterday, I attended a Cloud Services SIG meeting of the SDForum on Migrating Enterprise Apps to the Cloud. Two companies -- Makara and Appirio -- presented their approaches. Makara provides a platform through which you can create private clouds, irrespective of the underlying IaaS cloud, and has an interesting method of defining cloud computing by negation. Appirio described the issues in migrating enterprise apps to a specific PaaS cloud, namely Force.com.

Dave Nielsen, one of the co-chairs of the SIG, threw open a challenge at the conclusion of the session. Can we work together to provide a concise 5- or 6-word/phrase characterization of cloud computing? In the more than two years of his organizing cloud camps, he has encountered various different definitions. He is preparing one himself and would find others' views valuable.

Here's my attempt at providing a succinct definition, listing what I consider are orthogonal characteristics:
Cloud computing refers to secure compute and/or storage and/or networking resources that can be obtained on-demand, through self-service, and that are elastic.
The individual characteristics can be elaborated as follows:
  1. secure. If the subscriber of the service cannot be assured that his environment is kept private to his project team members, then the usability of the service is simply not there.
  2. on-demand. If a service cannot be obtained as and when required, it is not a sufficient enough improvement over traditional enterprise IT practices.
  3. self-service. An individual must be able to obtain the service at the time of his choosing, rather than be at the mercy of an another, an IT administrator. This kind of instantaneous self-service has substantial implications for project execution.
  4. elastic. Once obtained, the subscriber must be able to scale the service up or down, depending on the needs of the problem being solved in the cloud. [measurable. If the service being obtained cannot be measured by the subscriber, the subscriber cannot, at his convenience, alter the parameters of the service.  One can argue that elasticity implies measurability. To quote Lord Kelvin: "If you cannot measure it, you cannot improve it." ]
  5. compute-network-storage configuration. There are problems that can be solved by a single CPU with some storage, but there are increasingly many more problems that can exploit a cluster of CPUs, a bunch of storage devices and effective networking among the former two. This characteristic, with greater control of intrinsic parameters of the service, is more relevant to Infrastructure as a Service (IaaS), whereas all the other three characteristics listed here applicable to all the NIST-defined deployment models: IaaS, or PaaS or SaaS.
Note that multi-tenancy is implied; if any individual can obtain a service, another one can obtain too and , thus, multi-tenancy is implied. However, security cannot be left unmentioned in any definition.

Saturday, August 21, 2010

NIST's Cloud Computing Definition and Deployment Models

Of the various definitions of cloud computing floating around, I perceive that the NIST definition is the one most referenced. NIST prescribes 5 essential characteristics of cloud computing, 3 service models and 4 deployment models.

The essential characteristics and the service models are well understood and well accepted. The deployment models deserve some additional discussion.

From an accessibility point of view, the private, community, public and hybrid deployment models share the following structural properties [All cloud deployments are multi-subscriber; multiple users provide the strength of cloud computing economics]:
  1. Private clouds are dedicated [to one enterprise], but multi-subscriber [to enterprise's employees and/or partners].
  2. Some cloud deployments are multi-tenant and multi-subscriber; most of the public clouds fall into this category. And, one can imagine private clouds hosted on public IaaS clouds.
Now, the four deployment models that NIST prescribes really are specialized instantiations on top of the dedicated & multi-subscriber or multi-tenant & multi-subscriber properties. For example, as NIST definition itself notes, a community cloud can be economically hosted on a public cloud. And, the hybrid clouds include traditional IT implementations in addition to [multi-tenant and] multi-subscriber clouds.

What is the upshot? While multi-subscriber quality is essential for cloud computing, multi-tenancy improves that economics in an orthogonal dimension, and the resulting economics is multiplicative! We need a characterization of cloud platforms based on such orthogonal considerations. Of course, the key for increasing adoption of multi-tenant solutions is security assurance [See a related blog post by Ted Schadler of Forrester].