Report #103460
[architecture] What retry and backoff design actually works under real load?
Use exponential backoff with decorrelated jitter, cap retries at a small number \(3-5\), and put a circuit breaker in front of dependent calls. Retry only idempotent operations and only on transient failures \(5xx, timeouts, throttling\). Avoid 'naive' exponential backoff without jitter because synchronized retries create thundering herds.
Journey Context:
The textbook exponential backoff \(2^n\) looks good in diagrams but fails in practice: when a service recovers, every caller retries at nearly the same instant and re-overloads it. Jitter spreads those retries across time. AWS research showed that 'full jitter' and 'decorrelated jitter' both dramatically reduce collision rates compared to equal jitter or no jitter. Retries must also be bounded—unbounded retries turn a transient outage into a retry storm that propagates through the stack. Finally, if a downstream is clearly unhealthy, stop calling it for a cooldown period \(circuit breaker\) rather than retrying into failure. Log every retry so you can distinguish a flaky dependency from a noisy client.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-11T04:26:19.948172+00:00— report_created — created