Skip to content

Distributed Systems

Foundation Track | 5 Modules | ~3.5 hours total

The fundamentals of building systems that run across multiple machines. Understanding why distributed systems are hard, and the patterns that make them work.


Every modern system is distributed. The moment you have a web server and a database, you’re distributed. The moment you deploy to multiple availability zones, you face distributed systems challenges.

Distributed systems don’t behave like single machines. Things that were easy become hard:

  • Latency: Network calls are millions of times slower than local calls
  • Partial failure: Components fail independently, often invisibly
  • No global clock: You can’t reliably order events across machines
  • Uncertainty: You can’t always tell if a remote call succeeded

Understanding these challenges helps you design systems that work despite them.


#ModuleTimeDescription
5.1Module 5.1: What Makes Systems Distributed25-30 minFundamental challenges, CAP theorem, Kubernetes as distributed system
5.2Module 5.2: Consensus and Coordination35-40 minPaxos, Raft, leader election, distributed locks, etcd
5.3Module 5.3: Eventual Consistency30-35 minConsistency models, replication, conflict resolution, CRDTs
5.4Module 5.4: Partial Failure and Timeouts60-75 minTimeouts, idempotent retries, retry storms, jitter, circuit breakers
5.5Module 5.5: Clock Skew and Ordering45-55 minWall clocks, monotonic clocks, logical time, LWW hazards

START HERE
┌─────────────────────────────────────┐
│ Module 5.1 │
│ What Makes Systems Distributed │
│ └── The fundamental challenges │
│ └── CAP theorem │
│ └── Kubernetes as example │
│ └── Why it's hard │
└──────────────────┬──────────────────┘
┌─────────────────────────────────────┐
│ Module 5.2 │
│ Consensus and Coordination │
│ └── Paxos and Raft │
│ └── Leader election │
│ └── Distributed locks │
│ └── etcd and ZooKeeper │
└──────────────────┬──────────────────┘
┌─────────────────────────────────────┐
│ Module 5.3 │
│ Eventual Consistency │
│ └── Consistency spectrum │
│ └── Replication strategies │
│ └── Conflict resolution │
│ └── CRDTs │
└──────────────────┬──────────────────┘
┌─────────────────────────────────────┐
│ Module 5.4 │
│ Partial Failure and Timeouts │
│ └── Timeout uncertainty │
│ └── Idempotent retries │
│ └── Retry storms and jitter │
│ └── Circuit breakers │
└──────────────────┬──────────────────┘
┌─────────────────────────────────────┐
│ Module 5.5 │
│ Clock Skew and Ordering │
│ └── Wall vs monotonic clocks │
│ └── Lamport and vector clocks │
│ └── Last-writer-wins hazards │
│ └── Ordering fixes │
└──────────────────┬──────────────────┘
READY TO APPLY
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
SRE Platform GitOps
Discipline Engineering Discipline

ConceptModuleWhat It Means
Latency5.1Network calls are slow (physics)
Partial Failure5.1Parts fail while others continue
CAP Theorem5.1Choose consistency or availability during partition
Consensus5.2Getting nodes to agree on a value
Raft5.2Understandable consensus algorithm
Leader Election5.2Choosing one coordinator among many
Distributed Lock5.2Mutual exclusion across machines
Eventual Consistency5.3Convergence without immediate agreement
Version Vectors5.3Tracking causality without clocks
CRDTs5.3Conflict-free data structures
Timeout5.4A local deadline, not proof of remote failure
Idempotency5.4Making repeated attempts produce one logical effect
Retry Storm5.4Retries amplifying load during partial failure
Circuit Breaker5.4Failing locally to protect an unhealthy dependency
Wall Clock5.5Calendar time for human-facing labels
Monotonic Clock5.5Local elapsed time that does not step backward
Clock Skew5.5Different machines disagreeing about the current time
Happens-Before5.5Causal ordering based on process order and messages
Lamport Timestamp5.5Logical counter that preserves causal direction
Last Writer Wins5.5Conflict rule that can lose writes under skew


After completing Distributed Systems, you’re ready for:

TrackWhy
SRE DisciplineApply distributed systems thinking to reliability
Platform Engineering DisciplineBuild platforms on distributed foundations
GitOps DisciplineEventual consistency in practice
Observability ToolkitMonitor distributed systems

Books referenced throughout this track:

  • “Designing Data-Intensive Applications” — Martin Kleppmann (the definitive guide)
  • “Distributed Systems for Fun and Profit” — Mikito Takada (free online)
  • “Database Internals” — Alex Petrov

Papers:

  • “Time, Clocks, and the Ordering of Events” — Leslie Lamport
  • “In Search of an Understandable Consensus Algorithm” — Diego Ongaro (Raft)
  • “Dynamo: Amazon’s Highly Available Key-value Store” — DeCandia et al.

Question to AskWhy It Matters
”What if this call fails?”Design for partial failure
”What if it’s just slow?”Can’t distinguish slow from dead
”Do we need consensus here?”Consensus is expensive, use sparingly
”What consistency do we need?”Match consistency to requirements
”How do we handle conflicts?”Concurrent writes will happen
”What’s the failure domain?”Understand blast radius

Distributed Systems is one foundation area, not the end of the Foundations section. It connects several earlier mental models:

  1. Systems Thinking: See systems as interconnected wholes
  2. Reliability Engineering: Design for failure, measure with SLOs
  3. Observability Theory: Understand through metrics, logs, traces
  4. Security Principles: Defense in depth, least privilege
  5. Distributed Systems: Consensus, consistency, coordination, ordering

These foundations prepare you to make practical tradeoffs in Disciplines and Toolkits, while later Foundations topics such as networking, eBPF, and leadership add more depth for specific platform routes.


“A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” — Leslie Lamport