Preface

      The primary audience for this book are advanced undergraduate students and graduate students. Computer architecture, as it happened in other fields such as electronics, evolved from the small to the large, that is, it left the realm of low-level hardware constructs, and gained new dimensions, as distributed systems became the keyword for system implementation. As such, the system architect, today, assembles pieces of hardware that are at least as large as a computer or a network router or a LAN hub, and assigns pieces of software that are self-contained, such as client or server programs, Java applets or protocol modules, to those hardware components.
       The freedom she/he now has, is tremendously challenging. The problems alas, have increased too. What was before mastered and tested carefully before a fully mainframe or a closely coupled computer cluster came out on the market, is today left to the responsibility of computer engineers and scientists invested in the role of system architects, who full this role on behalf of software vendors and integrators, add-value system developers, R&D institutes, and final users. As system complexity, size and diversity grow, so increases the probability of inconsistency, unreliability, non responsiveness and insecurity, not to mention the management overhead.

What System Architects Need to Know


      The insight such an architect must have includes but goes well beyond, the functional properties of distributed systems. Most of the problems in configuring, deploying and managing a distributed system come not from what the system does that we have not understood, but from what the system is not that we have overlooked, that is, from inappropriate non-functional properties: unreliability, lack of responsiveness, insecurity. In other words, fault tolerance, real-time, security, are fundamental but sometimes neglected attributes of distributed systems. The mastery of the relevant concepts and techniques is as important as that of the issues related with distribution itself. Finally, it is necessary to understand the management of systems with this complexity and versatility. Together, these issues form the body of knowledge that this book intends to pass on to future distributed system architects. A book covering all these issues risks being either too long or too shallow. That would happen if the subjects were treated as if the book were a collection of smaller books dedicated to each topic. Most of the existing books on distributed systems are addressed to system programmers, or operating system designers. However, the knowledge a system architect must have is different. The system architect must first understand the fundamental concepts and the most important paradigms concerned with the problem of distribution. Then, once presented with the main models of distributed systems and with the problems posed by them, such as how to implement a given feature, or how to overcome a certain limitation, she/he will have the background to understand the architecture of the solutions, in a logical composition of building blocks, structure, techniques and algorithms. Specific systems or sub-systems whose architecture, protocols and modules will be discussed, provide the pretext for the student to integrate all the material she/he has been exposed to. Finally, the architect has the opportunity to create her/his own architecture, in a case study that develops along the book.
       The next thing that singles out this book's structure is the way that the fault tolerance, real-time, security and management parts are treated, once more addressing architects of distributed systems. Most of the existing books specializing on each of the above topics do so in a thorough but horizontal way. Here, the student will see a continuity in the style of addressing each of these matters, and an integration with distribution. In fact, each of the following parts is also organized as: concepts; paradigms; models; and systems. Besides, the contents refer to the basic matters given in the Distributed Systems part in a problem-oriented manner.
       This is further emphasized by the case study, an imaginary wine company with facilities spread through the country, whose information system, the VintagePort'63 System (VP'63), must adapt to the modern times. The case study is methodically addressed at the end of each part, so that we progressively make VP'63: (1) modular, distributed and interactive; (2) dependable; (3) timely; (4) secure, and (5) manageable.
       Finally, at the end of each part there is a repository of web URL's linking to most of the systems discussed. All URLs were functional at the time of print. This is a risky endeavour for a printed book, in such a fast changing world. However, we took the risk, we believe our effort will save a lot of precious time to many students and readers, and will provide them with a useful database of over 250 contacts that they can themselves improve and update as time goes by.

Student information


