Retry Exponential Backoff
DevOps 🟡 MidDéfinition
Stratégie de retry augmentant le délai exponentiellement entre chaque tentative (1s, 2s, 4s, 8s...) avec jitter aléatoire pour éviter le thundering herd.
Analogie
Rappeler quelqu'un qui ne répond pas : attendre 1 min, puis 5 min, puis 15 min au lieu de spammer.
Exemple de code
async function retryWithBackoff(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try { return await fn(); }
catch (e) {
const delay = Math.pow(2, i) * 1000 + Math.random() * 1000;
await sleep(delay);
}
}
throw new Error('Max retries exceeded');
}
Cas d'usage
Appels réseau vers des services externes pouvant avoir des indisponibilités temporaires.
Anti-pattern
Termes liés
En entretien
Explique-moi le principe du retry exponential backoff.
C'est une stratégie de retry qui augmente le délai exponentiellement entre chaque tentative (1s, 2s, 4s, 8s...) avec un jitter aléatoire pour éviter le thundering herd. C'est comme rappeler quelqu'un qui ne répond pas : attendre 1 min, puis 5 min, puis 15 min au lieu de spammer.
Dans quel contexte utiliser ce pattern ?
Pour les appels réseau vers des services externes pouvant avoir des indisponibilités temporaires. Le code type calcule le délai avec Math.pow(2, i) * 1000 + Math.random() * 1000 avant de retenter.
Pourquoi un retry immédiat en boucle est-il dangereux ?
Parce qu'il amplifie la surcharge du service déjà en difficulté au lieu de lui laisser le temps de récupérer. C'est justement ce que le backoff exponentiel et le jitter cherchent à éviter.
Fiche mise à jour le 2026-09-27