Book
Understanding Distributed Systems, 2nd Edition
What every developer should know about large distributed applications
Roberto Vitillo
Summary
A survey of what it takes to build large distributed applications, organized in five parts. Communication covers TCP, TLS, DNS and HTTP APIs. Coordination is the most theoretical part: system models, failure detection, logical clocks, leader election, replication and consensus, weaker consistency models, and transactions, including sagas. Scalability follows a single CRUD web application as it scales out through caching, CDNs, partitioning, load balancing, replicated and NoSQL data stores, microservices and messaging. Resiliency covers common failure causes, redundancy, fault isolation, timeouts, retries, circuit breakers, load shedding and rate limiting. Maintainability covers testing, continuous delivery, monitoring and observability. The author says the book favors breadth over depth and points to external references for more.
Target Readers
- Developers working on the backend of web or mobile applications, or who would like to be
- Engineers who can build applications without knowing the network stack or consistency models, and end up spending hours debugging and re-architecting them
Tags
Colophon
- ISBN
- 978-1-83843-021-4
- Published
- Mar 2022
Get this book
* The link above is an advertisement via Amazon Associates.Related Books
Prerequisites
- Recommended
Web o Sasaeru Gijutsu (The Technology That Supports the Web)
HTTP, URI, HTML, and REST
Yohei Yamamoto
Reason: The first part of Understanding Distributed Systems works through TCP, TLS and DNS and ends with a chapter that describes implementing a RESTful HTTP API; the later parts are about scaling a web application with such an API and keeping it running through failures. With HTTP methods, status codes and resource design already familiar, you can read the communication part as review and spend your time on coordination, scalability and resiliency.
Next Books
- Recommended
Designing Data-Intensive Applications
The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Martin Kleppmann
Reason: The author of Understanding Distributed Systems says himself that the book favors breadth over depth and may not suit readers with years of experience. Replication, partitioning, transactions and consistency models each get a chapter or a section. Designing Data-Intensive Applications spends a whole book on those subjects, and is easier to enter once the first book has given you the vocabulary and a sense of where each piece sits.
- Recommended
Release It!, 2nd Edition
Design and Deploy Production-Ready Software
Michael T. Nygard
Reason: The Resiliency part of Understanding Distributed Systems goes from common failure causes, redundancy and fault isolation to timeouts, retries, circuit breakers, load shedding and rate limiting. Release It! spends a whole book on stability patterns such as circuit breakers, bulkheads and timeouts, alongside case studies of production failures, so the patterns you met by name and purpose in the first book can be read again in the setting of real outages.
- Related
Microservices Patterns
With examples in Java
Chris Richardson
Reason: Understanding Distributed Systems introduces the outbox pattern and sagas in its chapter on asynchronous transactions, API gateways in its chapter on microservices, and asynchronous messaging in its chapter on messaging. Each is a short introduction. When the time comes to design with them, Microservices Patterns treats the same material as patterns, in detail.
- Related
Enterprise Integration Patterns
Designing, Building, and Deploying Messaging Solutions
Gregor Hohpe, Bobby Woolf
Reason: Understanding Distributed Systems spends one chapter on messaging: the benefits and pitfalls of decoupling communication between services with asynchronous messaging channels. Enterprise Integration Patterns gives the whole book to messaging, dividing channels, routing, transformation, endpoints and system management into 65 patterns. It is where a reader whose interest starts in that chapter goes for the same subject in detail.