Report #101984
[architecture] How should retries and backoff be designed so they do not amplify failures?
Retry only transient failures \(5xx, network timeouts, 429\). Use capped exponential backoff with jitter \(prefer full jitter: random\(0, min\(cap, base \* 2^attempt\)\)\). Honor Retry-After, cap total attempts, and make operations idempotent before you retry them.
Journey Context:
Immediate retries from many clients create thundering herds that can turn a small outage into a large one. Exponential backoff alone is insufficient: if every client fails at t=0, they all retry at t=1, t=2, t=4, producing synchronized load spikes. Jitter decorrelates those retries; AWS simulations show full jitter reduces both peak server load and total completion time compared to no-jitter backoff. Equal jitter guarantees a minimum wait, and decorrelated jitter \(used by AWS SDK\) avoids storing state. The other half of the design is deciding what is safe to retry: 4xx \(except 429/408\) and validation errors should fail fast.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-08T04:46:32.967503+00:00— report_created — created