Sam, in his thoughtful blog, says “The Cloud is what The Grid could have been”. Made me think a little bit – actually a lot. IMHO, “Cloud is the next evolution of virtualization” – let me iterate …
- Grid is about distributed processing – either task parallelism or data parallelism – i.e. break a problem into small tasks and run them in parallel (task parallelism) or run the same task on as many data sets as possible & then coordinate the results (data parallelism). Cloud computing is neither. The confusion could be because cloud can be used for HPCC but that is an after effect.
- Virtualization, OTOH, is making computation free of spatial and temporal constraints. In fact it also has the property of making computing independent of the hardware and software stack, which is another aspect of cloud computing
- Even licensing models become different in the virtualization world, not so in grid models
- The most important difference, in my opinion, is the evolution of the VM to support the cloud model. As I had written in an e-mail thread, “while VMWare cannot introduce southbound APIs, they can add Northbound APIs; even some east-west i.e. between VMs for coordination, state et al. IMHO, we have virtualization 2.0 ;o) While hardware mediation and partition layer were the original virtualization propositions – with consolidation and utilization as business value propositions, the charter of the domain has evolved a lot since the advent of “cloud computing”. Mobility of VMs (static or dynamic), the various aspects of HA, management, locality et al plus just plain old resource balancing will necessitate a bigger role (and hence more interfaces, programming models et al) for the lowly VM layer !”
- As Sam mentions, Cloud and grid are about location independence (i.e. where the actual computing happen), locality (execute code where data is) as well as mobility (of code and data). Moreover,both have on-demand characteristics – i.e. computing resources can expand (within limits, of course) and more importantly, contact (but less so in the world of grids and more so in the cloud world)
- But in many ways, grid is about maximizing the resources, i.e. run in as much (and as many) instances as possible, while the cloud focuses on acquiring just enough resources to perform a computing function, at any point in time, and releasing excess resources – a just-in-time philosophy.
- In short, we cannot see Cloud as an extension of grids (because of the similarities in locality – actually non-locality – and elastic nature) but we should look at cloud computing as the evolution of virtualization. This distinction is not theoretical, but there are pragmatic implications – the architecture (the data, control and management planes) and the artifacts thereof, will reflect our conceptual view of the domain. So it is important that we get the conceptual underpinning right.
- Grids act on local resources and their predominant problem is scheduling. The focus of cloud computing is resources, processes, systems and data. We can see this from a simple conceptual view of the cloud domain (shown below)
- …even if monkeys are running my data center, I want to make sure they are managed and monitored uniformly (by open standards) and there are lots of bananas for them ;o) And we shouldn’t need to feed different types of bananas for monkeys from different herds …