This is Part 11 of my "From One User to One Million" series, where we'll build an understanding of System Design by following a simple application as it grows from a single user to millions. Instead of memorising technologies, we'll learn why they exist by solving real problems as they appear.
We've spent the last several articles making things faster by reducing work.
We stopped the database from answering the same question twice. We distributed reads across multiple replicas. We split data across shards so no single machine ever had to hold everything. We moved slow background tasks off the critical path so users don't have to wait for them.
Each of these solutions attacked the same underlying problem: the system was doing more work than it needed to, or concentrating too much work in one place.
But Part 10 ended by pointing at a different kind of problem entirely. One that has nothing to do with work.






