[{"data":1,"prerenderedAt":23},["ShallowReactive",2],{"tag-list-en-distributed-systems":3},[4,15],{"title":5,"description":6,"tags":7,"path":12,"date":13,"img":14},"Retry Storms: How Good Clients Take Down Healthy Servers","A retry looks harmless: the request failed, so try again. Multiply that by every client, add one slow dependency, and retries turn into a self-inflicted DDoS. This walks from the naive retry loop to exponential backoff, jitter, retry budgets and circuit breakers, the caller-side half of resilience that pairs with rate limiting on the server.",[8,9,10,11],"Resilience","Distributed-Systems","Go","Retries","\u002Fbackend\u002Fapi-design\u002Fretry-storms","2026-07-11",null,{"title":16,"description":17,"tags":18,"path":21,"date":22,"img":14},"Why Redis Rate Limiting Breaks at Scale (and What Uber Does Instead)","A token bucket in memory is trivial. Put it behind Redis and it works, until it doesn't. This walks through rate limiting from one node, to a shared Redis, to why that model collapses at millions of requests per second, and the shift Uber made: enforce locally, coordinate globally, and drop by probability.",[19,9,10,20],"Rate-Limiting","Performance","\u002Fbackend\u002Fapi-design\u002Frate-limiting-at-scale","2026-07-10",1783842141282]