Understanding Distributed Systems 1.1
March 25, 2021Coordination is expensive as it reduces the availability and performance of distributed applications (PACELC theorem). I have extended…
Coordination is expensive as it reduces the availability and performance of distributed applications (PACELC theorem). I have extended…
I am excited to announce that the first edition of my book about distributed systems is finally complete! First things first, I have…
Sometimes a single process in a system needs to have special powers, like being the only one that can access a shared resource or assign…
At scale, any failure that can happen will eventually happen. Hardware failures, software crashes, memory leaks - you name it. The more…
I have released a new chapter of Understanding Distributed Systems ! It explores the different patterns at your disposal when designing…
An application typically starts its life as a monolith. Take a modern backend of a single-page Javascript application, for example - it…
I have released a new chapter of Understanding Distributed Systems : Resiliency Patterns. The chapter is all about failures and their…
The system design interview is a great way to assess the seniority of a candidate in an interview. You can find a lot on the Internet on how…
Imagine assigning some value to a variable, reading it back immediately after, and finding out that somehow the write had no effect at all…
In the second chapter of Understanding Distributed Systems , I explore the core building blocks at the heart of many distributed systems…
I have released the first chapter of Understanding Distributed Systems ! "Wait, what? Weren't you working on a video class?" - I hear you…
The response times of your service can cost you dearly if left unchecked. Even when a small fraction of requests experiences extreme…
There are two types of engineers, the ones that can quickly do estimates and the ones that can't. Are these people just smarter, or is there…
Why do you need to place your servers geographically close to your users? One of the reasons is to achieve lower latencies. That makes a lot…
Modern applications don't crash; they hang. One of the main reasons for it is the assumption that the network is reliable. It isn't. When…
I get asked this question a lot. I lost track of people I know that spend all their time brushing up on algorithmic puzzles and barely…
It's been three years since my last post on my old Wordpress blog! You can still find my earlier posts there as I was too lazy to move…
If a user has opted into submitting performance data to Mozilla, the Telemetry system will collect various measures of Firefox performance…
Technology allows companies to collect more data and with more detail about their users than ever before. Sometimes that data is sold to…
Writing good code is hard, writing a good analysis is harder. Peer-review is an essential tool to fight repetitive errors, omissions and…
How engaged are users for a certain segment of the population? How many users are actively using a new feature? One way to answer that…
This is a short post on the elegance of using abstract algebra for analytics in Scala. A monoid is a set that is closed under an…
Spark execution model Spark's simplicity makes it all too easy to ignore its execution model, and still manage to write jobs that eventually…