We now delve into one final major theme of our text: distribution.
In this part of the book, we will explore some of the underlying tech-
nology in one of the most important aspect of modern systems: how
to build distributed systems.
Distributed systems have changed the face of the world. When
your web browser connects to a web server somewhere else on the
planet, it is participating in what seems to be a simple form of a
client/server distributed system. When you contact a modern web
service such as Google or facebook, you are not just interacting with
a single machine, however; behind the scenes, these complex ser-
vices are built from a large collection (i.e., thousands) of machines,
each of which cooperate to provide the particular service of the site.
Thus, it should be clear what makes studying distributed systems
interesting. Indeed, it is worthy of an entire class; here, we just intro-
duce a few of the major topics.
A number of new challenges arise when building a distributed
system. The major one we focus on is failure; machines, disks, net-
works, and software all fail from time to time, as we do not (and