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

Make Distributed Systems For System Architects your HomePage
Web Site hosted by: The Navigators of  LaSIGE  at Faculdade de Ciências of Universidade de Lisboa
© 2001 by Kluwer Academic Publishers and Paulo Veríssimo and Luís Rodrigues