Clustering is one technology used to create grid infrastructure. Simple clusters have static resources for specific applications owned by specific owners.
Grids, consisting of multiple clusters, are dynamic resource pools shareable among many applications and users. A grid does not assume that all servers are running the same set of applications. Applications can be scheduled and migrated across servers in the grid. Grids share resources with and among independent system owners.
At its highest level, the idea of grid computing is computing as a utility. In other words, we need not care where our data resides or which computer processes our request. We should be able to request information or computation and have it delivered as per our requirements. This is analogous to the way electric utilities work; without knowing where the generator is or how the electric grid is wired, we ask for electricity, and we get it. The goal is to make computing a utility, a commodity, and ubiquitous. Hence, it is called a grid. This perspective of utility computing is, of course, a ‘client-side’ view.
From the ‘server-side’ (or behind the scenes), the grid is about resource allocation, information sharing, and high availability. Resource allocation ensures that all those who request resources get what they need and that those resources are not standing idle while requests go unserviced. Information sharing makes sure that the information that users and applications need is available as and when it is requested for. High-availability features guarantee that all the data and computations are always available as a utility.