Distributed system is a bunch of computers working together to get something done, even though they're scattered all over the place and constantly gossiping like teenagers. It's like herding cats, except the cats are servers and they're all trying to stay in sync while dealing with network delays and crashes.
I was trying to debug this gnarly issue in our distributed system when I realized I'd rather be waterboarded than deal with another race condition.
Our new distributed system is so resilient, it could probably survive a zombie apocalypse - although the developers maintaining it might not.
If you want to dive deep into the patterns used in real-world distributed systems, check out this Catalog of Patterns of Distributed Systems by Unmesh Joshi. It covers everything from clocks to consensus algorithms.
For a high-level look at the trade-offs involved in using microservices (which are often built as distributed systems), take a gander at Microservice Trade-Offs by Martin Fowler. Spoiler alert: distribution isn't all sunshine and rainbows.
If you really want to geek out on formally verifying distributed systems using fancy math, Verifying Distributed Systems with Isabelle/HOL by Martin Kleppmann is the rabbit hole for you. Hope you like Greek letters!
Note: the Developer Dictionary is in Beta. Please direct feedback to skye@statsig.com.