Foreword |
Developers tasked with architecting a functional and dependable system out
of a collection of machines connected by a communications network--i.e., a
distributed system--face enormous challenges. Largely because of a loosely
coupled hardware architecture with no physically shared memory, many things
that are straightforward in centralized systems are difficult in distributed
systems. For example, synchronizing processes with separate threads of
control typically uses shared variables on a single machine, but must be done
with message passing in a distributed system. The extra time delay associated
with sending messages over a network increases the asynchrony of the
processes and necessitates the use of special protocols to coordinate their
respective actions. Perhaps the most serious open issue in building such
systems relates to ensuring what are sometimes called non-functional
attributes: reliability, availability, timeliness, security. For example,
providing just the first two attributes requires systems architects to deal
not just with normal operation, but also failures that may have arbitrary
effects on only parts of the system for an unpredictable duration. Timeliness
and security are similarly challenging. To provide the predictable timing
behaviour needed to build a real-time distributed system requires controlling
literally every part of the system, from the hardware through the system
software to the application. To guarantee a secure computing environment that
ensures confidentiality, integrity and privacy requires, among other things,
sophisticated mathematical cryptographic techniques and the ability to do
subtle analysis. Even worse, for systems that need all of these attributes as
is increasingly the case the challenges are combinatorial, not additive. The
designer can take techniques to guarantee availability and combine them with
techniques to guarantee security and easily end up with a system that
provides neither. In this book, Paulo Veríssimo and Luís Rodrigues provide a
comprehensive and timely treatment of all these challenges. In a clear and
consistent way, they address the fundamental characteristics of such systems
and tackle the issues involved in providing service that is fault tolerant,
can meet real-time guarantees, and is secure. They also address management issues, which are a non-trivial and often neglected part of the problem. In each case, they focus on the fundamental paradigms associated with that area, describe the building blocks--both conceptual and practical--needed to address the issues, and give concrete examples of existing systems that incorporate state-of-the-art solutions. The presentation in each section of an evolving case study involving a hypothetical Portuguese wine producer makes the book even more valuable by providing a consistent context for discussing issues and for demonstrating the subtleties that arise when systems have to ensure multiple attributes. In writing this book, the authors bring to bear a wealth of expertise and experience, not just in research aspects of the problem, but also as practical systems architects. Given the challenges involved, no one is better equipped to guide the reader through the intricacies of the issues and the details of the techniques needed to realize the vision of highly dependable distributed systems. Rick Schlichting AT&T Labs - Research, Florham Park, New Jersey, USA 22 September 2000 |