Distributed Systems Fundamentals
A two day lecture & discussion class for engineers who need an overview of distributed systems concepts and techniques, from papers to production. We cover the basics of nodes and networks, common network protocols, clocks, availability, consistency, and a spectrum of distributed algorithms, followed by a discussion of latency scales, engineering patterns, and running services in production. We recommend ~15-30 participants per class to encourage discussion, though any size is feasible.
- A whiteboard
A two day workshop which guides students through writing a Jepsen test: from a fresh cluster to finding a consistency anomaly in an open-source database. We begin with an an introduction to the Clojure programming language, discuss the architecture of the Jepsen library, and spend the bulk of the class writing a test itself. Smaller class sizes (~4-12 participants) are recommended. Prior programming experience and proficiency at the command line are strongly encouraged.
- Lectern with power and video hookups
- A *nix computer for each participant, with
- Oracle JDK8
- Internet access
- Root or sudo access to a five-node Debian Jessie cluster (one cluster per participant)