Retry Storm Lab: un simulador para visualizar cómo los reintentos agravan las caídas

Fuentes: Retry Storm Lab: a deterministic simulator for retry-storm dynamics during partial outages

Retry Storm Lab es un simulador determinista en Python que reproduce cómo las políticas de reintentos pueden amplificar la carga y prolongar una incidencia parcial de un servicio dependiente. La herramienta modela peticiones nuevas y reintentos compitiendo por la misma capacidad y compara cuatro estrategias: reintento inmediato, espera fija, backoff exponencial y full jitter.

El proyecto parte de una observación técnica habitual: los reintentos mejoran la fiabilidad cuando los fallos son breves y queda capacidad libre, pero durante una caída parcial sostenida los clientes sincronizados multiplican la demanda, dejan sin recursos a las peticiones nuevas y mantienen el servicio sobresaturado incluso cuando empieza a recuperarse. El simulador hace visible ese bucle de realimentación.

En la práctica, el flujo consiste en generar un flujo estable de peticiones, reducir la capacidad útil durante una ventana de fallo configurable, reordenar los intentos fallidos con la política elegida y medir cuatro métricas: factor de amplificación, pico de demanda, peticiones abandonadas y tiempo de recuperación. Todas las políticas se evalúan sobre el mismo escenario y semilla aleatoria para asegurar comparaciones reproducibles.

Retry Storm Lab se distribuye como una librería instalable con pip install -e . que requiere Python 3.11 o superior, e incluye una interfaz en Streamlit con presets editables y una CLI con opciones como --preset, --compare y --json. Permite integración con la plataforma Telemetry.sh para registrar de forma agregada la política usada, bandas de capacidad y si la ejecución se recuperó, sin enviar datos crudos de carga.

El repositorio aclara que se trata de un modelo de colas deliberadamente pequeño, no de un planificador de capacidad en producción: prescinde de distribuciones de latencia de red, timeouts de cliente, autoscaling, circuit breakers y fallos correlacionados. Su objetivo es hacer las dinámicas de reintento fáciles de inspeccionar y discutir en sesiones de diseño y post mortem. La licencia es MIT.