Exponential Backoff
Exponential backoff is a retry strategy in which the wait before each attempt grows multiplicatively: a short pause before the first retry, roughly double before the second, and so on, usually up to a cap.
The problem it solves is that naive retrying makes failures worse. A service that is failing because it is overloaded receives more traffic the moment its callers begin retrying immediately, which is the mechanism by which a slow dependency becomes an outage. Growing the interval gives the dependency room to recover instead of removing it.
On its own, though, backoff fixes only half the problem. If many clients fail at the same moment — which is what happens when a shared dependency stumbles — they all wait the same computed interval and retry in unison. The load arrives as a series of synchronized spikes rather than a flat stream, and the spikes can be large enough to re-break a service that had just recovered.
That is why backoff is normally paired with jitter, which randomizes the wait so clients spread out. Marc Brooker’s analysis for AWS makes the pairing the recommendation rather than an optimization.
Two practical limits are worth stating. Backoff needs a cap and a maximum attempt count, or a client retries for hours against something that is not coming back. And it is safe only where the operation can be repeated without harm — backoff controls when a retry happens, never whether repeating it is correct.
How it fits with timeouts, idempotency, and load shedding is worked through in Partial Failure, Timeouts, and Retries.
Discover more from Insightful Data Lab
Subscribe to get the latest posts sent to your email.
