Why Great Systems Say "No" More Often Than You Think
A system doesn't fail because it rejects requests — it fails because it accepts too many. Why rate limiting and the 429 status code protect the experience for everyone.
- Architecture Breakdown
- Rate Limiting
- API Design
- System Design
- Software Architecture
(Rate Limiting Explained)
One idea completely changed how I think about scalable systems. The best systems aren't the ones that accept every request. They're the ones that know when to say "No."
That sounds backwards. Isn't the whole point of software to serve users?
Yes. But imagine your application suddenly receives 10 million requests. Should it process all of them?

If it tries...
- The API becomes overloaded.
- The database struggles to keep up.
- Response times increase.
- Retries begin.
Soon, even legitimate users can't complete simple actions.
The system didn't fail because it rejected requests. It failed because it accepted too many.
That's why internet-scale platforms use rate limiting.
Instead of saying yes to everything, they make intelligent decisions.
- Limit requests from a single client.
- Protect critical endpoints like login and payments.
- Slow down abusive traffic.
- Preserve capacity for legitimate users.
This isn't about restricting users. It's about protecting the experience for everyone.
One lesson that's stayed with me throughout my career is this: Availability isn't measured by how many requests you accept. It's measured by how many users you continue serving when traffic explodes.
The next time you see: 429 — Too Many Requests
Don't think of it as an error. Think of it as the system making a difficult — but necessary — architectural decision.
Because sometimes... The most reliable systems are the ones that aren't afraid to say "No."
Have you ever worked on a system where rejecting some requests actually improved reliability?
Keep reading
Why Your Frontend Shouldn't Panic When APIs Say "Too Many Requests"
Instantly retrying every failed request doesn't help a struggling backend recover — it feeds the retry storm. Why Retry-After, exponential backoff, and request deduplication are frontend architecture decisions.
Why More Servers Won't Always Fix Your Performance Problems
Doubling the server count and still slow — because the bottleneck was never the web servers. Why scaling means finding what can't scale, not adding capacity everywhere.
Why Great Systems Don't Query the Database Every Time
The database wasn't overloaded — the application was asking the same question thousands of times. How caching lets systems scale by making databases work less.