Kate's Comment

Thoughts on British ICT, energy & environment, cloud computing and security from Memset's MD

(Deprecated) The definition of cloud computing

This post has now been superseded by my updated managed hosting providers like my company, Memset, do but taken to a shorter timescale. We can rapidly provision virtual severs, dedicated servers or server clusters, and rent them to customers on flexible terms (eg. monthly contracts). Utility computing is the extension of that concept but instead of referring to servers it is the provision of chunks of general computing resources (CPU, RAM, disk etc) in real-time response to demand, and on short time scales such as hours, minutes or even seconds (and billed for as such).

In other words, utility computing is the provision of computing resources as a utility, in the same way that the familiar utilities (electricity, water, gas) are provided; on a pay-as-you-use basis. Sometimes utility computing it is called “on-demand computing” – the terms are synonymous. In a utility computing model the following resources would be available “on tap”:

  • CPU time
    • Cores
    • Clock cycles per second
    • Floating point processing vs. integer processing (MIPS vs. FLOPS)
  • Data storage (RAM, disk etc)
    • Data space (bytes)
    • Maximum I/O throughput (bytes per second)
    • Maximum transactions per second (I/O operations per second)
    • Error correction level
    • Redundancy (eg. RAID level)
  • Bandwidth / connectivity
    • Throughput (bytes per second)
    • Latency to specific locations
    • Network redundancy

Grid -> Utility -> Cloud

So, how does utility computing relate to grid & cloud computing? Those terms are often used in the same breath as utility computing, or the three are confused with each other. While interconnected, though, they are different concepts:

  • Grid computing is a technical approach spanning an application across multiple computers within one administrative domain (one provider, not necessarily one location).
  • A compute grid is a collection of computers within one administrative domain capable of hosting a distributed application.
    • Grid is about infrastructure.
  • Utility computing is a sales approach, treating computing resources as a utility in the way we treat the familiar utilities (water,gas,electricity etc.). A utility computing provider would sell resources on their own grid(s).
    • Utility is about business relationships.
  • Cloud computing means an open market for computing resources; utility computing applied to multiple grids.
  • A compute cloud is a grid spanning multiple administrative domains with applications able to move between domains in response to cost and SLA requirements.
    • Cloud is about scale and the computing resource market.

Is Cloud Computing already here?

Amazon’s Elastic Compute Cloud is actually rather mis-named, and is really just a very large utility computing facility that spans multiple data centre locations, all of which are within one administrative domain (ie. Amazon’s massive grid).

Google’s App Engine is also not “cloud computing”, but instead a somewhat constrained sort of utility computing (you can only run applications specifically coded for the app engine). Some might call it “IT as a service”, but that term is rather too vague also.

Arguably there is only really one “cloud”, which is the mass-market for utility computing resource. To state “I am going to host this in the Cloud” would mean that you are going to run your app on one (or many) of the available utility computing providers.

Globe-trotting applications (aka. ‘Follow the moon’)

The ultimate vision of cloud computing is where you do not actually know where your application is being run at any one time. You would specify your SLA (eg. uptime, latency to a certain location) requirements and certain financial limits, and then give it with those specifications to some sort of broker. The application would then be able roam between administrative domains (eg. a data centre, a collection of PCs like Seti@Home, a super computer, your neighbours’ home appliances, etc), automatically seeking out the most cost effective resources that fit within the SLA requirements.

We are far from achieving true “cloud computing” at the moment, but we do have a number of utility computing providers coming online. As business slowly learns to let go of their attachment to tin and the concept that “this application run on that box” or even “this application runs in that data centre” then we shall see a massive commoditisation of the marketplace. This in turn will most likely result in the centralisation of compute resource into a small number of very large data centres in geographically strategic locations, and will enable much “greener” computing.

Cloud is not the most efficient form of computing purely because of optimal usage of IT resources, either. In the ultimate vision of cloud, one can envisage applications roaming the planet East-West, following the night time to take advantage of cheaper electricity prices (there is a surplus of power generation at night, and it is inefficient to transport electricity long distances at present), and lower temperatures (meaning less power for cooling).

Update: But isn’t Cloud also about IT services / SaaS?

Here I am merely trying to pin down one aspect of the poorly defined mess that is “Cloud”. In this article I am specifically talking about compute & storage resources (hence ‘Cloud Computing’) and am not attempting to define our contain the other areas to which many apply the same term.

I believe that when most people talk about “Cloud” they are referring to the phenomenon of increasing centralisation and commoditisation of ICT services – “everything over the wire”.

We need more terms; what I describe here is the mass-market for utility compute resources – the “power grid” of computing, if you will. What you are talking about could be called “Cloud Services” perhaps – services run on a compute utility and themselves delivered as a utility in a standardised manner. The problem I have with that is that while compute resources are interoperable, services are generally not (my compute and storage is directly comparable/interchangeable with Amazon’s, but Kashflow.co.uk is not so easily interchangeable with Xero.com).