"There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery"
If this made you curious, this tutorial is the right place to dive deeper into the interesting (sometimes weird) world of Distributed Systems.
When you think of constructing systems that can scale to billions of people, you have to think beyond single node programming patterns. This introduces a couple of intriguing challenges like how do you make thousands of nodes agree? Or jargons like CAP Theorem. To make matters even more complicated, most of the material on this subject is highly theoretical & geared towards advanced learners. This quickly discourages a lot of programmers who tend to learn better by doing rather than just reading about things.
Python has always been a great vehicle to learn complex technologies efficiently. It enables a programmer to cut through the weeds to focus on the core concepts. This was recently exemplified when Andrej Karpathy taught a way to train a GPT in pure python with microgpt.py.
Similarly, it can be an efficient vehicle to deconstruct the fundamentals of large scale systems, which are essential for a holistic view of modern day applications.
In this tutorial, we will have several hands on exercises to dive deeper into the tenets of reliability, availability & scalability. By simulating a Distributed Cluster with pure python code we'll poke the system, make it fail & closely study the perils of planet scale systems & how to overcome them.
Towards the end of the tutorial, you'll have a clear mental model of some of the most confusing concepts (Consistency, Consensus, Clocks etc) in distributed systems. The ultimate goal is to give you enough knowledge, curiosity & tooling so that you can explore this field on your own & be confident about building the next planet scale system.
Professionally, I've 8 years of experience in making large scale distributed systems.
Personally, I am a passionate tinkerer, learner & educator who sees tech as the vehicle for bringing transformative change.
My aim is to democratise access to technology to enable each of us to do more.