Understanding Distributed Systems
Roberto Vitillo's book pitched between introductory blog posts and graduate textbooks, covering communication, coordination, scalability, resiliency and maintainability of large distributed applications. The second edition adds operations topics such as monitoring and observability. Rigorous enough to be useful and short enough to finish, it suits developers who want real distributed systems knowledge before tackling heavier books.
2nd edition, 2022
Goodreads · Sept 2026
4.37/5 (552 ratings, 1st ed.)
Goodreads · Sept 2026
Book
System Design
Roberto Vitillo
4 to 6 weeks
Intermediate
About $30, free sample chapters
What the book covers
The full title is "Understanding Distributed Systems: What every developer should know about large distributed applications". The author, Roberto Vitillo, has worked on large scale systems in industry, and wrote the book to fill the gap between shallow introductions and research level material. It is organised around five themes:
- Communication: reliable links (TCP, flow and congestion control), secure links (TLS), service discovery, APIs and messaging.
- Coordination: system models, failure detection, time and clocks, leader election, replication, consistency models and transactions.
- Scalability: functional decomposition, partitioning, duplication, caching, load balancing and data storage at scale.
- Resiliency: common failure causes, redundancy, fault isolation, timeouts, retries, circuit breakers, load shedding and rate limiting.
- Maintainability: testing, continuous delivery and deployment, monitoring (metrics, SLIs, SLOs and alerts) and observability (logs and traces).
Which edition
The second edition (2022) is the current one and expands the operational chapters. It is self published and sold as an ebook and in print through the book's site and major retailers; check the official site for current formats and prices.
What readers say
On Goodreads the first edition averages about 4.37 out of 5 from over 550 ratings, and the second edition about 4.46 from a smaller number (September 2026). Readers consistently praise it for being concise and practical, and for the resiliency chapters. Some note that its brevity means individual topics are covered less deeply than in Designing Data-Intensive Applications.
Is it the right first book?
For most developers, yes. Designing Data-Intensive Applications is superb but a serious commitment; academic papers are the primary source but hard going. This book sits deliberately between them. Many engineers read it first, then move on to DDIA with a much easier time.
It is less suitable if you already know consensus, replication and consistency models well. In that case, go straight to DDIA or MIT's 6.5840.
How long it takes and how to read it
The book is short enough to read in two to four weeks at a steady pace. Read it in order, because the chapters build on each other. Suggestions:
- After the communication part, run a small experiment: use
tcpdumpor Wireshark to watch a TLS handshake. - After the resiliency part, audit a service you work on. Does every outbound call have a timeout? Are retries bounded and jittered?
- After the maintainability part, write down the SLIs and SLOs you would set for that service.
The resiliency and operations sections are the ones most likely to change how you work day to day.
Pair it with
- Designing Data-Intensive Applications as the deeper second book.
- Martin Kleppmann's Cambridge lecture series for the theory of clocks, broadcast and consensus.
Best for: developers who want solid, practical distributed systems knowledge without committing to a textbook or a graduate course.
Ready to start?
Opens on Roberto Vitillo in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.