Posted by Adrian Mouat, 01 April 2009
The term “Cloud computing” has a seen an enormous rise in popularity since its inception in 2007. This article highlights the slow retreat of the terms Utility computing and Grid computing against the sudden surge of Cloud computing.
But what exactly is the difference between Cloud computing and Grid computing? A lot of people have written about this, but few have come up with a definitive answer. Of course, this is largely due to the irritating vagueness surrounding the definition of both terms. However, through the rest of this post, I will try to highlight what I consider to be some of the main differences.
A facetious definition could be “Cloud is what the cool Web 2.0 kids use, whilst Grid is for the old academics with their pipes and tweed coats”. However, there is a grain of truth to this – there is an irrefutable overlap between Cloud and Grid computing but a stark difference between people who know what Grid computing is and people who have only heard of Cloud computing.
Both terms centre on the idea of viewing computing power as a service (Grid computing takes its name from an analogy with the electricity grid) supplied by a typically external provider. In both cases the end-user does not want or need to concern themselves with the actual hardware used by the provider. Grid computing aims slightly further than the Cloud by also pursuing the sharing of resources (computational, data or storage) between entities (often across organisational boundaries), whilst hiding the hardware and protocols used from the user.
One of the main drivers to the birth of Cloud computing was the need to scale Web applications up in response to sudden changes in demand – for example to cope with sudden news exposure. These upturns in demand can often be very short-lived, making it uneconomical for companies to purchase enough dedicated hardware to cope with peak demand. The solution provided by Cloud computing vendors such as Amazon EC2 allows on-demand spawning of new servers to almost instantaneously deal with such surges. Grid computing is also designed to deal with the problem of peak demand, but in a slightly different way – it views processing requests as individual tasks to be dealt with on a large computing cluster (or clusters) with a batch job scheduler (for more discussion on this see the RightScale blog). This view stems from the traditional (and largely academic) HPC world where users submit long-running jobs and receive the results hours or even days later.
Another important difference is in terms of implementation: Cloud computing uses virtualization* to achieve a standard on which users can run their applications, whilst Grid attempts to bring heterogeneous platforms (both in terms of OS and hardware) together to solve problems. The use of virtualization allows Cloud computing to sidestep a whole host of issues that Grid computing has to contend with, such as the availability of software libraries on different platforms.
If we accept these as the main differences between Grids and Clouds, what does this mean for the future? Some analysts have argued that Grids are dead and that “Clouds are Grids done properly” or Cloud computing is “the user-friendly version of Grid computing”, but things are not as clear-cut as any of these statements suggest. This is an argument for another post, but consider the following: Is it possible to use Clouds within Grids? What about vice-versa? What about the issues that Grid developers have been grappling for years with (e.g. security, trust, SLAs) – how are they solved in a Cloud computing context?
Thanks to Craig Thomson, Kostas Kavoussanakis and Mike Jackson for discussion and comments.
* See also: Blogs and Discussion: The Open Source and IBM:The stuff of clouds.
Tags: Grids and Clouds