The book provides solutions to the following general problems:
· Advanced undergraduate students need be exposed to all these subjects, but one cannot generally afford one course per theme at this level, so this book provides the teacher with an integrated and homogeneous textbook.
· Graduate students (MSc) may either take advantage from having a single book for several thematic introductory courses, and/or from using the book as a bootstrap text for more in-depth, focused courses, complemented with research papers.
       Parts of this book will thoroughly cover the subjects needed for an advanced undergraduate course on distributed system architecture, to be preceded by an introductory course on computer networks and distributed operating systems. It may be used to teach introductory courses on any combination of Introduction to fault tolerance, real-time, or security, both at advanced undergraduate or graduate level (e.g. Fault-tolerant Real-time Systems). It may be used to teach more focused graduate courses on distributed systems, fault-tolerance, real-time, security, or management, complemented with dedicated books or research papers (e.g. Secure and Reliable Web Systems , Configuration and Management of Distributed Systems).

How to use the book


Undergraduate Teaching

      Part I provides the support for teaching distributed system architectures, admitting the students had an introductory operating systems course, whose depth will dictate how much of Chapter 1 is given. Some topics from Chapter 2 may be omitted (addressing all sections is however suggested). Selected parts of Chapters 3 and 4 consolidate the basic notions. The sections on Client-Server, WWW and Group-oriented in Chapter 3, and DCE in Chapter 4 are strongly suggested. Chapter 5 is an excellent pretext and inspiration for assignments. If enough credits are devoted to this area, the teacher may expand the example course just suggested, or split it, by further addressing Chapters 6, 16, 21 and 11, in order to provide complementary introductory notions of fault-tolerance, security, management and real-time, by order of priority.
Postgraduate teaching

      Part I in its entirety provides a thorough understanding of distributed system architecture, admitting the students had previous introductory notions in the area (for example the undergraduate course just suggested), so that they can go directly to the in-depth issues of Chapters 2 through 5. Each of Parts II to V, or combinations thereof, may be used to teach courses on the relevant themes. It is advisable to start with a review of selected parts of Chapter 2, and start the case study with Chapter 5, for completeness.
Self-study

      The book may be of assistance for support of advanced research studies, both as a broad body of reference in the disciplines of distributed systems, and as a pointer to deeper study by means of the bibliography of each part.
Support

      The book readers, students and teachers will find some support in the book web page, www.navigators.di.fc.ul.pt/dssa. Web copies of the URL tables will be kept as up-to-date as possible. Electronic versions of all figures will be made available to teachers by specific request. A mailbox is available on the page for requests, suggestions and questions.

Acknowledgments


      A number of people, some not knowingly, contributed to this book. It was from lecturing advanced undergraduate and graduate courses and working together with system architects in international distributed systems projects for the past few years, that we came to figure out what a distributed system architect should know, clearly enough (so we hope) to cast it in a book. Students and colleagues at the Technical University of Lisboa (IST) and more recently at the University of Lisboa (FCUL), and projects with the Navigators team, such as the ESPRIT DELTA-4, DINAS or BROADCAST were marvellous thinking tanks.
      Nevertheless, there are some people who, for their direct in on the book, deserve a very warm acknowledgment. In alphabetic order, and hoping not to forget anyone: Lorenzo Alvisi, Alan Burns, António Casimiro, Miguel Correia, Yves Deswarte, Elmootazbellah Elnozahy, Matti Hiltunen, Joerg Kaiser, Sacha Krakowiak, Jean-Claude Laprie, Jeff Magee, Pedro Martins, Roger Needham, Nuno Ferreira Neves, Nuno Miguel Neves, Guevara Noubir, David Powell, Brian Randell, Peter Ryan, Rick Schlichting, Robert Stroud, Morris Sloman, Neeraj Suri, Irfan Zakiuddin. This passable piece of text would be unintelligible without their help. The comments and feedback from the reviewers were also an enormous help and incentive. Our students at FCUL detected many typos and several less clear parts.
      To some fellow architects goes the final word of appreciation for several years of many chats, discussions and common projects: Ken Birman, Flaviu Cristian, Hermann Kopetz, David Powell, and Rick Schlichting.

Paulo Veríssimo
Luís Rodrigues
Lisboa, August 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