Understanding Distributed Systems
February 26, 2022
This book is a must-read for all backend and full-stack software engineers. Understanding distributed systems will provide you with the necessary overview and vocabulary to talk to fellow backend engineers and acts as a starting point for more in-depth research.
Topics cover:
- Communication, from the basics of TCP connections to common API patterns,
- Coordination, how to manage state and consistency in distributed systems (CAP, transactions, isolation levels, consensus, ...),
- Scalability, how to scale applications (microservices, CQRS, messaging), storage (partitioning) and requests (load balancing and caching),
- Resiliency, failure patterns, and mitigation strategies,
- Testing and Operations, how to ensure product and operational quality (testing, CI/CD, and monitoring)
I liked the coordination and resiliency chapters best since I found it hard to get a good systematic overview of these areas in the past.
If you want to go deeper on a specific topic, check out Designing Data-Intensive Applications.