Distributed Systems Learning Path

7 minute read

Published:

Building intuition and skill in distributed systems takes time.
This roadmap is organized into three levels — Beginner, Intermediate, and Advanced — and is designed for students who eventually want to do research or build real systems in distributed systems and databases.


🧩 Big Picture

For the purposes of learning, we can roughly break the space into four areas:

  • Distributed storage – file systems, databases, key–value stores, table stores
  • Distributed computation – large-scale data processing frameworks
  • Distributed communication & coordination – RPC, consensus, service coordination
  • Distributed machine learning – training and inference at scale

A solid learning path touches all four, with progressively more depth.


🧠 Prerequisites

Before diving in:

  • Be comfortable with at least one systems-oriented language:
    Go, Java, C++, or Rust (Python is fine for scripting and prototyping).
  • Have basic background in:
    • operating systems (threads, processes, scheduling)
    • networking (sockets, RPC, basic protocols)
    • data structures and algorithms

You don’t need to be an expert; you will reinforce these along the way.


🧱 Knowledge Map

1. Distributed Storage

Architecture types

  • Central coordinator vs. decentralized peer-to-peer
  • Shared-nothing vs. shared-storage

System families

  • Distributed file systems
  • Distributed databases
  • Distributed key–value stores
  • Distributed table stores and column stores

2. Distributed Computation

  • Hadoop MapReduce
  • Apache Spark
  • Apache Flink
  • How they differ in:
    • execution model
    • fault tolerance
    • latency vs. throughput trade-offs

3. Distributed Communication & Coordination

  • RPC frameworks: gRPC, Thrift
  • Coordination systems: ZooKeeper, etcd
  • Consensus protocols: Raft, Paxos, Zab

4. Distributed Machine Learning

  • Spark MLlib
  • Parameter servers
  • Distributed TensorFlow / PyTorch
  • Data-parallel vs. model-parallel patterns

You don’t need to master all of these at once. The rest of this roadmap gives a sequence of concrete resources to follow.


🧩 Beginner Level

Goal:

Build core intuition for replication, consistency, and failure while implementing small systems.


0. High-level overview

Distributed Systems for Fun and Profit

  • 🔗 https://book.mixu.net/distsys/
  • Short, highly readable book.
  • Explains key ideas like replication, consistency, and design trade-offs behind systems such as Dynamo, Bigtable, and Hadoop.

1. Core course: MIT 6.824 Distributed Systems

Why this course

  • Teaches fundamentals through Go implementations.
  • Labs cover:
    • MapReduce
    • Raft consensus
    • Replicated key–value servers
  • You will feel how failures and timeouts behave in practice.

👉 If you’re new to Go:


1′. Optional: CMU 15-440 Distributed Systems

A solid undergraduate-level course.
If you want a smoother ramp-up, one option is:

15-440 → 6.824 → 15-712 (later at intermediate/advanced).


1″. Conceptual complement: Cambridge Concurrent and Distributed Systems

Taught by Martin Kleppmann (author of Designing Data-Intensive Applications).
Great for developing a clean conceptual model of concurrency and communication.


2. Database fundamentals: CMU 15-445

CMU 15-445 Intro to Database Systems

Covers:

  • storage and buffer pool
  • index structures
  • query execution
  • transactions and MVCC

Labs use bustub in C++.
If you are not a C++ user, you can still follow lectures and read the code at a higher level.


3. Core reading: Designing Data-Intensive Applications (DDIA)

Designing Data-Intensive Applications by Martin Kleppmann

What you get:

  • unified big-picture view of storage, streams, and batch/online systems
  • explanations for why systems like Kafka, Cassandra, and Spanner look the way they do
  • many concrete design trade-offs and real-world stories

3′. Optional textbook: Distributed Systems – Concepts and Design

Distributed Systems: Concepts and Design (Coulouris et al.)

Contains a traditional textbook treatment of distributed systems.
Good as a reference to clarify terms and models.


3″. Short notes: Notes on Distributed Systems for Young Bloods

Short, practical notes on what makes distributed systems hard in real life.


🧱 Intermediate Level

Goal:

Connect coursework to theoretical models and real research papers.


1. Roadmap paper: Distributed Systems Theory for the Distributed Systems Engineer

This is a paper roadmap — it lists key results (CAP, FLP, Paxos, etc.) and tells you why they matter for engineers.


2. Advanced database systems: CMU 15-721

A graduate-level seminar focusing on:

  • reading and presenting papers
  • understanding the design of modern database systems
  • thinking like a systems researcher

2′. Seminar-style DS course: Stanford CS244b

Discussion-based, centered around classic and modern distributed systems papers.
Good for training your paper reading + presentation skills.


3. Textbook: Distributed Systems (Tanenbaum & van Steen)

Nine core chapters:

  1. Introduction
  2. Architecture
  3. Processes
  4. Communication
  5. Naming
  6. Coordination
  7. Consistency
  8. Fault Tolerance
  9. Security

Comes with figures and some Python examples.
It’s a good “second textbook” once you already know the basics.


4. Practical storage book: Large-Scale Distributed Storage Systems

Short and practical discussion of:

  • different kinds of storage systems
  • their architectures
  • where the bottlenecks come from

4′. Theory deep dive (optional): Nancy Lynch – Distributed Algorithms

Mathematically rigorous and challenging.
Best approached once you already have some intuition about consensus and failures.


🧬 Advanced Level

Goal:

Read and implement real systems; understand research problems and trade-offs at scale.


1. The “Google & Amazon” papers

These four papers are foundational:

  • GFS – Google File System
  • MapReduce – programming model + runtime
  • Bigtable – wide-column storage
  • Dynamo – highly available key–value store

Example links / collections:


2. Hands-on practicum: TiDB Talent Plan

PingCAP TiDB Talent Plan

Guided labs to implement components inspired by TiDB/TiKV using Go or Rust:

  • storage engine
  • Raft-based replication
  • simple distributed transactions

Perfect follow-up after MIT 6.824.


3. Curated reading lists

Some good collections:

Pick a small set of papers at a time and write notes after reading.


4. Consensus & transactions papers

Examples worth reading (at least in summary):

For PhD applications, writing paper notes on a subset of these is excellent evidence of depth.


5. Open-source projects to study

You don’t need to understand every line of code. Start by tracing:

  • the write path
  • the read path
  • how failures are detected and handled

Storage:

Consensus & coordination:

Computation:


6. Reinforce prerequisites as needed

As you go deeper, it’s normal to circle back to:

  • computer architecture
  • operating systems
  • networking
  • compilers / runtimes

Distributed systems sit on top of all of these.


🧭 Summary

LevelFocusMain Goal
BeginnerLabs + core concepts (6.824, 15-445, DDIA)Build intuition and implementation skills
IntermediatePaper roadmaps and advanced coursesConnect theory with real systems
AdvancedClassic papers, open-source, and research topicsThink and work like a systems researcher/engineer

This roadmap is not meant to be followed rigidly.
Pick a starting point that fits your background, alternate between theory and implementation, and write down what you learn — that’s how the knowledge becomes your own.