C'Ă©tait un lundi dont beaucoup de responsables informatiques se souviendront encore longtemps. Le 20 octobre 2025, Amazon Web Services a connu une panne massive dans la rĂ©gion la plus importante du nord de la Virginie (US-EAST-1), qui a non seulement paralysĂ© de nombreuses applications d'entreprise, mais a Ă©galement produit des effets absurdes: mĂȘme les propriĂ©taires de matelas connectĂ©s en ont subi les consĂ©quences. Maintenant, Amazon a publiĂ© un rapport dĂ©taillĂ© post-mortem qui montre comment une minuscule condition de course dans une rĂ©action en chaĂźne a pu arrĂȘter un Ă©norme systĂšme cloud.
L'effet domino : trois phases du chaos
L'échec a commencé dimanche soir à 23h48, heure du Pacifique (8h48 de notre heure lundi) et s'est poursuivi sous différentes formes jusqu'à l'aprÚs-midi. Amazon distingue trois phases principales, qui se chevauchent partiellement et se renforcent mutuellement.
Au cours de la premiĂšre phase, qui a durĂ© de 8h48 Ă 11h40, la base de donnĂ©es NoSQL DynamoDB d'Amazon a considĂ©rablement augmentĂ© les taux d'erreur d'accĂšs aux API. Cela aurait Ă©tĂ© assez dramatique Ă lui seul, car DynamoDB est un composant central d'innombrables services AWS. Mais ça devrait ĂȘtre pire.
La deuxiÚme phase s'est développée entre 14h30 et 23h09 : le Network Load Balancer (NLB) a commencé à produire des erreurs de connexion accrues. Cela était dû à l'échec des contrÎles de santé dans la flotte de NLB, ce qui a entraßné le retrait des serveurs fonctionnels du trafic tout en laissant les serveurs défectueux dans le systÚme.
La troisiĂšme phase, et peut-ĂȘtre la plus perceptible pour de nombreux utilisateurs, a Ă©tĂ© le lancement de nouvelles instances EC2. De 11h25 Ă 19h36, cela n'a tout simplement pas fonctionnĂ©. MĂȘme lorsque les instances ont recommencĂ© Ă fonctionner Ă partir de 19h37, elles se sont battues avec des problĂšmes de connexion jusqu'Ă 22h50.
La racine de tous les maux: une condition de course insidieuse
Que s'Ă©tait-il passĂ©? Amazon lâappelle un « dĂ©faut latent » dans le systĂšme automatique de gestion DNS de DynamoDB. Cela semble inoffensif au dĂ©but, mais a eu des consĂ©quences fatales. Pour comprendre ce qui ne va pas, il faut se plonger un peu dans l'architecture.
Des services tels que DynamoDB gÚrent des centaines de milliers d'enregistrements DNS pour exploiter leur vaste flotte hétérogÚne d'équilibreurs de charge dans chaque région. Le systÚme DNS permet une évolutivité transparente, une isolation des défauts, une faible latence et un accÚs local. L'automatisation est essentielle pour ajouter de la capacité, gérer les pannes matérielles et distribuer efficacement le trafic.
Le systĂšme de gestion DNS d'Amazon pour DynamoDB est divisĂ© en deux composants indĂ©pendants pour des raisons de disponibilitĂ©. Le planificateur DNS surveille la santĂ© et la capacitĂ© des Ă©quilibreurs de charge et Ă©tablit pĂ©riodiquement de nouveaux plans DNS pour chaque point de terminaison du service. Ces plans consistent en une collection d'Ă©quilibreurs de charge avec des pondĂ©rations appropriĂ©es. En revanche, DNS Enactor a des dĂ©pendances minimales et met en Ćuvre ces plans DNS en apportant les modifications nĂ©cessaires dans Amazon Route53. Pour la rĂ©silience, DNS Enactor fonctionne de maniĂšre redondante et totalement indĂ©pendante dans trois zones de disponibilitĂ© diffĂ©rentes.
Chacune de ces instances indĂ©pendantes de DNS Enactor recherche de nouveaux plans et tente de mettre Ă jour Route53 en remplaçant le plan actuel par un nouveau plan via une transaction Route53. Cela garantit que chaque point de terminaison est mis Ă jour avec un plan cohĂ©rent, mĂȘme si plusieurs DNS Enactors tentent d'effectuer des mises Ă jour en mĂȘme temps.
Et c'est lĂ que rĂ©side le problĂšme: la condition de course est nĂ©e d'une interaction improbable entre deux DNS Enactors. Habituellement, un DNS Enactor prend le plan le plus rĂ©cent et exĂ©cute les points de terminaison de service pour appliquer ce plan. Avant d'appliquer un nouveau plan, il vĂ©rifie une seule fois si son plan est plus rĂ©cent que le plan prĂ©cĂ©demment appliquĂ©. Pendant qu'il passe en revue la liste des points de terminaison, il peut y avoir des retards si un autre DNS Enactor est en train de mettre Ă jour le mĂȘme point de terminaison. Dans de tels cas, DNS Enactor rĂ©essaie chaque point de terminaison jusqu'Ă ce que le plan soit appliquĂ© avec succĂšs Ă tous les points de terminaison.
Peu de temps avant l'Ă©chec, un DNS Enactor a connu des retards inhabituellement Ă©levĂ©s et a dĂ» essayer Ă plusieurs reprises ses mises Ă jour sur plusieurs points de terminaison DNS. Tout en travaillant lentement Ă travers les points de terminaison, plusieurs autres choses se sont produites en mĂȘme temps: le planificateur DNS a continuĂ© Ă fonctionner et a produit de nombreuses nouvelles gĂ©nĂ©rations de plans. Un autre DNS Enactor a ensuite commencĂ© Ă appliquer l'un de ces plans plus rĂ©cents et a rapidement traversĂ© tous les points de terminaison.
Le timing de ces Ă©vĂ©nements a dĂ©clenchĂ© la condition de course latente. Lorsque le deuxiĂšme Enactor (qui a appliquĂ© le dernier plan) a terminĂ© ses mises Ă jour de point de terminaison, il a lancĂ© le processus de nettoyage du plan, qui identifie et supprime les plans nettement plus anciens que celui qui vient d'ĂȘtre appliquĂ©. C'est Ă ce moment-lĂ que le premier Enactor (qui a Ă©tĂ© exceptionnellement retardĂ©) a appliquĂ© son plan beaucoup plus ancien au point de terminaison rĂ©gional DynamoDB, remplaçant ainsi le plan plus rĂ©cent. L'audit au dĂ©but du processus d'application du plan Ă©tait devenu obsolĂšte en raison des retards inhabituellement Ă©levĂ©s et n'a pas empĂȘchĂ© l'ancien plan de remplacer le plus rĂ©cent.
Le processus de nettoyage du deuxiĂšme Enactor a ensuite supprimĂ© ce plan plus ancien, car il Ă©tait plusieurs gĂ©nĂ©rations plus ancien que le plan qu'il venait d'appliquer. Lorsque ce plan a Ă©tĂ© supprimĂ©, toutes les adresses IP du point de terminaison rĂ©gional ont Ă©tĂ© immĂ©diatement supprimĂ©es. De plus, en supprimant le plan actif, le systĂšme a Ă©tĂ© mis dans un Ă©tat incohĂ©rent qui a empĂȘchĂ© les mises Ă jour ultĂ©rieures du plan d'ĂȘtre appliquĂ©es par n'importe quel DNS Enactors. Cette situation a finalement nĂ©cessitĂ© une intervention manuelle de la part des opĂ©rateurs.
Le rĂ©sultat? Lâenregistrement DNS de «dynamodb.us-east-1.amazonaws.com» Ă©tait soudainement vide. Tous les systĂšmes qui voulaient se connecter Ă DynamoDB en Virginie du Nord couraient immĂ©diatement contre les erreurs DNS. Cela concernait Ă la fois le trafic client et le trafic des services internes AWS qui dĂ©pendent de DynamoDB.
Conséquences : lorsque l'infrastructure s'effondre
à 9h38, les techniciens ont identifié l'erreur dans la gestion DNS. Les premiÚres contre-mesures temporaires ont été prises à 10h15 et ont permis à certains services internes de se reconnecter à DynamoDB. C'était important pour débloquer les outils internes critiques nécessaires à la poursuite de la récupération. Vers 11h25, toutes les informations DNS ont été récupérées.
Mais la crise Ă©tait loin d'ĂȘtre terminĂ©e. Les instances EC2 ne voulaient toujours pas dĂ©marrer. La raison en Ă©tait le DropletWorkflow Manager (DWFM), qui est responsable de la gestion de tous les serveurs physiques sous-jacents utilisĂ©s par EC2 pour hĂ©berger des instances EC2. En interne, Amazon appelle ces serveurs des « droplets ».
Chaque DWFM gĂšre un certain nombre de droplets dans chaque zone de disponibilitĂ© et maintient un bail pour chaque droplet actuellement sous sa gestion. Ce bail permet au DWFM de suivre l'Ă©tat du droplet et de s'assurer que toutes les actions de l'API EC2 ou de l'instance EC2 elle-mĂȘme, telles que les opĂ©rations d'arrĂȘt ou de redĂ©marrage Ă partir du systĂšme d'exploitation de l'instance EC2, entraĂźnent les changements d'Ă©tat corrects dans les systĂšmes EC2 plus larges. Dans le cadre de cette gestion de bail, chaque hĂŽte DWFM doit s'enregistrer et vĂ©rifier l'Ă©tat de chaque droplet qu'il gĂšre toutes les quelques minutes.
Mais ce processus dépend de DynamoDB. Lorsque DynamoDB n'était pas accessible, ces vérifications d'état ont commencé à échouer. Bien que cela ne concernait pas les instances EC2 en cours d'exécution, cela signifiait que le droplet devait établir un nouveau bail avec un DWFM avant que d'autres changements d'état d'instance puissent se produire pour les instances EC2 qu'il héberge. Entre 23h48 et 2h24, les baux entre DWFM et Droplets de la flotte EC2 ont commencé à décliner lentement.
Lorsque DynamoDB est redevenu disponible Ă 2 h 25, heure du Pacifique (11 h 25, heure locale), DWFM a commencĂ© Ă restaurer les locations avec des droplets sur l'ensemble de la flotte EC2. Ătant donnĂ© que chaque droplet sans bail actif nâest pas considĂ©rĂ© comme un candidat pour de nouveaux lancements EC2, les API EC2 ont renvoyĂ© des erreurs de capacitĂ© suffisantes pour les nouvelles demandes de dĂ©marrage EC2 entrantes.
Il y a eu un problĂšme perfide ici: en raison du grand nombre de droplets, les tentatives d'Ă©tablir de nouveaux contrats de location de droplets ont pris tellement de temps que le travail n'a pas pu ĂȘtre terminĂ© avant qu'ils ne soient Ă nouveau exĂ©cutĂ©s dans les time-outs. Un travail supplĂ©mentaire a Ă©tĂ© mis en file d'attente pour essayer Ă nouveau d'Ă©tablir le contrat de location de droplets. Ă ce stade, DWFM Ă©tait entrĂ© dans un Ă©tat d'effondrement congestif et ne pouvait plus progresser dans la rĂ©cupĂ©ration des contrats de location de droplets.
Comme il n'y avait pas de procĂ©dure de rĂ©cupĂ©ration opĂ©rationnelle Ă©tablie pour cette situation, les ingĂ©nieurs ont agi avec prudence pour rĂ©soudre le problĂšme avec DWFM sans causer d'autres problĂšmes. AprĂšs plusieurs tentatives d'attĂ©nuation, les ingĂ©nieurs ont rĂ©duit les travaux entrants Ă 4h14, heure du Pacifique, et ont commencĂ© Ă redĂ©marrer sĂ©lectivement les hĂŽtes DWFM. Le redĂ©marrage des hĂŽtes DWFM a Ă©liminĂ© les files d'attente DWFM, rĂ©duit les temps de traitement et permis l'Ă©tablissement de contrats de location de droplets. Ă 5 h 28, DWFM avait Ă©tabli des baux avec tous les droplets dans la rĂ©gion de Virginie du Nord et de nouveaux lancements ont recommencĂ© Ă rĂ©ussir, bien que de nombreuses demandes aient encore vu des erreurs «request limit exceeded» en raison de lâĂ©tranglement des demandes introduit.
Le gestionnaire de réseau: quand la mise en réseau est à la traßne
Mais mĂȘme avec cela, les problĂšmes n'Ă©taient pas encore terminĂ©s. Lorsqu'une nouvelle instance EC2 est lancĂ©e, un systĂšme appelĂ© Network Manager propage la configuration du rĂ©seau qui permet Ă l'instance de communiquer avec d'autres instances au sein du mĂȘme cloud privĂ© virtuel (VPC), d'autres pĂ©riphĂ©riques rĂ©seau VPC et d'Internet.
Ă 5h28, heure du Pacifique (14h28 de notre heure), peu de temps aprĂšs la restauration de DWFM, le gestionnaire de rĂ©seau a commencĂ© Ă propager les configurations de rĂ©seau mises Ă jour aux instances nouvellement lancĂ©es et aux instances qui s'Ă©taient arrĂȘtĂ©es pendant l'Ă©vĂ©nement. Ătant donnĂ© que ces Ă©vĂ©nements de propagation du rĂ©seau avaient Ă©tĂ© retardĂ©s par le problĂšme de DWFM, un important arriĂ©rĂ© de propagation de l'Ă©tat du rĂ©seau a dĂ» ĂȘtre traitĂ© par le gestionnaire de rĂ©seau dans la rĂ©gion de Virginie du Nord.
En consĂ©quence, Ă 6h21, le gestionnaire de rĂ©seau a commencĂ© Ă ressentir une augmentation de la latence des temps de propagation du rĂ©seau tout en travaillant sur le traitement de l'arriĂ©rĂ© des changements d'Ă©tat du rĂ©seau. Alors que les nouvelles instances EC2 pouvaient ĂȘtre lancĂ©es avec succĂšs, elles n'avaient pas la connectivitĂ© rĂ©seau nĂ©cessaire en raison des retards dans la propagation de l'Ă©tat du rĂ©seau. Les ingĂ©nieurs ont travaillĂ© pour rĂ©duire la charge sur le gestionnaire de rĂ©seau afin de gĂ©rer les temps de propagation de la configuration du rĂ©seau et ont pris des mesures pour accĂ©lĂ©rer la rĂ©cupĂ©ration. Ă 10 h 36, les temps de propagation de la configuration du rĂ©seau Ă©taient revenus Ă des valeurs normales et les nouveaux lancements d'instance EC2 fonctionnaient Ă nouveau normalement.
Network Load Balancer: le systÚme de santé tombe malade
Les retards dans la propagation de l'état du réseau pour les instances EC2 nouvellement lancées ont également affecté le service Network Load Balancer (NLB) et les services AWS utilisant NLB. Entre 5h30 et 2h09, heure du Pacifique, le 20 octobre, certains clients ont connu une augmentation des erreurs de connexion sur leurs LNB dans la région de Virginie du Nord.
NLB est construit sur une architecture multi-locataire hautement Ă©volutive qui fournit des points de terminaison d'Ă©quilibrage de charge et achemine le trafic vers des cibles back-end qui sont gĂ©nĂ©ralement des instances EC2. L'architecture utilise Ă©galement un sous-systĂšme de vĂ©rification de la santĂ© distinct qui effectue rĂ©guliĂšrement des vĂ©rifications de la santĂ© contre tous les nĆuds de l'architecture NLB et supprime tous les nĆuds du service considĂ©rĂ©s comme malsains.
Au cours de l'Ă©vĂ©nement, le sous-systĂšme de vĂ©rification de la santĂ© de NLB a commencĂ© Ă Ă©prouver une augmentation des erreurs de vĂ©rification de la santĂ©. Cela est dĂ» au fait que le sous-systĂšme de vĂ©rification de la santĂ© a mis en service de nouvelles instances EC2, alors que l'Ă©tat du rĂ©seau n'Ă©tait pas encore complĂštement propagĂ© pour ces instances. Cela signifiait que dans certains cas, les contrĂŽles de santĂ© Ă©chouaient, mĂȘme si le nĆud NLB sous-jacent et les objectifs backend Ă©taient sains. Cela a conduit au fait que les contrĂŽles de santĂ© alternaient entre Ă©chec et santĂ©. En consĂ©quence, les nĆuds NLB et les cibles backend ont Ă©tĂ© supprimĂ©s du DNS uniquement pour ĂȘtre remis en service lors du prochain bilan de santĂ© rĂ©ussi.
Les résultats de Health Check en alternance ont augmenté la charge sur le sous-systÚme Health Check et provoqué sa dégradation, entraßnant des retards dans les contrÎles de santé et déclenchant un basculement automatique de l'ADN AZ. Pour les équilibreurs de charge multi-AZ, cela a entraßné la suppression de la capacité du service. Dans ce cas, une application a connu une augmentation des erreurs de connexion lorsque la capacité saine restante était insuffisante pour supporter la charge de l'application.
Ă 9 h 36, les ingĂ©nieurs ont dĂ©sactivĂ© le basculement automatique du bilan de santĂ© pour NLB, ce qui a permis de rĂ©tablir tous les nĆuds NLB sains et les objectifs backend disponibles. Cela a rĂ©solu les erreurs de connexion accrues aux Ă©quilibreurs de charge affectĂ©s. Peu de temps aprĂšs la rĂ©cupĂ©ration de l'EC2, ils ont rĂ©activĂ© le basculement automatique de vĂ©rification de la santĂ© de l'ADN Ă 2h09, heure du Pacifique.
Les effets: une queue de rat de problĂšmes
La panne de DynamoDB et les problĂšmes qui en ont rĂ©sultĂ© ont eu un impact considĂ©rable sur de nombreux autres services AWS. Les fonctions Lambda ont fourni des erreurs d'API et des latences entre 23h51 le 19 octobre et 2h15 du Pacifique le 20 octobre. Tout d'abord, les problĂšmes de point de terminaison DynamoDB empĂȘchaient la crĂ©ation et la mise Ă jour des fonctionnalitĂ©s, causaient des retards de traitement pour les sources d'Ă©vĂ©nements SQS/Kinesis et des erreurs d'appel.
Amazon Elastic Container Service (ECS), Elastic Kubernetes Service (EKS) et Fargate ont connu des erreurs de démarrage des conteneurs et des retards de mise à l'échelle des clusters entre 23h45 le 19 octobre et 2h20 du Pacifique le 20 octobre.
Les clients Amazon Connect ont connu une augmentation des erreurs de traitement des appels, des conversations et des cas entre 23h56 le 19 octobre et 1h20 du Pacifique le 20 octobre. Les appelants entrants ont entendu des signes d'occupation, des messages d'erreur ou des connexions échouées. Les appels sortants initiés par les agents et initiés par l'API ont échoué.
AWS Security Token Service (STS) a connu des erreurs d'API et une latence entre 23 h 51 et 9 h 59, heure du Pacifique, le 19 octobre. Les clients qui tentaient de se connecter Ă AWS Management Console avec un utilisateur IAM ont connu une augmentation des erreurs d'authentification dues Ă des problĂšmes sous-jacents de DynamoDB entre 23h51 le 19 octobre et 1h25 du Pacifique le 20 octobre.
Les clients Amazon Redshift ont rencontrĂ© des erreurs d'API lors de la crĂ©ation et de la modification de clusters Redshift ou lors de l'exĂ©cution de requĂȘtes sur des clusters existants entre 23 h 47 le 19 octobre et 2 h 21 du Pacifique le 20 octobre. Fait intĂ©ressant, les clients Redshift dans toutes les rĂ©gions AWS entre 23h47 le 19 octobre et 1h20 le 20 octobre n'ont pas Ă©tĂ© en mesure d'utiliser les identifiants d'utilisateur IAM pour exĂ©cuter des requĂȘtes, car un dĂ©faut Redshift utilisait une API IAM dans la rĂ©gion Virginie du Nord pour rĂ©soudre des groupes d'utilisateurs.
Les leçons: ce qu'Amazon change maintenant
Amazon a dĂ©jĂ pris plusieurs mesures et prĂ©voit d'autres modifications pour Ă©viter qu'elles ne se reproduisent. DynamoDB DNS Planner et DNS Enactor ont Ă©tĂ© dĂ©sactivĂ©s dans le monde entier. Avant de rĂ©activer cette automatisation, Amazon corrigera le scĂ©nario de conditions de course et ajoutera des mesures de protection supplĂ©mentaires pour empĂȘcher l'application de plans DNS incorrects.
Pour l'équilibreur de charge réseau, un mécanisme de contrÎle de la vitesse est ajouté, ce qui limite la capacité qu'un seul NLB peut supprimer si des erreurs de vérification de la santé provoquent un basculement AZ. Cela permet d'éviter que trop de capacité ne soit retirée du trafic à la fois.
Pour EC2, Amazon construit une suite de tests supplémentaires pour compléter les tests de mise à l'échelle existants. Celle-ci passera en revue le workflow de récupération DWFM pour identifier les régressions futures. En outre, le mécanisme de limitation dans les systÚmes de propagation des données EC2 est amélioré pour limiter le travail entrant en fonction de la taille de la file d'attente et protéger le service pendant les périodes de forte charge.
Quand la redondance ne suffit pas
Cette dĂ©faillance illustre de maniĂšre impressionnante la complexitĂ© des infrastructures en nuage modernes et la maniĂšre dont une vulnĂ©rabilitĂ© apparemment mineure â une condition de concurrence qui ne se produira probablement jamais dans des circonstances normales â peut entraĂźner une cascade de dĂ©faillances. MalgrĂ© toutes les redondances, malgrĂ© des DNS Enactors tridimensionnels dans diffĂ©rentes zones de disponibilitĂ©, malgrĂ© une automatisation sophistiquĂ©e, un timing malheureux a pu faire s'effondrer l'ensemble du systĂšme.
Dans son rapport final, Amazon souligne qu'il s'excuse pour l'impact sur les clients. Nous savons à quel point les services sont critiques pour les clients, leurs applications, les utilisateurs finaux et leurs entreprises. Nous ferons tout ce qui est en notre pouvoir pour tirer les leçons de cet événement et l'utiliser pour améliorer encore la disponibilité.
Pour nous, en tant qu'utilisateurs, la prise de conscience reste: Le cloud peut ĂȘtre robuste, mais il n'est pas infaillible. Les stratĂ©gies multirĂ©gionales, les plans de reprise aprĂšs sinistre et les mĂ©canismes de repli ne sont pas une paranoĂŻa, mais une nĂ©cessitĂ©. Et parfois, c'est le matelas connectĂ© qui nous rappelle Ă quel point nous sommes devenus dĂ©pendants de cette infrastructure invisible.