Defining cloud computing: It's all about the layers

Cloud concepts can be pretty confusing. But when you tell a small business owner or early-stage startup it means not having to spend a lot of money, it gets simple fast.

Denise Deveau wrote about this recently in the Globe and Mail (and I got quoted a bunch, which was nice.) But defining what “cloud” really means is a contentious subject. At the upcoming Cloudcamp in San Francisco (running before Structure, and organized by the energetic Reuven Cohen) this is sure to be a subject of debate.

My overly simple soundbite for the Globe article was that cloud computing was “having computing resources available to you when you don’t own the machines.” But that might get me into trouble: There’s a taxonomy of on-demand services, from platform-as-a-service to hardware-as-a-service. And then there’s grid computing. And of course SaaS gets lumped in with this.

So I’m going to try a more detailed description:

Cloud computing means having a set of abstracted resources available to you, and not worrying about what’s below that abstraction.

Put another way, what I’ve found is most relevant is the layer (think OSI model) at which you lose control.

  • With Software as a Service, for example, you just use someone else’s app — you’re at “layer 8”, the content level. You’re not writing an app, just using someone else’s.
  • By contrast, with Apex or Coghead’s Platform as a Service you’re programming in their language. I’d argue even Yahoo Pipes or Popfly are forms of this, albeit with visual “coding” methods.
  • With Google’s App Engine, you’re running programs written in a mainstream language that’s been tailored to that environment. In Google’s case, that’s Python; but Yahoo’s upcoming service model uses YML as a markup language to extend PHP. Call these Interpreter as a service.
  • One layer below that is the Service as a Service (yikes!) — someone like Heroku, who will give you any services you want, as long as they’re Ruby on Rails.
  • Then there’s Amazon’s EC2, which is basically a sandboxed machine where they get to pick the kernel(s). In other words, Hardware as a Service.
  • Below even that is a cloud created with something like 3Tera or Elastra, where you run the cloud, so you can touch the hypervisors but others can’t. Maybe that’s Cloud as a Service.

The lower you go, the more controls (and more headaches) you get. The higher you go, the less you have to worry about but the more constrained you are.

This definition will probably get me in trouble too. The point is we can’t just say, “cloud computing.” We have to consider the context of the layer of abstraction — a stratosphere, troposphere, mesosphere, to keep the atmospheric analogy and so on — as an essential part of any discussion on what clouds are.

Either way, if you’re in the Bay Area on the 24th, plan on stopping by.