Skip to content

Reading list

The books, papers, blogs and courses behind this course. You don't need to read them all: each item has one line on why it is worth your time and the class it supports, so you can pick what fits the topic you are studying. Start with the first five.

Start here: the first five

  1. Designing Data-Intensive Applications (Kleppmann & Riccomini) — chapters on replication, partitioning, transactions and consistency. The foundation for classes 3, 6 and 8.
  2. System Design Interview, vol. 1 (Alex Xu) — read one chapter per week alongside the case studies to see the interview format end to end.
  3. "The Tail at Scale" (Dean & Barroso, 2013) — six pages that explain why p99 matters more than the average. Read it with Class 2 · Percentiles.
  4. Site Reliability Engineering, chapters on SLOs, monitoring and handling overload (free online) — the "running it in production" half of system design.
  5. The Amazon Builders' Library articles on timeouts, retries, backoff and jitter — short, practical, and exactly what Class 10 and Hands-on 9 put into code.

Books

Book Authors Why read it Supports
Designing Data-Intensive Applications, 2nd ed. Martin Kleppmann, Chris Riccomini The clearest explanation of replication, partitioning, transactions, consistency and streams, from first principles 3, 6, 8
System Design Interview, vol. 1 and vol. 2 Alex Xu (vol. 2 with Sahn Lam) Classic interview problems worked step by step, with estimates and diagrams 1, 15
Site Reliability Engineering and The Site Reliability Workbook Google (Beyer, Jones, Petoff, Murphy, eds.) SLOs, error budgets, alerting, overload and incident response as practiced at Google; free online 9, 10
Release It!, 2nd ed. Michael T. Nygard Stability patterns (timeouts, circuit breakers, bulkheads) and anti-patterns, told through real outages 9
Building Microservices, 2nd ed. Sam Newman When to split a monolith, service boundaries, communication styles, and the costs of microservices 5
Fundamentals of Software Architecture Mark Richards, Neal Ford Architecture characteristics ("-ilities"), styles and how to reason about trade-offs 1, 5
Software Architecture: The Hard Parts Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani Decomposing services and data, distributed transactions and sagas, framed as trade-off analysis 5, 8
Understanding Distributed Systems Roberto Vitillo A short, approachable tour of communication, coordination, scalability and resiliency 3, 4
Database Internals Alex Petrov How storage engines (B-trees, LSM-trees) and distributed databases work inside 6
Systems Performance, 2nd ed. Brendan Gregg Performance methodology (USE method), observability tools and profiling on Linux 14
Observability Engineering Charity Majors, Liz Fong-Jones, George Miranda Why high-cardinality events and traces beat dashboards of averages; SLO-based alerting 10
Kubernetes: Up and Running Brendan Burns, Joe Beda, Kelsey Hightower, Lachlan Evenson The core Kubernetes objects explained by people who built it 12
AI Engineering Chip Huyen Building applications on foundation models: evaluation, RAG, agents, latency and cost 13
Cracking the Coding Interview, 6th ed. Gayle Laakmann McDowell The interview process in general; its chapter on scalability inspired the "how to answer" principles Support › Interview

Classic papers

Papers are shorter than books and often clearer: they were written to convince skeptical experts. Read the abstract, the introduction and the figures first.

