Grid computing (or the use of computational grids) is the application of several computers to a single problem at the same time — usually to a scientific or technical problem that requires a great number of computer processing cycles or access to large amounts of data.

One of the main strategies of grid computing is using software to divide and apportion pieces of a program among several computers, sometimes up to many thousands. Grid computing is distributed[citation needed], large-scale cluster computing, as well as a form of network-distributed parallel processing[citation needed]. The size of grid computing may vary from being small — confined to a network of computer workstations within a corporation, for example — to being large, public collaboration across many companies and networks. "The notion of a confined grid may also be known as an intra-nodes cooperation whilst the notion of a larger, wider grid may thus refer to an inter-nodes cooperation"[1]. This inter-/intra-nodes cooperation "across cyber-based collaborative organizations are also known as Virtual Organizations"[2].

It is a form of distributed computing whereby a “super and virtual computer” is composed of a cluster of networked loosely coupled computers acting in concert to perform very large tasks. This technology has been applied to computationally intensive scientific, mathematical, and academic problems through volunteer computing, and it is used in commercial enterprises for such diverse applications as drug discovery, economic forecasting, seismic analysis, and back-office data processing in support of e-commerce and Web services.

What distinguishes grid computing from conventional cluster computing systems is that grids tend to be more loosely coupled, heterogeneous, and geographically dispersed. Also, while a computing grid may be dedicated to a specialized application, it is often constructed with the aid of general-purpose grid software libraries and middleware.

Grid Computing is a technique in which the idle systems in the Network and their “wasted” CPU cycles can be efficiently used by uniting pools of servers, storage systems and networks into a single large virtual system for resource sharing dynamically at runtime.
- High performance computer clusters.
-share application, data and computing resources.

Design considerations and variations

One feature of distributed grids is that they can be formed from computing resources belonging to multiple individuals or organizations (known as multiple administrative domains). This can facilitate commercial transactions, as in utility computing, or make it easier to assemble volunteer computing networks.

One disadvantage of this feature is that the computers which are actually performing the calculations might not be entirely trustworthy. The designers of the system must thus introduce measures to prevent malfunctions or malicious participants from producing false, misleading, or erroneous results, and from using the system as an attack vector. This often involves assigning work randomly to different nodes (presumably with different owners) and checking that at least two different nodes report the same answer for a given work unit. Discrepancies would identify malfunctioning and malicious nodes.

Due to the lack of central control over the hardware, there is no way to guarantee that nodes will not drop out of the network at random times. Some nodes (like laptops or dialup Internet customers) may also be available for computation but not network communications for unpredictable periods. These variations can be accommodated by assigning large work units (thus reducing the need for continuous network connectivity) and reassigning work units when a given node fails to report its results as expected.

The impacts of trust and availability on performance and development difficulty can influence the choice of whether to deploy onto a dedicated computer cluster, to idle machines internal to the developing organization, or to an open external network of volunteers or contractors.

In many cases, the participating nodes must trust the central system not to abuse the access that is being granted, by interfering with the operation of other programs, mangling stored information, transmitting private data, or creating new security holes. Other systems employ measures to reduce the amount of trust “client” nodes must place in the central system such as placing applications in virtual machines.

Public systems or those crossing administrative domains (including different departments in the same organization) often result in the need to run on heterogeneous systems, using different operating systems and hardware architectures. With many languages, there is a trade off between investment in software development and the number of platforms that can be supported (and thus the size of the resulting network). Cross-platform languages can reduce the need to make this trade off, though potentially at the expense of high performance on any given node (due to run-time interpretation or lack of optimization for the particular platform).

Various middleware projects have created generic infrastructure, to allow diverse scientific and commercial projects to harness a particular associated grid, or for the purpose of setting up new grids. BOINC is a common one for academic projects seeking public volunteers; more are listed at the end of the article.

In fact, the middleware can be seen as a layer between the hardware and the software. On top of the middleware, a number of technical areas have to be considered, and these may or may not be middleware independent. Example areas include SLA management, Trust and Security, Virtual organization management, License Management, Portals and Data Management. These technical areas may be taken care of in a commercial solution, though the cutting edge of each area is often found within specific research projects examining the field.

The term grid computing originated in the early 1990s as a metaphor for making computer power as easy to access as an electric power grid in Ian Foster's and Carl Kesselman's seminal work, "The Grid: Blueprint for a new computing infrastructure."

CPU scavenging and volunteer computing were popularized beginning in 1997 by and later in 1999 by SETI@home to harness the power of networked PCs worldwide, in order to solve CPU-intensive research problems.

The ideas of the grid (including those from distributed computing, object-oriented programming, and Web services) were brought together by Ian Foster, Carl Kesselman, and Steve Tuecke, widely regarded as the “fathers of the grid[4].” They led the effort to create the Globus Toolkit incorporating not just computation management but also storage management, security provisioning, data movement, monitoring, and a toolkit for developing additional services based on the same infrastructure, including agreement negotiation, notification mechanisms, trigger services, and information aggregation. While the Globus Toolkit remains the de facto standard for building grid solutions, a number of other tools have been built that answer some subset of services needed to create an enterprise or global grid.

In 2007 the term cloud computing came into popularity, which is conceptually similar to the canonical Foster definition of grid computing (in terms of computing resources being consumed as electricity is from the power grid). Indeed, grid computing is often (but not always) associated with the delivery of cloud computing systems as exemplified by the AppLogic system from 3tera.

Flexible, Secure, Coordinated resource sharing.
Virtualization of distributed computing resources.
Give worldwide access to a network of distributed resources.

Resource Management
Data Management
Information Services
Fault Detection

Computational Grid
-computing power
Scavenging Grid
-desktop machines
Data Grid
-data access across multiple organizations

- Grid’s computer can be thousands of miles apart and connected with internet networking technologies.
- Grids can share processors and drive space.

Fabric : Provides resources to which shared access is mediated by grid protocols.
Connectivity : Provides authentication solutions.
Resources : Connectivity layer, communication and authentication protocols.
Collective : Coordinates multiple resources.
Application : Constructed by calling upon services defined at any layer.

In a world-wide Grid environment, capabilities that the infrastructure needs to support include:
Remote storage
Publication of datasets
Uniform access to remote resources
Publication of services and access cost
Composition of distributed applications
Discovery of suitable datasets
Discovery of suitable computational resources
Mapping and Scheduling of jobs
Submission, monitoring, steering of jobs execution
Movement of code
Enforcement of quality
Metering and accounting

Grid Fabric layer
Core Grid middleware
User-level Grid middleware
Grid application and protocols
- Installing Core Gridmiddleware
- Resource brokering and application deployment services

- Distributed application
- Grid resource broker
- Grid information service
- Grid market directory
- Broker identifies the list of computational resources
- Executes the job and returns results
- Metering system passes the resource information to the accounting system
- Accounting system reports resource share allocation to the user

- Coordinated resource sharing and problem solving in dynamic, institutional organizations
- Improving distributed management
- Improving the availability of data
- Providing researchers with a uniform user friendly environment
- Grid utilizes the idle time
- Its ability to make more cost-effective use of resources
- To solve problems that can’t be approached without any enormous amount of computing power.