The concepts described here were originally developed during a series of seminars given at the University of Minnesota, portions of which dealt with the meaning of distributed processing and introduced overall concepts in distributed systems. This volume presents those ideas, beginning with the overall concept and works toward implemented hardware structures. The intent of this volume is to illustrate the problems and promises of distributed systems, while informing readers of the pitfalls and progress of distributed systems.
Combines original material and reprinted papers with a twofold focus: on motivating factors and design principles of a communications architecture (OSI in particular), and on key issues of communications protocols. Breadth is the goal, rather than depth. Requires no background in data communications. No index. Annotation copyrighted by Book News, Inc., Portland, OR
Learning to build distributed systems is hard, especially if they are large scale. It's not that there is a lack of information out there. You can find academic papers, engineering blogs, and even books on the subject. The problem is that the available information is spread out all over the place, and if you were to put it on a spectrum from theory to practice, you would find a lot of material at the two ends but not much in the middle. That is why I decided to write a book that brings together the core theoretical and practical concepts of distributed systems so that you don't have to spend hours connecting the dots. This book will guide you through the fundamentals of large-scale distributed systems, with just enough details and external references to dive deeper. This is the guide I wished existed when I first started out, based on my experience building large distributed systems that scale to millions of requests per second and billions of devices. If you are a developer working on the backend of web or mobile applications (or would like to be!), this book is for you. When building distributed applications, you need to be familiar with the network stack, data consistency models, scalability and reliability patterns, observability best practices, and much more. Although you can build applications without knowing much of that, you will end up spending hours debugging and re-architecting them, learning hard lessons that you could have acquired in a much faster and less painful way. However, if you have several years of experience designing and building highly available and fault-tolerant applications that scale to millions of users, this book might not be for you. As an expert, you are likely looking for depth rather than breadth, and this book focuses more on the latter since it would be impossible to cover the field otherwise. The second edition is a complete rewrite of the previous edition. Every page of the first edition has been reviewed and where appropriate reworked, with new topics covered for the first time.
Reprints and five new papers present a top-down view of the subject. Covers software engineering and SE project management planning, organizing, staffing, directing, and controlling a SE project. No index. Annotation copyright Book News, Inc. Portland, Or.