Fly.io Distributed Systems Challenge

2 min read Original article ↗

Gossip Glomers

A series of distributed systems challenges brought to you by Fly.io.

Let’s Get Started

We’ve teamed up with Kyle Kingsbury, author of Jepsen, to build this series of distributed systems challenges so you can try your hand and see how your skills stack up.

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.

Got Stuck? Need Help?

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.

Let’s get started

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.

  1. Echo

    Get the hang of working with Maelstrom in Go by creating a node which is a binary that receives JSON messages

    Read More About Echo

  2. Broadcast

    Implement a broadcast system that gossips messages between all nodes in the cluster. Gossiping is a common way

    Read More About Broadcast