Errores, backoff y circuit breakers
Clasifica errores, espera con inteligencia y deja de golpear a un proveedor caído.
La resiliencia empieza por clasificar. Un error permanente no se arregla reintentando; uno transitorio, probablemente sí.
Backoff exponencial con jitter
Esperar siempre lo mismo entre reintentos sincroniza a todos tus workers y golpea al proveedor en oleadas. El backoff exponencial duplica la espera; el jitter la aleatoriza.
−const wait = 1000;+const base = 500, cap = 30000;+const wait = Math.random() * Math.min(cap, base * 2 ** attempt); // full jitter
Circuit breaker
Si un proveedor falla el 50% de las peticiones durante un minuto, seguir enviando solo empeora las cosas. Un circuit breaker abre el circuito: las llamadas fallan de inmediato (o se desvían a otra ruta) y, tras un tiempo, deja pasar algunas de prueba.
cerrado ──(tasa de error > umbral)──▶ abierto
▲ │ (tras 30 s)
└──(pruebas OK)── semiabierto ◀──────┘El circuit breaker completa el cuadro: cuando un proveedor falla de forma sostenida, dejar de llamarlo por un tiempo protege a ambos sistemas y te permite activar un proveedor alternativo sin esperar timeouts acumulados.