The challenges are built on top of a platform called Maelstrom, which in turn, is built on Jepsen. This platform lets you build out a “node” in your distributed system and Maelstrom will handle the routing of messages between the those nodes. This lets Maelstrom inject failures and perform verification checks based on the consistency guarantees required by each challenge.
The documentation for these challenges will be in Go, however, Maelstrom is language agnostic so you can rework these challenges in any programming language.
It’s no secret that distributed systems are infuriating and difficult. Even the best developers in the world can be brought to their knees in the face of cluster failures. If you get stuck on these challenges or want to see how other folks are solving them, checkout the #dist-sys-challenge tag on the Fly.io Community Discourse.
Can’t wait to start? The Echo challenge will get you up and running with a basic echo request/response to help you understand how Maelstrom works and to make sure you have everything running correctly.