Do you want to be able to test your software rigorously and make accurate claims? Help your users choose databases and queues that fit their needs? Join Kyle Kingsbury on this exciting two day course and learn how to evaluate distributed system correctness for yourself!
Over two days you will be guided through writing a Jepsen test: from a fresh cluster to finding a consistency anomaly in an open-source database. Beginning with an introduction to the Clojure programming language, you will discuss the architecture of the Jepsen library, spend the bulk of the class writing a test itself, and conclude with general discussion of distributed systems test design, system modelling, and verification techniques.
Learn how to:
- Write a Jepsen test from scratch
- Design a model of a concurrent system
- Explore concurrent histories
- Interpret failing results
- Improve reproducibility
- The Clojure language
- Jepsen overview
- Database setup
- Modeling state machines
- Writing a client
- Interpreting results
- Introducing failures
- Tuning tests to reproduce failures faster
- Optimizing tests
- Advanced techniques
This class is for anyone who uses or builds distributed systems, and wants to experimentally evaluate their safety properties.
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! You'll go over the language at the start of the class, and hands-on assistance will be provided throughout.
You will need some basic Linux CLI experience and proficiency with an editor such as Vim, Emacs or nano.
Bring your own hardware
Delegates are required to bring their own laptop to participate in this course. You will need a machine capable of running an SSH client.