Broad and up-to-date coverage of the principles and practice in the fast moving area of Distributed Systems.
Distributed Systems provides students of computer science and engineering with the skills they will need to design and maintain software for distributed applications. It will also be invaluable to software engineers and systems designers wishing to understand new and future developments in the field.
From mobile phones to the Internet, our lives depend increasingly on distributed systems linking computers and other devices together in a seamless and transparent way. The fifth edition of this best-selling text continues to provide a comprehensive source of material on the principles and practice of distributed computer systems and the exciting new developments based on them, using a wealth of modern case studies to illustrate their design and development . The depth of coverage will enable readers to evaluate existing distributed systems and design new ones.
George F. Coulouris was a British computer scientist and the son of actor George Coulouris. He was an emeritus professor of Queen Mary, University of London and formerly visiting professor in residence at University of Cambridge Computer Laboratory. He was co-author of a textbook on distributed systems. He was instrumental in the development of ICL's Content Addressable File Store (CAFS) and he developed em, the Unix editor, which inspired Bill Joy to write vi.
I'm very discouraged by comments that call this book the 'best book' on distributed computing. For one it's incredibly dated. It's like time stopped in 2005. The Java code snippets are unnecessary and do not employ best coding practices. It does have some decent computer history in terms of networking and design, but it's just too difficult to get over how irrelevant some of the information is. I'm looking at the 5th edition (published 2011) and it just comes across as a money grab.
A solid resource. Case study of Google is particularly well written. The section on distributed databases feels disconnected from the rest of the book. The content is complemented by Santa Cruz lectures on Youtube
It's my own fault, of course. This book has been trundling around my to-read pile for at least ten years. Having finished it, I'm now curious how the state of the art has advanced in the fifteen years since the second edition was published.
Case studies work well for me, especially when I can I have an interest in the study object itself, and here the best was a mock-up of a distributed file service. Reading it took longer than expected simply because I kept a notebook handy as was sketching out a design.
Other sections don't have such a study, especially for the long slow slog of the middle. About halfway through the book my patience broke and I started skimming.
I'm definitely keeping it on hand, in case it becomes useful for something I may have to build someday.
An approachable read, filled with surprisingly relevant case studies. An ideal handbook for the student or professional developer who wants to get their hands dirty with distributed systems.
With all the applications out there being (slowly) converted from sad monoliths into fast distributed microservices, the interest in distributed systems has obviously skyrocketed. I am not sure if it's because it's huge or because it's the fifth edition (suggesting the previous four were successful), but among the many titles available this felt like the one to start with. It is not.
The book is divided into parts (seven by heart) and a nice schema shows us how we can move in case we are only interested in a particular area (say security). Starting with the first chapter already, reading the book feels like listening to a long and very generic talk about some basic concept of telecommunication/computer networks. Next to these we find, instead, that the authors dive deeply into unnecessary details, such as the UDP protocol.
Let's face it. Anyone working with distributed systems must know the difference between TCP and UDP and the pros/cons of both. These concepts are usually taught during the very first computer networks class at the university, were the ISO/OSI stack is analyzed in great detail. Distributed systems should be the next step. Those concepts should be taken for granted.
What is the point of discussing the UDP datagram or how Java supports sending data over UDP in a Distributed systems title? Again, do we really need to be explained the difference between little endian and big endian here?
The book is well written, no doubts about this. But it fails to deliver real value to anyone interested in distributed systems. I was honestly expecting real life scenarios, discussions about highly-availability, scaling, how to deal with failures, security, just to mention some. None of this is given to the readers.
A big disappointment. Not to mention the price of the hardcover book, which is way beyond its real value or the price any book should have (180$). Knowledge should be easily accesible.