Retry Exponential Backoff

DevOps 🟡 Mid

Definition

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é.
#devops#resilience#interview