Skip to main content

Bootcamp: Start Here

Read these foundational resources before diving deeper into distributed systems. These materials introduce the core concepts, limitations, and theoretical foundations that underpin all distributed systems.
These resources are carefully selected to give you a breadth-first understanding of distributed systems before exploring specialized topics.

Learning Path

1

Understand the CAP Theorem

Start with the fundamental trade-off in distributed systems: Consistency, Availability, and Partition tolerance.The CAP theorem states that a distributed system can only guarantee two out of three properties: Consistency, Availability, and Partition tolerance. Understanding this trade-off is crucial for designing distributed systems.
2

Learn the Fallacies of Distributed Computing

Fallacies of Distributed ComputingExpect things to break, everything. The network is not reliable, latency is not zero, bandwidth is not infinite, and the network is not secure. These fallacies represent common false assumptions developers make when building distributed systems.
Keep these fallacies in mind when designing any distributed system. They’ll save you from common pitfalls.
3

Study Distributed Systems Theory

Distributed Systems Theory for the Distributed Systems EngineerMost of the papers and books in this blog might reappear in this list again. It provides a breadth-first search approach to distributed systems, covering the theoretical foundations that every distributed systems engineer should know.
4

Grasp the FLP Impossibility Result

Understanding what’s impossible is as important as knowing what’s possible.The FLP impossibility result proves that in an asynchronous network with even one faulty process, it’s impossible to guarantee consensus. This fundamental limitation shapes how distributed consensus algorithms are designed.
5

Take an Introduction Course

An Introduction to Distributed SystemsKyle Kingsbury’s (@aphyr) excellent introduction to distributed systems provides a comprehensive overview with practical examples. This course covers consistency models, consensus, distributed storage, and testing distributed systems.
@aphyr is also the creator of Jepsen, a framework for testing distributed systems that has uncovered bugs in many popular databases.

Why Start Here?

These bootcamp resources establish the mental models you need to reason about distributed systems:
  1. CAP Theorem teaches you about fundamental trade-offs
  2. Fallacies ground you in the reality of unreliable networks
  3. Theory overview gives you a map of the landscape
  4. FLP Impossibility shows you the theoretical boundaries
  5. Introduction course ties it all together with practical context
Don’t rush through these materials. Take time to understand each concept deeply before moving on to specialized topics like consensus algorithms, storage systems, or messaging.

Next Steps

After completing the bootcamp:
  • Explore specific Papers on topics like consensus (Paxos, Raft), storage (Dynamo, Bigtable), or messaging (Kafka)
  • Read Books for deeper theoretical understanding
  • Take Courses from universities like MIT or ETH Zurich
  • Follow Blogs to see how theory applies in production systems
  • Use Testing frameworks like Jepsen to verify your own distributed systems
Remember: distributed systems are hard. Expect to revisit these foundational concepts many times as you encounter them in different contexts.

Build docs developers (and LLMs) love