Digital communication and network reliability concepts

En 2026, enviar email ya no es “fire and forget”. Entre filtros anti-spam y politicas estrictas de reputacion IP, una rafaga de reintentos mal gestionada puede bloquear tu dominio.

El problema no es solo que falle el proveedor (SES, SendGrid, Mailgun), sino como reacciona tu sistema. Si reintentas miles de correos al mismo tiempo, provocas un Thundering Herd y puedes tumbar tu propia infraestructura.

1. Algoritmo: Exponential Backoff con Jitter

El Exponential Backoff incrementa el tiempo de espera en cada reintento. El Jitter agrega variacion aleatoria para evitar que todos los workers reintenten al mismo tiempo.

Formula

$$T_w = \min(\text{Cap}, \text{Base} \times 2^{\text{Attempt}} + \text{random_jitter})$$

  • Base: tiempo inicial (ej. 1 segundo).
  • Attempt: numero de intento actual.
  • Cap: limite maximo de espera (ej. 4 horas).
  • Jitter: variacion aleatoria (+/- 10-20%).

2. Arquitectura de colas y resiliencia

No proceses reintentos en el hilo principal. Usa colas para desacoplar trafico web de procesamiento en background.

Componentes clave:

  1. Main Queue: recibe eventos de salida.
  2. Retry Queue: almacena mensajes con delay segun backoff.
  3. Dead Letter Queue (DLQ): mensajes que fallan tras N intentos para inspeccion manual.

3. Clasificacion inteligente de errores

No todos los errores deben reintentarse.

Tipo de errorCodigo HTTP comunAccionMotivo
Transient429, 503, TimeoutRETRYSaturacion o fallo de red temporal
Permanent400, 404FAIL FASTPayload invalido; reintentar no ayuda
Reputation403, BouncedSTOPReintentar hard-bounce daña reputacion

4. Implementacion paso a paso

Paso 1: Idempotencia

Antes de llamar al proveedor, valida si ya se envio usando Idempotency-Key (id transaccional o hash de contenido).

Paso 2: Ejecucion con timeout

Haz la request con timeout estricto (5-10 segundos).

Paso 3: Gestion de fallos

Si hay Transient Error:

  1. Calcula nuevo delay con Backoff + Jitter.
  2. Incrementa contador de intentos.
  3. Reencola el mensaje en Retry Queue.

5. Conclusion

Una estrategia incremental de reintentos protege tu infraestructura y mejora deliverability. Al combinar Exponential Backoff, Jitter e Idempotency, tu sistema pasa de fragil a resiliente frente a picos y caidas de terceros.

Happy reading! ☕

Comments