Ask ten engineers to design Twitter. You get ten answers. Several are right.
System design isn't picking the best tech. It's turning vague requirements into explicit constraints — then choosing which pain you're willing to accept.
Every choice buys something and sells something.
Cache for speed → pay in staleness.
Replicate for safety → pay in lag.
Split into services → pay in network calls.
In the wild: Amazon's cart was built to stay writable even when servers disagree. A slightly wrong cart beats no cart.
