Every Large-Scale System Is Sacrificing Something
The CAP theorem without the jargon. Every distributed system trades consistency, availability or partition tolerance — the skill is choosing deliberately.
- System Design Fundamentals
- CAP Theorem
- Backend
- System Design
- Software Architecture
One of the biggest surprises in System Design is realizing that architecture is rarely about finding the perfect solution.
It's about choosing which compromise you're willing to live with. Take a banking application.
If I transfer money between accounts, I want the balance to be correct immediately. Consistency matters.

Now think about a social media feed. If a post takes a few seconds to appear everywhere, most users won't notice. Availability matters more.
Different systems optimize for different outcomes. And that's exactly what makes distributed systems interesting.
At scale, network failures happen. Servers become unreachable. Regions go offline. When that happens, systems are often forced to choose between:
- Returning the most up-to-date data
- Remaining available to users Not both.
This idea is commonly known as the CAP Theorem.
But the practical lesson is much simpler: Every architecture decision comes with a trade-off.
There is no design that maximizes everything. The best engineers aren't the ones who avoid trade-offs.
They're the ones who understand them. Because in the real world, architecture isn't about perfection.
It's about making the right compromise for the business problem you're solving.
Question: What's a trade-off you've made in a system that looked wrong on paper but worked well in practice?
Keep reading
Why Companies Don't Store Everything in One Database
Replication, sharding and read replicas — why large systems split data across many databases, and the trade-offs each strategy forces you to accept.
The Fastest Database Query Is the One You Never Execute
Caching explained from first principles — what to cache, where to put it, and why the cheapest query is the one your database never sees.
One Server Is Never the Problem. One Server Is the Risk
A single server is not a performance problem, it is an availability problem. How load balancing removes the single point of failure before it costs you uptime.