Saltar al contenido
nvíame
Capítulo 5 de 513 min9 oct 2026

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.

Backoff
−const wait = 1000;
+const base = 500, cap = 30000;
+const wait = Math.random() * Math.min(cap, base * 2 ** attempt); // full jitter
Mostrando: antes · haz clic para alternar

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.

Se completa automáticamente al leer el 80%.

Comentarios (3)

Sofía Castillo9 oct 2026

¿Debo reintentar un 400?

Equipo nvíameAutor9 oct 2026

No. Los 4xx (salvo 408 y 429) indican un problema en tu petición; reintentar dará el mismo resultado. Reintenta 5xx, 429 y errores de red.

Diego Fernández9 oct 2026

Lo apliqué en el proyecto del trabajo. La sección «Errores, backoff y circuit breakers» me ahorró una discusión larga con el equipo: ahora tenemos un criterio compartido.

Joaquín Vega9 oct 2026

¿Hay alguna diferencia importante si lo implemento en un servicio con varias instancias detrás de un balanceador?

Equipo nvíameAutor9 oct 2026

Sí: todo estado que hoy vive en memoria (contadores, sesiones, claves vistas) debe moverse a un almacén compartido con TTL, como Redis. Si no, cada instancia ve solo una parte de la historia.

Los comentarios se guardan solo en este navegador.