Etherplex

Rick Dillon's home on the net…

A Few Thoughts on “The Cloud”

without comments

A question was posed to me recently asking what “the cloud” is (in the internet sense).  I was going to pen a long response, but in the spirit of not writing emails that are too long, I will instead post this (following Rule 6 in the aforementioned article), Let’s start with a working definition of the cloud.
Let me start by saying that when I first was sent on a mission to understand the cloud computing concept, one of my earliest conclusions was that it was ill-defined and many people used it in a bunch of ways, rendering the term almost meaningless.  Larry Ellison famously commented in 2008 venting the same frustrations: 

“The interesting thing about cloud computing is that we’ve redefined cloud computing to include everything that we already do. I can’t think of anything that isn’t cloud computing with all of these announcements. The computer industry is the only industry that is more fashion-driven than women’s fashion. Maybe I’m an idiot, but I have no idea what anyone is talking about. What is it? It’s complete gibberish. It’s insane. When is this idiocy going to stop?”

That might have been more true in 2008 than it is now, because I now feel that it is well defined, but is nevertheless used incorrectly quite often.  One of the reasons Ellison might have reached this conclusion so readily is that the cloud makes readily available what companies like Oracle, Sun and IBM have been selling to high-end customers for years.  So, what exactly is cloud computing?

In my way of thinking, a cloud has three main properties:

  1. Clouds are vast collections of hardware that are networked into tiers at the rack and datacenter level, usually globally.  Microsoft, for example, has six global locations for its Azure Cloud datacenters.
  2. Clouds are composed almost entirely of commodity hardware (i.e. no “big iron” as you’d expect to be sold by Oracle or IBM for some special purpose).  Another way to think of this one is that they’re mainly composed of the same type of components that you’d find in a desktop computer.
  3. Clouds allow for elastic computing.  While a single site’s traffic and downtime may be hard to predict (due to, say, the “Slashdot Effect” or some random hardware failure), when taken in aggregate across thousands of sites and servers, traffic and failure become much more predictable.  By aggregating many single sites together on a large collection of servers and allowing resources to be allocated to sites on-demand, loss of service due to traffic spikes or hardware failure can be mitigated.

There are many other things clouds do, mind you.  You will find people talk about “IaaS”, “PaaS” and “SaaS” in the context of cloud computing, but all these mysterious concepts are just variations on the idea that you can build web sites and services on top of a vast collection of compute resources located in data centers around the world.  Another oft-mentioned concept is that of redundancy, which cloud computing offers, of course, but I do not mention it because it is a trait that so many other computing platforms offer.

I came back from a conference a few weeks ago in which a brief was given summarizing cloud computing for executive types, and the take-home conclusion was that “Cloud computing is an evolution, not a revolution”; the argument was that it didn’t materially affect the normal course of business for technology companies.  The reason I mention this is that I think there are least two reasons that cloud computing is a revolution.

First, supercomputing has traditionally not been a field where some kid in his basement can compete in any meaningful way with a large corporation.  The investment required to buy, operate and maintain supercomputer-quality compute resources has dropped over the decades, allowing more competitors into the field, but cloud computing makes developing and testing serious algorithms possible from the comfort of your armchair on a modest laptop.  For roughly $80, you can rent the compute power in the Amazon Cloud to align a human genome in an afternoon, for example.  This task would take weeks on everyday hardware.  The moral of the story here is that markets that were formerly not very competitive due to the cost of entering them are now subject to a whole new source of competitors using the cloud as their platform for development and deployment.  This represents a revolution in the market dynamics.

Second, cloud computing is based on cheap, commodity hardware.  This means that it has ushered in the common use of algorithms that scale out, rather than scale up.  That is, the software being developed today for the cloud doesn’t rely on the use of massive computers with hundreds of gigabytes of RAM to operate.  Rather, it can make use of a variable (but can be quite large) number of more modest computers that can be dynamically added and removed as needed to ensure a good quality of service.  These kinds of algorithms can be more challenging to write, and at least require different abstractions than conventional multi-threaded algorithms.  These changes represent a revolution in the computer science being used to develop high performance applications.

There’s another set of points related to this about the reliability of the cloud in light of Amazon’s recent EC2 troubles, but that’s for another time.

Written by Rick

April 23rd, 2011 at 9:57 pm

Posted in Uncategorized

Leave a Reply