Cloud computing is a hot topic today, and so all sorts of companies, technologies, and industries are trying to align themselves within the framework of cloud computing. Two common terms that people often associate with cloud computing are grid computing and utility computing. But, it’s often unclear how cloud, utility, and grid computing relate to each other - if at all. It’s also often unclear what people mean when they use these terms. For example, the US Government has a two-page document trying to define just cloud computing.
One way to sort through all this confusion is to go back to origins. Because these terms are used so commonly now, it’s easy to forget that cloud computing, grid computing and utility computing are metaphors. They are figures of speech designed to help us think about different concepts. So, rather than go into great detail in defining these concepts (we’ll leave that to the US Government), let’s take a look at what these metaphors indicate and see how that helps us think about how cloud, utility and grid fit together:
- Cloud computing: Cloud computing is about treating your computational workload like a cloud. It’s out there in the sky, somewhere - distant from you. It’s sort of fluffy and fuzzy, and you don’t care too much about its details. It’s just a big white blob, and the point is that you don’t need to know any more about it. Also, because you don’t need to know any more about it, this means that you can run any type of workload or heterogeneous job in the cloud. You shouldn’t be locked into a certain set of capabilities by moving to the cloud.
- Grid computing: Grid computing visualizes a large two-by-two lattice structure - a grid! It combines a large number of individual computational nodes and assembles them into a larger, cohesive unit which can solve a computational problem. Grids are typically uniform in structure, and grid computing implies distributing a computational job across a wide number of individual, uniform computers assembled together. Grid computing visualizes the interlinks between a large number of computers assembled together for a single purpose. It is good at solving problems that distribute out amongst its individual nodes. (Note that node is itself a metaphor. A node is a "centering point of component parts.")
- Utility computing: Utility computing is about treating computing power like a water utility or electric utility. Computing power is a commodity you can turn on and use as you need it. Then, at the end of the month, you pay a bill for how much you used. If you require a lot of computational power, you just turn on more and pay more. If you don’t use any of your utility, you might pay just a maintenance fee. Additionally, you can use your utility for whatever purpose you want. When you buy electricity from your electric utility, it doesn’t matter whether it’s for powering a CD player, a stove or a shaver - it just works. Utility computing should be the same.
Now that we’ve loosely described these terms, let’s see how they might fit together and how we can think about technology solutions in their context. First of all, it should be clear that cloud computing, grid computing and utility computing are not the same thing - even though lots of vendors would like to fit their products into the cloud computing category. But, it should also be clear that these things can work together. If you’ll excuse the mixed metaphors: A Grid of Clouds can provide a powerful Utility.
Let’s make this concrete by using Red Hat Enterprise MRG as an example. Red Hat Enterprise MRG integrates Messaging, Realtime and Grid technologies to provide a powerful distributed computing platform. MRG’s Grid scheduler, which is based on Condor, is designed to provide the ability to schedule any computational job or application to virtually any computational resource available - including public clouds like Amazon EC2, private/hybrid clouds built on virtualization technology or bare metal machines like dedicated servers or idle desktop workstations.
Let’s say that you have an application, say a Web server, that you want to run in the cloud. In other words, you want to be able to run the Web server but not think about where it’s actually running - it’s out there somewhere doing what you need it to do, but you don’t really care about the details or managing the underlying infrastructure yourself. You also want to run this Web server as if it were on a utility - if you need more Web servers, you just plug them in. And, you don’t want to have to plug your Web server into a Web-server-only jack - all your applications should work the same way in drawing computing power, and they should all work with the amount of power they require to function well.
Red Hat Enterprise MRG aims to allow you to accomplish all this by using MRG’s grid scheduler to schedule your Web server and other applications to run. MRG will then go out and acquire appropriate resources for you to run these jobs. It could be in your own private cloud built with Red Hat’s virtualization technology since MRG integrates with virtualization. Or, it could be on bare metal, or it could be at Amazon EC2 if you have no available capacity in your local data center. If you need additional Web servers, you can just schedule them with MRG’s grid scheduler and it will run them for you on an appropriate resource. If you need to consolidate or shut down Web servers because you no longer need as much capacity, MRG can manage that for you. And, if you have a job that needs to use tremendous computing power at once (many computers behind the scenes), MRG is designed to do that for you too because grid schedulers are good at that.
Going back to the concepts of clouds and grids, MRG demonstrates that a cloud provides access to a set of resources for an application. In this example, that set of resources is Web-serving capacity - whether at Amazon EC2 or in a local data center or elsewhere. A grid in this case, then, is a specific set of these web-serving resources. And, MRG’s grid scheduler schedules and manages this workload across specific cloud resources.
Because Red Hat Enterprise MRG includes the ability to talk to public clouds and integrate with virtualization (a foundational technology for building clouds), it enables users to treat their clouds as true utilities - sources of computational power that are available as needed, no matter the source. So, how do cloud, grid, and utility computing relate? To mix metaphors even more, you can build a utility grid across and through a variety of clouds.