Different Flavors of Utility Computing (GRID vs. Cloud)
Utility computing (also known as on demand computing) is the packaging of computing resources, such as computation and storage, as a metered service similar to a physical public utility (such as electricity, water, natural gas, or telephone network). This system has the advantage of a low or no initial cost to acquire the hardware as computational resources are essentially rented. As utility computing is gaining more wide adoption and traction there is lot of discussion around utility grids and computing clouds. There is no formally accepted definition of cloud computing and grid computing. Lots of time people use the two terms interchangeably. I thought it would be a good idea to understand the differences between the two fundamentally different models used for providing utility computing.
Concept of grid computing has been around for a while, a traditional grid makes several distributed computers connected together to form a big logical computer which can handle large amount of data and computation. To the user the grid appears as one big machine which can handle different jobs. So traditional grids are physically separate machines which are connected together logically. The applications on grids run in a logically shared environment where grid manager manages the jobs. In grid computing a job is submitted to the grid manager and the grid manager breaks the job in different parts and distributes it to different nodes. There are several frameworks available for writing grid applications and also several software vendors provide tools for running software on grids. Several companies, like IBM, HP, and SUN have on demand solutions using grid computing concept.
Cloud computing is relatively newer concept and it has become popular recently with the availability of Amazon EC2 environment. Cloud leverages virtualization technology and in essence in cloud computing there is a logical separation between different nodes, each node appears as a different physical machine to the user. Instead of grid software managing the jobs in case of cloud computing the virtualization technology makes it possible to have each node appear as separate physical machine allowing user to load custom software and operating system on each node and configure custom firewall rules for each node. Currently only Amazon and Flexiscale are the two companies who are offering the cloud computing to external users. IBM and Microsoft have made announcements to make cloud computing available in 2008-2009 timeframe.
Since there are no formal definitions and people can argue that cloud is a special purpose grid or visa versa, I think from implementation perspective it is important to understand that utility computing comes in mainly two different flavors. One is logically connected devices which may be physically in different locations; second is logically separate devices which may be in the same location. I believe that the second model of utility computing (Cloud Computing) offered by Amazon EC2 provides more security and flexibility for running different type of applications.
Microsoft Cloud Computing Announcement
Wikipedia definition: Grid Computing
Wikipedia definition: Cloud Computing