Minami's Bubble 🫧

Diving into Distributed Systems: My Brain Dump

Just finished reading this incredible article on distributed systems, and my mind is buzzing! Thanks Ludwig sharing this 💯. Link to notes: Notes Link

There's so much to unpack here, but I want to jot down my thoughts while they're fresh. Here goes:

Failure is the norm, not the exception

Wow, I never really thought about it, but distributed systems fail in ways I hadn't considered before. It's not just about total failures, but partial ones too. Note to self: Next time I'm designing a system, I need to assume things will fail and plan accordingly. Maybe I should revisit that project I'm working on...

Money talks (or rather, costs matter)

It hit me that building robust distributed systems is expensive. No wonder my last project went over budget! I need to factor in these costs from the get-go. Also, explains why there aren't as many open-source distributed systems out there. Hmm, maybe there's an opportunity there?

Coordination is a pain

The article talks about avoiding coordination between machines where possible. Makes sense - the more machines have to agree on something, the harder it gets. I'm thinking about that messaging system I worked on last year. Could we have made it simpler by reducing coordination? Something to ponder.

If it fits in memory, you're probably overthinking it

This one made me chuckle. I've definitely been guilty of overcomplicating things that could have been solved on a single machine. Mental note: Start simple, scale when necessary.

"It's slow" - three words that give me nightmares

Debugging performance issues in distributed systems sounds like a special kind of hell. I'm going to look into tools like Dapper and Zipkin. Anything to make my life easier when I inevitably hear those dreaded words.

Backpressure isn't just for plumbers

I've heard about backpressure before, but I never really grasped its importance until now. It's all about handling failure gracefully and preventing system overload. I need to implement this in my current project ASAP.

Metrics, metrics, metrics!

The importance of metrics really stood out to me. I've been relying too much on log files, which apparently can be misleading. Time to up my metrics game. Oh, and use percentiles instead of averages - that's a game-changer!

Feature flags are my new best friend

I love the idea of using feature flags for rolling out infrastructure changes. It's like having a safety net. Definitely going to try this approach in my next deployment.

IDs matter more than I thought

Choosing ID spaces wisely can make a big difference in system design. I'm thinking about how we structure our data at work - could we make it more efficient with a different ID scheme?

Caching gotchas

The warning about writing cached data back to persistent storage is eye-opening. I think we might be doing this in one of our systems. Need to check on that tomorrow!

CAP theorem - not just theoretical

I always thought of the CAP theorem as something abstract, but it's actually a great tool for critiquing system designs. Mental note: Apply CAP theorem constraints to our current architecture and see what insights pop up.

Extract, extract, extract

The benefits of extracting services make a lot of sense. It's not just about code organization, but also about deployment and maintenance. I'm spotting a couple of candidates for extraction in our monolith. Time to make a proposal!

Final thoughts

This article has given me a lot to think about. I feel like I've leveled up just by reading it. There's so much more to learn, but I'm excited to apply these insights to my work. Distributed systems are complex beasts, but with these principles in mind, I feel better equipped to tame them.

Next steps:

  1. Review our current projects for potential improvements
  2. Look into better metrics and monitoring tools
  3. Start a discussion about service extraction with the team
  4. Practice estimating system capacity (those back-of-the-envelope calculations sound crucial)

Time to put this knowledge into action!

Follow me on X/Twitter and my Github