Retry Exponential Backoff
DevOps 🟡 MidDefinition
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
Retry immédiat en boucle : amplifie la surcharge du service déjà en difficulté.