- El 19 y 20 de octubre de 2025, en la región AWS N. Virginia (us-east-1), Amazon DynamoDB y varios servicios clave sufrieron una interrupción prolongada
- La falla comenzó cuando se generó por error un registro DNS vacío e incorrecto debido a una condición de carrera (race condition) latente dentro del sistema automático de administración DNS de DynamoDB
- Como resultado, se produjeron en cadena fallas en la creación de instancias EC2, errores de conexión en Network Load Balancer (NLB), y latencias y fallas de API en muchos servicios como Lambda, ECS y Redshift
- AWS identificó la causa raíz como un conflicto de actualizaciones concurrentes anómalas entre los DynamoDB DNS Enactor, y realizó una recuperación manual hasta restablecer completamente el servicio alrededor de las 2:20 PM del 20 de octubre
- Este incidente deja en evidencia la complejidad de las interdependencias entre los sistemas internos de automatización de AWS, y anticipa mejoras estructurales para reforzar la resiliencia de DNS, EC2 y NLB
Resumen del incidente
- La interrupción comenzó el 19 de octubre de 2025 a las 11:48 PM (PDT) y terminó el 20 de octubre a las 2:20 PM (PDT)
- Hubo tres periodos principales de impacto:
- 19 de octubre 11:48 PM ~ 20 de octubre 2:40 AM: fuerte aumento en la tasa de errores de la API de DynamoDB
- 20 de octubre 5:30 AM ~ 2:09 PM: aumento de errores de conexión en NLB
- 20 de octubre 2:25 AM ~ 10:36 AM: fallas en la creación de nuevas instancias EC2 y problemas de conectividad de red
- La falla comenzó en un defecto del sistema de administración DNS de DynamoDB y se propagó a múltiples servicios como EC2, NLB, Lambda y Redshift
Causa e impacto de la falla de DynamoDB
- Se activó un defecto latente en el sistema automático de administración DNS de DynamoDB, y el registro DNS de
dynamodb.us-east-1.amazonaws.com se actualizó por error a un estado vacío
- El sistema está dividido en dos componentes:
- DNS Planner: monitorea el estado del balanceador de carga y genera nuevos planes DNS
- DNS Enactor: aplica los cambios en Route53
- Se produjo una condición de carrera (race condition) entre los DNS Enactor desplegados de forma independiente en tres zonas de disponibilidad (AZ)
- El primer Enactor aplicó un plan antiguo mientras estaba retrasado
- El segundo Enactor aplicó el plan más reciente y luego eliminó el plan antiguo, quitando todas las direcciones IP y llevando al sistema a un estado inconsistente
- La recuperación automática falló, por lo que fue necesaria intervención manual (manual intervention)
- Justo después de la falla a las 11:48 PM, todos los servicios y el tráfico de clientes que dependían de DynamoDB sufrieron fallas de conexión
- Los clientes que usaban tablas globales pudieron enviar solicitudes a réplicas de otras regiones, pero hubo retraso de replicación (replication lag)
- A las 12:38 AM, ingenieros de AWS confirmaron que el estado de DNS era la causa del problema
- A la 1:15 AM, una medida temporal de recuperación restauró parte de la conectividad de servicios internos
- A las 2:25 AM se restauró completamente la información DNS, y a las 2:40 AM toda la conectividad volvió a la normalidad
Impacto en Amazon EC2 y proceso de recuperación
- Entre el 19 de octubre a las 11:48 PM y el 20 de octubre a la 1:50 PM se registraron aumentos en la tasa de errores de la API de EC2, fallas en la creación de instancias y mayor latencia
- Las instancias ya en ejecución no se vieron afectadas
- La administración de instancias EC2 utiliza dos subsistemas: DropletWorkflow Manager (DWFM) y Network Manager
- DWFM administra el estado de los servidores físicos (“droplet”) y ejecuta verificaciones periódicas de estado
- Network Manager propaga la configuración de red de las instancias
- Debido a la falla de DynamoDB, las verificaciones de estado de DWFM fallaron y expiraron los leases de los droplet
- Tras la recuperación de DynamoDB a las 2:25 AM, DWFM intentó reconectarse, pero por la gran cantidad de droplet se produjo un colapso por congestión (congestive collapse)
- A las 4:14 AM, ingenieros reiniciaron selectivamente hosts de DWFM para vaciar las colas y avanzar con la recuperación
- A las 5:28 AM se restauraron todos los leases de droplet y se reanudó la creación de nuevas instancias
- Después, Network Manager procesó el backlog de propagación de estado de red, lo que provocó demoras en la conectividad de red
- A las 10:36 AM los tiempos de propagación de red volvieron a la normalidad
- A las 11:23 AM comenzó la relajación del throttling, y a la 1:50 PM EC2 se recuperó por completo
Impacto en Network Load Balancer (NLB)
- Entre las 5:30 AM y las 2:09 PM del 20 de octubre, algunos clientes experimentaron un aumento de errores de conexión en NLB
- NLB tiene una arquitectura multitenant y enruta tráfico a instancias EC2 backend
- La causa fue la falla de health checks debido a retrasos en la propagación del estado de red
- La configuración de red de las nuevas instancias EC2 agregadas no se completó, por lo que fallaron los health checks
- Los resultados de health checks fluctuaban de forma inestable, haciendo que nodos de NLB fueran retirados del DNS y luego reincorporados
- A las 6:52 AM, el sistema de monitoreo detectó el problema y los ingenieros iniciaron la respuesta
- El aumento de carga en el subsistema de health checks activó un failover automático de DNS por AZ
- A las 9:36 AM se desactivó el failover automático y regresaron todos los nodos sanos
- A las 2:09 PM, tras la recuperación de EC2, se reactivó el failover automático
Impacto en otros servicios de AWS
- AWS Lambda:
- Entre el 19 de octubre a las 11:51 PM y el 20 de octubre a las 2:15 PM hubo errores y latencia en la API
- La falla de DynamoDB provocó errores en la creación y actualización de funciones, y retrasos en el procesamiento de eventos de SQS/Kinesis
- A las 7:04 AM, fallas de health checks en NLB redujeron la capacidad de sistemas internos y limitaron las invocaciones asíncronas
- A las 2:15 PM se completó el procesamiento de todo el backlog y el servicio volvió a la normalidad
- ECS, EKS, Fargate:
- Entre el 19 de octubre a las 11:45 PM y el 20 de octubre a las 2:20 PM hubo fallas en la ejecución de contenedores y retrasos en el escalado de clústeres
- Amazon Connect:
- Entre el 19 de octubre a las 11:56 PM y el 20 de octubre a la 1:20 PM hubo errores en llamadas, chat y procesamiento de casos
- Tras la recuperación de DynamoDB, la mayoría de las funciones volvió a la normalidad, pero después de las 7:04 AM reaparecieron errores por el impacto en NLB y Lambda
- A la 1:20 PM se completó la recuperación total
- AWS STS:
- Entre el 19 de octubre a las 11:51 PM y el 20 de octubre a las 9:59 AM hubo errores y latencia en la API de autenticación
- Tras la recuperación de DynamoDB hubo una normalización temporal, pero los problemas en NLB volvieron a causar errores
- Inicio de sesión de IAM e Identity Center:
- Entre el 19 de octubre a las 11:51 PM y el 20 de octubre a la 1:25 AM aumentaron las fallas de autenticación
- Tras la recuperación de DynamoDB el servicio volvió a la normalidad
- Amazon Redshift:
- Entre el 19 de octubre a las 11:47 PM y el 20 de octubre a las 2:21 AM fallaron consultas y modificaciones de clústeres
- Tras la recuperación de DynamoDB, algunos clústeres siguieron inestables por la falla en EC2
- A las 4:05 AM del 21 de octubre se completó la recuperación total
- Debido a una dependencia con la API de IAM, también hubo fallas temporales de consultas en regiones globales
- Otros servicios:
- También se vieron afectados Managed Workflows for Apache Airflow, Outposts y AWS Support Center, entre otros
Medidas posteriores y plan de mejoras
- Desactivación total de la automatización de DynamoDB DNS Planner y Enactor; antes de reactivarla se corregirá la condición de carrera y se agregarán protecciones adicionales
- NLB: se introducirá un mecanismo de control de velocidad para limitar la capacidad que un solo NLB puede retirar cuando fallen los health checks
- EC2:
- Se construirá una nueva suite de pruebas que incluya flujos de recuperación de DWFM
- Se mejorará el throttling inteligente del sistema de propagación de datos para agregar limitación de solicitudes según el tamaño de la cola de espera
- AWS está revisando adicionalmente formas de acortar el tiempo de recuperación y prevenir incidentes similares mediante un análisis general de interdependencias entre servicios
Conclusión y disculpa
- AWS ofreció una disculpa oficial por el impacto de este incidente en sus clientes
- Reconoció que, aunque ha mantenido una alta disponibilidad en sus servicios, esta interrupción tuvo un impacto significativo en los negocios de los clientes
- AWS prometió tomar este incidente como lección para fortalecer la resiliencia de sus sistemas de automatización y sus procedimientos de respuesta ante fallas
2 comentarios
Dicen que es la secuela de haber despedido a los seniors... ¿es cierto?
Opiniones en Hacker News
Siempre digo lo mismo sobre este tema. Si todavía no has leído el texto de Richard Cook, te recomiendo detener este postmortem ahora mismo y leer primero How Complex Systems Fail. Es uno de los mejores textos técnicos sobre fallas en sistemas complejos. Cook rechaza la idea misma de una “causa raíz” (root cause), y creo que en este incidente tenía razón
Internet se está convirtiendo cada vez más en una red única centralizada (mononet). Nació en la Guerra Fría como una red distribuida, y ahora una sola mala implementación puede detener bancos, compras y viajes en todo el mundo. La metáfora de la nube ya pasó sus límites.
Para startups o I+D sigue siendo útil, pero las empresas en etapa de crecimiento o los gobiernos deberían tener sus propios servidores, su propia nube y sus propios servicios críticos. Tecnología y personal hay de sobra
En el postmortem de AWS me impresionó la visualización precisa de la línea de tiempo. Igual que en la charla legendaria de la GDC “I Shot You First”, fue útil la forma de mostrar el paso del tiempo con flechas inclinadas y preguntar “¿dónde ocurrió la demora?”.
Pero lo que más me sorprendió fue que el servicio de administración de leases de nodos de EC2 no tuviera un procedimiento de recuperación (runbook). Siendo un servicio central de AWS, yo habría esperado que casi cualquier caso excepcional ya estuviera previsto
El núcleo de este incidente parece una variación del problema de invalidación de caché (cache invalidation) en sistemas DNS. Dos DNS Enactor aplicaron el plan en momentos distintos y se produjo una condición de carrera, haciendo que un plan viejo sobrescribiera uno más nuevo
El Enactor debió haber hecho una comparación de versión del registro actual (CAS) antes de aplicar el nuevo valor. Aunque sea menos eficiente, es un mecanismo básico de seguridad. DynamoDB probablemente podía manejarlo por sí mismo
Me sorprendió leer que DynamoDB administra cientos de miles de registros DNS por región. Que
dynamodb.us-east-1.amazonaws.compueda resolverse a decenas de miles de IPs suena como algo que supera los límites de Route53. Probablemente usan TTL bajo y solo actualizan una parteLos bugs siempre existen. La verificación formal (formal verification) es difícil, y los bugs de baja probabilidad a veces explotan recién años después.
Por eso hay que asumir que los sistemas van a fallar y diseñar estructuras que limiten el daño. La arquitectura basada en celdas, los despliegues graduales y las zonas aisladas son ejemplos de eso.
AWS también intenta usar celdas, pero especialmente en us-east-1 todavía quedan dependencias cruzadas heredadas. A largo plazo, las regiones deberían diseñarse como completamente independientes.
Este tipo de trabajo no avanza sin apoyo de altos ejecutivos, pero desde la perspectiva de los accionistas es una inversión clave para reducir el riesgo de continuidad de la empresa
Me llamó la atención que en el informe usaran la zona horaria PT y no UTC
Me sorprendió que no hubiera patrones como versionado por endpoint o 2PC, single writer lease. Aun así, valoro mucho que AWS lo haya publicado con tanta transparencia
Creo que la causa directa de este incidente fue una condición de carrera latente en el sistema de gestión DNS de DynamoDB. Un plan viejo sobrescribió al más reciente y dejó vacíos los registros DNS del endpoint regional
Referencia: How Complex Systems Fail