The workings of large distributed systems fascinate me. At the same time, working at Twitter has taught me hard lessons about the variety of exciting failure scenarios of a scaled system. “holy shit, everything’s on fire” moments are my personal favourites.
So, I’ve been reading up.
Here’s some stuff I’ve read and some I haven’t. Enjoy.
- What We Talk About When We Talk About Distributed Systems — Fantastic article (and talk) with grounding in all the terminology.
- Aphyr on Distributed Systems — Great blog. Kyle works on Jepsen, and I learn something from every one of his posts.
- Dist-sys Class Notes – More Aphyr, this time with notes from his distributed systems class. Great stuff, learned a tonne.
- Notes on Distributed Systems for Young Bloods — Jeff Hodges on how to think about distributed systems.
- Time, Clocks, and the Ordering of Events in a Distributed System — One of the dist-sys papers. Have dipped in and out, need to read it properly.
- Readings in Database Systems — aka. the “Red Book”. Need to read, though it’s more about data that dist-sys.
- Clients are Jerks — Catie McCaffrey on misbehaving clients. Good stuff.
- Engineering for the Long Game — Really great talk from Velocity in Santa Clara 2015.
- The Language of the System — One of my all time favourite talks, by Rich Hickey. Not so much about dist-sys, but mind-expanding on the differences between systems and programs.
- There is No Now — Problems with simultaneity in distributed systems. Eye-opening.
There’s way more that I’ve forgotten about, so I’ll come back and update this when I remember.
There’s a good amount of writing on this topic, and it’s becoming more and more accessible (less academic, more practical), but I haven’t seen much written from the client-side perspective so I might try to contribute in some small way in that space. Poke me on Twitter if you want that article.