Paper Authors, venue, year Why read it Supports
Time, Clocks, and the Ordering of Events in a Distributed System Leslie Lamport, Communications of the ACM, 1978 Introduces happened-before and logical clocks: why "what happened first" is hard 3 · Time & clocks
Paxos Made Simple Leslie Lamport, ACM SIGACT News, 2001 The consensus algorithm behind decades of systems, in a few pages 3 · Consensus
Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services Seth Gilbert, Nancy Lynch, ACM SIGACT News, 2002 The formal proof of the CAP theorem that Eric Brewer conjectured in his PODC 2000 keynote 3 · CAP & PACELC
The Google File System Ghemawat, Gobioff, Leung, SOSP 2003 Designing storage for commodity machines that fail all the time 6
MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean, Sanjay Ghemawat, OSDI 2004 The programming model that made batch processing at scale accessible 6 · Specialized
Bigtable: A Distributed Storage System for Structured Data Chang et al., OSDI 2006 The wide-column model behind HBase and Cassandra's data model 6 · Models
The Chubby Lock Service for Loosely-Coupled Distributed Systems Mike Burrows, OSDI 2006 Coarse-grained locks and leader election as a service 5 · Async work
Dynamo: Amazon's Highly Available Key-value Store DeCandia et al., SOSP 2007 (allthingsdistributed.com) Consistent hashing, quorums, hinted handoff and vector clocks in one production system 3, 6 · Partitioning
ZooKeeper: Wait-free Coordination for Internet-scale Systems Hunt, Konar, Junqueira, Reed, USENIX ATC 2010 A coordination service that many systems (including older Kafka) relied on 3 · Consensus
Kafka: a Distributed Messaging System for Log Processing Jay Kreps, Neha Narkhede, Jun Rao, NetDB 2011 The original design of the log-based broker used throughout the course 8 · Kafka
Spanner: Google's Globally-Distributed Database Corbett et al., OSDI 2012 Externally consistent transactions across the planet, using TrueTime 6 · Replication, 3
Consistency Tradeoffs in Modern Distributed Database System Design Daniel Abadi, IEEE Computer, 2012 Introduces PACELC: the latency vs consistency trade-off that exists even without partitions 3 · CAP & PACELC
The Tail at Scale Jeffrey Dean, Luiz André Barroso, Communications of the ACM, 2013 Why tail latency dominates fan-out systems, and techniques such as hedged requests 2 · Percentiles
Scaling Memcache at Facebook Nishtala et al., NSDI 2013 Caching at enormous scale: leases against stampedes, regional pools, invalidation 7
TAO: Facebook's Distributed Data Store for the Social Graph Bronson et al., USENIX ATC 2013 A read-optimized graph cache in front of MySQL serving billions of reads per second 7, 15
In Search of an Understandable Consensus Algorithm (Raft) Diego Ongaro, John Ousterhout, USENIX ATC 2014 (raft.github.io) Consensus designed to be understood: leader election and log replication 3 · Consensus
Large-scale Cluster Management at Google with Borg Verma et al., EuroSys 2015 The ancestor of Kubernetes: scheduling, bin packing, and lessons learned 12 · Kubernetes
Attention Is All You Need Vaswani et al., NeurIPS 2017 The transformer architecture behind today's LLMs; read for context, not for the math 13
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks Lewis et al., NeurIPS 2020 The paper that named RAG: combining a retriever with a generator 13 · RAG & memory
ReAct: Synergizing Reasoning and Acting in Language Models Yao et al., ICLR 2023 The reason-act-observe loop that most agent frameworks implement 13 · Agents

Engineering blogs

Real systems, real outages, real trade-offs. Search them for the topic of the week.

Blog Why read it Supports
The Amazon Builders' Library How Amazon builds and operates services: timeouts and retries, load shedding, caching, deployments 9, 12
AWS Architecture Blog Reference architectures and patterns on AWS 12
Google Cloud Architecture Center Reference architectures, including for AI and data systems 12, 13
Netflix Tech Blog Chaos engineering, resilience, video delivery and large-scale microservices 9, 15
Meta Engineering Caching, data infrastructure and reliability at the scale of billions of users 6, 7
Uber Engineering Geospatial indexing, real-time dispatch and large microservice architectures 15
Discord Engineering Storing trillions of messages, real-time fan-out, database migrations told in detail 6, 15
The Cloudflare Blog DNS, CDN, DDoS mitigation and honest post-mortems of global outages 4, 10
Stripe Engineering Idempotency, API design and reliability for payments 5 · Integrations
Shopify Engineering Surviving flash sales (Black Friday) on a modular monolith 5, 14
Slack Engineering Real-time messaging infrastructure and incident write-ups 8, 10
Marc Brooker's blog Short, rigorous essays on retries, queues, tail latency and distributed systems 2, 9
Martin Fowler Patterns of distributed systems and enterprise architecture, microservices trade-offs 5, 8
Brendan Gregg Performance methodology, flame graphs and Linux observability 14
Jepsen Independent analyses of what distributed databases really guarantee under failure 3 · Consistency
High Scalability Long-running collection of architecture case studies 15
ByteByteGo Visual, interview-oriented explanations of system design topics Support › Interview

Courses and free resources

Resource Why use it Supports
MIT 6.5840 Distributed Systems Lectures, paper readings and labs (Raft, a sharded key-value store) from one of the best distributed-systems courses 3
The System Design Primer Free, organized study guide with topics, flashcards and worked problems Support › Interview
AWS Well-Architected Framework Six pillars and concrete review questions to ask of any design 1, 12
Azure Architecture Center Cloud design patterns catalog (retry, circuit breaker, CQRS, saga…) with clear diagrams 8, 9
Google SRE resources The SRE books plus articles on SLOs and incident response 9, 10
CNCF Landscape Map of the cloud-native ecosystem: where each tool fits 12
OpenTelemetry documentation Concepts and language guides for metrics, logs and traces 10 · OpenTelemetry
Kubernetes documentation The concepts section is an excellent free textbook 12 · Kubernetes
Latency numbers every programmer should know The classic table behind every estimate 2 · Numbers, Reference › Numbers

How to read a paper in 30 minutes

Read the title, the abstract and the conclusion; look at every figure and table; then read the introduction and the design section. Skip the evaluation details on a first pass. Write three lines: the problem, the key idea, and the trade-off the authors accepted. That third line is the one you will use in an interview.