Dmitriy Setrakyan manages daily operations of GridGain Systems and brings over 12 years of experience to GridGain Systems which spans all areas of application software development from design and architecture to team management and quality assurance. His experience includes architecture and leadership in development of distributed middleware platforms, financial trading systems, CRM applications, and more. Dmitriy is a DZone MVB and is not an employee of DZone and has posted 57 posts at DZone. You can read more from them at their website. View Full User Profile

Grids vs Clouds

05.12.2009
| 7211 views |
  • submit to reddit

I constantly run into conversations where people use the word Grid and Cloud interchangeably without actually understanding what each one really means. When I actually ask what do they mean by Grid or Cloud - the usual answer is that they are the same. Well, they are not.

Cloud Computing is on-demand provisioning of virtual resources and services around those resources. For example, if a cloud provider wants to provide a data storage (like S3), then the same provider also needs to provide APIs to access and manipulate this data storage. If a cloud provider allows for allocation of virtual instances, then the same provider must provide APIs to create images and deploy them on those instances.

Grid Computing, on the other hand, has to do with providing ability to join multiple computers together for the purpose of solving computational problems. It deals with such issues as auto-node discovery, dynamic deployment and redeployment of a problem, topology and collision resolutions, load balancing and monitoring, etc... A grid should allow you to take a problem, determine the optimal node topology for it, dynamically deploy the problem onto the chosen topology, provide means to divide the problem into multiple parts for parallel execution, distribute the problem within topology, gather results, and return them to user. In the middle of all that, a grid should automatically scale computations as load changes by transparently utilizing additional nodes while remaining fault tolerant.

There is an obvious connection between grids and clouds. If clouds let you easily deploy your application on 20 nodes, then grids should easily connect those applications into a cluster. This makes it absolutely vital to allow users seamlessly grid-enable their applications on the clouds. At GridGain we are working on making the process of gridifying cloud applications as transparent as possible. For example, with GridGain 3.0, user applications will transparently auto-discover each other on a cloud, without any additional effort or configuration. On top of that GridGian will allow combining different clouds into one joined topology - this way you can have a few computers from your local datacenter work together with virtual instances started on a cloud.

So, to summarise, in majority of the cases (with some exceptions) cloud computing has to do with providing virtual hardware resources together with APIs that allow access to those resources. Grid computing is at a higher level - it is the middleware that allows you to join multiple physical or virtual resources together to solve computational problems in parallel fashion.

From http://gridgain.blogspot.com

Published at DZone with permission of Dmitriy Setrakyan, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Alex(JAlexoid) ... replied on Wed, 2009/05/13 - 4:33am

In practice there are quite a few distinctions. This is what I have come to understand.

 A grid serves a computational purpose and is an evolution of supercomputer(the things that they do scientific calculations on). However it does not require extremely high speed connections between nodes and allows geographical distribution. A grid serves computations and is theoretically application agnostic.

 A cluster serves processing purposes and is an evolution of mainframe(the stuff they still use for business calculations and transactions). As with the mainframe, clusters tend to have high IO throughput, same geographical location and high speed network between nodes. And in a cluster a common set of applications.

 A cloud is a hybrid. It's right there in the middle. Sacrificing dynamicity in resource allocation for raw speed. It's more than a grid, but less than a cluster. Although, the performance is rather good to have performance close to some clusters. And auto discovery and auto provisioning is also more native to the cloud, though grids have pioneered in that area.

 Although I might be catastrophically wrong :)

Nikita Ivanov replied on Wed, 2009/05/13 - 1:28pm

Alex,
Excellent point of view. I tend to agree more with Dmitriy's view (quite naturally) but I think your observations are perfectly fine. I tend to think that clouds are mostly "hardware" and grid is mostly "software middleware" - but that's just my way of looking at it.

Thanks,
Nikita Ivanov.
GridGain Systems.
www.gridgain.org

Philippe Lhoste replied on Mon, 2009/05/25 - 3:10am

Thanks for the good article (and the additional information by Alex). I must admit the meaning of "cloud" was a bit nebulous (ahem) for me so far, I am a little less stupid today.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.