Replacing the Server with a Cluster

The discussion in the previous section makes it clear that the client-server model is still highly desirable in the Internet age. Unfortunately, concentrating resources on the server can be very expensive. When one looks at the prices of enterprise-level hardware, and compares them to those of generic components, it becomes clear that a unit of computational power is many times less expensive when supplied by a generic system. The strategy, then, is to connect a number of generic machines via a LAN (which have offered good network performance for quite some time now) to achieve the desired capability. Thus, a cluster is born. For the delivery of Internet-based services, the cluster replaces a single (or a small number) of enterprise-level machines.

As mentioned previously, clusters became famous in supercomputer applications. Internet-based services, however, have different requirements from those of a typical computation-intensive problem. The supercomputing cluster, designed to solve the latter, focuses on carrying out many calculations in parallel. Occasional hardware failures are not a serious problem — one simply repairs the cluster, and restarts the work from the last known good state. The Internet service, however, should continue running even when failures occur. The focus is on redundancy and fault tolerance, rather than the fastest possible rate of computation. Here, clustered solutions have succeeded as well — web server farms [Hor00] being the most common example.