Distributed Systems Fundamentals
A two day lecture & discussion class for engineers who would like 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.
There are no prerequisites for this class, but please, bring your questions, and any problems that you'd like to talk about! You may also wish to bring a notebook to take notes.
Notes for Organizers
This class is presented as a lecture accompanied by whiteboard illustrations, with frequent digressions for questions and discussion. A full outline of the course material is available here, but we can tailor the outline to your particular needs upon request.
Students are encouraged to ask questions! We recommend ~20-30 participants per class to encourage discussion, though any size is feasible.
A typical schedule might run from 9:00 to 5:00 on two consecutive days, with an hour for lunch, and breaks every hour or so to stretch and refresh.
- Seating for all participants
- A wall-mounted whiteboard, at least 6 feet wide
- A lectern or table for presenter notes
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. We'll conclude with general discussion of distributed systems test design, systems modeling, and verification techniques.
Prior programming experience and proficiency at the command line are strongly encouraged. If you have Clojure experience that's great, but if not, don't worry! We'll go over the language at the start of the class, and provide hands-on assistance throughout.
Notes for Organizers
This class begins with a lecture & slides introducing the Clojure language and the overall structure of Jepsen. The bulk of the class involves writing the test, alternating between Q&A, live-coding a section of the test, then helping each student with their own test. We'll follow the outline available here. If time allows, we'll conclude with a survey of test techniques in the body of published Jepsen tests.
Because of the individualized attention this class involves, we recommend no more than 40 participants per session.
If your team is already somewhat familiar with Clojure, and you have a small class size of ~10 participants, an accelerated, one-day version of this course is available for a reduced fee.
- Lectern with power and video hookups
- A projector & screen
- WiFi with SSH access to the public internet
- A dedicated Jepsen cluster for each participant. Jepsen can provide clusters for you, or we can help you set them up internally
- A computer for each participant, with SSH (22) and HTTP (8080) access to that participant's Jepsen cluster