Utility Computing vs. Cloud Computing

I have spent some time thinking about the functional differences between the terms Utility Computing and Cloud Computing, both as I think they are used today, and as how they could be used to differentiate a different class of service.

I see Utility Computing as a service provider that sells computing instances, computing time slices, networked and “local” storage, computing services (Map Reduce, Key Stores, Message Queue), the network bandwidth needed for this, and ways to reliably target traffic to your site to a single or multiple machines (floating IP address or load balancer).

The way Utility Computing service providers deliver these things to you gives you details about the instances, the volumes, the descriptor names for their network services, but the important point is that you are given a label for a real VM instance on real hardware.  You are tracking something that is essentially a fixed service; an EC2 instance gives us it’s instance ID number (i-12345678), and with that we can reference only this one particular assignment of the physical hardware and Xen VM instance.

To contrast this, a Cloud Computing provider would give you an idealized system, and the actual VM instance or real hardware behind it would forever be abstracted.  You would know you simply have a MySQL database with two 200GB network attached volumes in a RAID 1 configuration, with 32GB of RAM and 20 CPU units, and the Cloud Computer provider gives you a label to the stored concept of this goal, which could presently have an actual instance behind it, or not.  Whether it has a running instance behind the goal, depends on its current configuration state, which could change at any time.  The Cloud Computing provider would ensure that a new instance, of the correct specification, is brought back under the goal, and that in a pool of 20 machines, each can have a several volumes assigned to respective device paths, and when a replacement instance launched, all volumes will be re-attached in their proper place.  The machine’s configuration process is initiated with the knowledge that this machine is part of a pool, and may load only a certain data set (sharding).

I see the difference between having a label for a machine instance, and having a label for the goal of what you want any instances behind that label to perform, and I believe this is the difference between a useful labeling of Utility Computer and Cloud Computing.  I think this underlines my feeling that, at present, Amazon’s EC2 service is a Utility Computing service, and is only starting to become a Cloud Computing service with their new service RDS (Relational Database Service), which allows you to specify a goal for a database system, with its own backup and restore automation, though I haven’t launched one yet to see if this offering still leans more towards Utility or is delivering the Cloud abstraction and management as presently offered.

Presently, if you want Cloud Computing, you have to implement it yourself, or pay someone to help implement it for you so that your computing goals remain functioning even as the underlying hardware has failures, is replaced (perhaps with hardware in a different data center or region) and re-configured so that the goal can be picked up with a new set of hardware, and still serve the same function.  I believe that is the reason Cloud Computing creates so much interest, and it appears to become a foundational pillar of the next wave of computing.

Advertisements

3 Responses to Utility Computing vs. Cloud Computing

  1. Adron says:

    Followed your link off of my blog entry on the cloud being dead. Great write up – and some valid points you have there.

    I do have some contention with the idea that RDS, or any relational database as they exist today are more “cloud” oriented than an EC2 instance, but in the end they’re all part of what cloud computing – or better yet utility computing – has to offer.

    I’m still studying up on some of the innards of RDS – will have to provide a blog entry on it in the near future! 🙂

    • Geoff says:

      Ah, I didn’t mean to imply that an abstracted system that ran MySQL was more “cloudy” than RDS, but that RDS is not a comprehensively specified layout, that is tuned to your organization’s specific needs.

      RDS is a generalized service, that has configurable properties, but can never be the same as a custom specified solution, which is exactly the configuration you need to best solve your computing problem.

      What I see Cloud Computing as, is a way to specify what kind of resources you want to rent/use, but with an abstracted identifier, so no matter how often those resources are re-allocated behind the scenes, you still see the same instance, for all the resources, including storage.

      This means if you have an instance running in a given datacenter, and that datacenter goes dark, then the resources would be brought back to you, from the latest snapshots, in a new region, and keep it’s same labels and instance information.

      This sort of abstraction is what I think Cloud Computing should offer above and beyond Utility Computing, which is a good start towards moving forward, and we have already passed significantly with a lot of today’s current offerings.

      I also think that CC can change the thing being managed from the hosts to the applications and cost-to-performance ratios, and that this has also already begun, but is not yet comprehensive.

  2. Adron says:

    Yeah, good point in regards to RDS. Good description you have worked up really – it’s a good grasp of the somewhat fuzzy idea of cloud computing. I keep learning more and more about it as I work more and more with it, and advocate for “cloud computing” solutions. I however end up so often explaining the core fundamentals – which kind of triggered the blog entry I wrote. 🙂

    It’s tough going over the same basic topics over and over and over again. I do admit though, I like your description of cloud computing. It’s a good and accurate one in my opinion. It all really does boil down to abstracting things – the question and conflict often comes up at the point of “what’s being abstracted”.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: