Grid computing describes the sharing of computing resources by organizations and is most common with high performance computing applications that require a great deal of CPU power for a short time. The grid itself is the collection of servers and software that together enable participants to access each other’s systems in a secure fashion.
Grid computing differs significantly from utility computing in key respects. First, grids are not open to the general public, but require you to sign up and add your servers to the grid. Further, grid systems require applications to be built specifically for the grid, usually using a set of APIs specific to the grid being used, and as a result the application is no more scalable or portable than if you owned the servers yourself. Lastly grid systems provide no support for building the infrastructure necesary for web applications and are not designed to host applications 24/7.
High performance computing applications like weather models, integrated circuit simulations and derivative valuations have traits that make them ideal for operation on grids. They have a distinct end to their run, a result, and once the result has been produced the application is terminated until the next time it’s needed. Between runs, the computing resources are idle. More importantly, because these applications are computationally intensive, they can be broken down into numerous almost identicle processes that require minimal communications, meaning the greater the amount of computing resources used, the quicker the result will be generated. And, ironically, the longer the resources will sit idle.
Assume for a moment that you’re the head of a crash test simulation project. You’ve got large data sets from each run that need to be interpreted by engineers before you can run the next simulation. Your budget allows for 50 servers with which your application run takes five days. However, a grid might allow you to use 500 servers which could complete your application in less than a day, giving you more time to plan for the next run. And faster itteration leads to better design. The only cost to you is that you have to let other users of the grid “borrow” your computing resources when they’re idle. Therefore, operators of high performance computing applications find grids exceptionally useful.
Web applications operate differently because they’re transactional in nature. They’re broken down by function into components that are dissimilar and which need to communicate frequently. Applying more resources doesn’t produce results faster but rather allows for processing more transactions. Therefore, operators don’t have “idle” resources to add to the grid. And, because of the frequent communications between components of the application, an additional set of services is required to allow connections to be established and maintained.
Utility computing goes beyond grids and addresses the additional needs of web applications that challenge IT today.