All Tracks
15 tracks covering distributed systems from foundations to advanced topics. Each track builds on concepts from previous ones.
Foundations
Core concepts and RPC fundamentals
The Messenger
Build the foundation of distributed communication. You will implement a Maelstrom node that handles JSON messages, processes initialization, and responds to echo requests. This track teaches the fundamental protocol that underlies all subsequent challenges.
The Identifier
Solve the fundamental problem of generating globally unique identifiers in a distributed system. You will implement various ID generation strategies, handle network partitions, and ensure uniqueness across nodes without centralized coordination.
The Gossiper
Implement efficient information propagation across a cluster. You will build broadcast protocols from basic flooding to optimized gossip with batching, learning how distributed systems share information without central coordination.
Consensus
Agreement protocols and distributed coordination
The Counter
Explore the challenges of maintaining consistent state across distributed nodes. You will encounter the lost update problem, implement CRDTs, and learn how distributed systems achieve convergence without coordination.
The Elector
Learn the fundamentals of distributed consensus through leader election. You will implement node states, heartbeats, randomized timeouts, and vote handling, building the foundation for the full Raft protocol.
The Consensus
Complete your Raft implementation with log replication. You will build log matching, commitment tracking, and apply entries to state machines, creating a fully functional consensus layer.
The Store
Build a linearizable key-value store on top of your Raft implementation. Handle client requests, manage sessions, ensure read consistency, and implement client retry logic.
Scalability
Horizontal scaling and performance patterns
Caches
Learn how caching improves read performance in distributed systems. Build request node caches, global caches, and distributed caches with consistent hashing. Master cache eviction and invalidation strategies.
Proxies
Build proxy servers that relay requests, deduplicate calls, and implement collapsed forwarding to reduce backend load. Learn how proxies serve as building blocks for scalable architectures.
Indexes
Build indexing systems for fast data retrieval in distributed storage. Implement hash indexes, B-Trees, LSM Trees, and secondary indexes. Learn how databases achieve efficient lookups at scale.
Load Balancers
Implement load balancing strategies to distribute traffic across backend servers. Build Layer 4 and Layer 7 balancers with health checking and various algorithms.
Queues
Build message queue systems for decoupling producers and consumers. Implement various delivery guarantees from at-most-once to exactly-once, learning the patterns that enable reliable asynchronous communication.
Advanced
Complex distributed algorithms and paradigms
The Sharder
Implement horizontal scaling through sharding. Build shard controllers, consistent hashing, configuration changes, and data migration to create a scalable distributed storage system.
The Coordinator
Implement distributed transactions with two-phase commit, three-phase commit, and saga patterns.
Advanced
Explore advanced distributed systems topics: MapReduce for batch processing, distributed hash tables, Byzantine fault tolerance, and real-time stream processing.