Sponsored Link •
This article is about two time-tested ideas that rightly refuse to die. The first one is time sharing. The second one is about a way to manage complexity: Because some problems require inherently complex solutions, often the best approach is to move that complexity to areas of a system where complexity can be managed best. Grid computing ties these ideas together, and provides a practical way to solve one inherently complex problem: Managing desktop computers.
First introduced in 1957, we often associate time-sharing with logging into remote servers via a character-based terminal to execute jobs on those servers   . Although the first time-sharing systems matched that description, time-sharing is a much broader concept, and is an extension of the multitasking capability present in all modern operating systems. While multitasking shares a single processor between multiple independently running OS processes, time sharing services, in addition, allow those processes to run on behalf of different users.
Recent time sharing systems are not based on character terminals. For instance, the Java Virtual Machine provides time-sharing services via the Java Authentication and Access Control (JAAS) framework. JAAS allows Java threads to execute in the VM on behalf of authenticated users, facilitating a multi-user, multitasking VM environment .
Web servers also provide the conceptual equivalent of time-sharing: When you purchase a book from Amazon.com, for instance, your purchase request is represented with a thread of control on a remote Amazon server - a thread executing on your behalf, and sharing the CPU's resources with many other concurrent users for the duration of processing that request. Although such requests represent very short periods of CPU time, they operate on the same fundamental principle of sharing a centrally managed resource among users.
While a single time-sharing system allows many users to share one server's CPU time and other computing resources, grid computing brings that sharing to the level of a network of servers. In a grid, parts of a computing task are parceled out among several independent servers. For instance, user authentication might be performed by one server, while a CPU-intensive calculation may be scheduled on another server's CPU, all the while data storage may be provided by yet another server's file system.
What sets a grid apart from other distributed systems is that in a grid such resources are by design shared among many users, often belonging to different organizations and administrative domains. A grid computing infrastructure, in turn, mitigates access to all those resources, providing basic time-sharing services, such as scheduling, resource allocation, or concurrency control, for a set of shared servers.
Each grid service may be defined via interfaces or protocols following widely accepted standards. For instance, user authentication may be specified via a Kerberos-based authentication facility, resource metadata may be offered via LDAP, and file systems may be provided via NFS or Samba. As long as grid services adhere to agreed-upon standards, implementations of each service become interchangeable.
That, in turn, emancipates a service from a server: Since clients rely on logical service interfaces, not on access to specific servers, a client need not know what servers provide the required service. Instead, a client can depend on the grid provisioning software to find the server with the least load, or highest availability, or lowest service latency, based on the grid's policy.
The emancipation of services provides advantages in scaling up a grid: To increase storage space, a grid administrator can swap a Samba server with another server providing more available disk space, for instance. Or, to offer more robust user authentication, an administrator may provision several authentication servers on the grid, offering the grid provisioning software a larger pool of available resources to choose from. In addition to improving system throughput, provisioning multiple redundant servers for a service also improves that service's availability.
The flip-side of the emancipation of services from servers is that each server can specialize in offering one or a handful of well-defined services. That dovetails with the trend of commodity server hardware, since many grid services require relatively modest computing resources. Servicing LDAP queries, for instance, can easily be performed on inexpensive server hardware, especially if many commodity servers can share in the load of offering that service.
Specialized servers also reduce administrative costs. Since a single grid server can focus on providing just one or, at most, a few services, that server's administrator has to deal with less software configuration, monitoring, and upgrades. Replacing a failed server also becomes easier, since configuring and provisioning the replacement can be streamlined, if not completely automated.