Connexion Abonnez-vous

AWS : le post-mortem de la grande panne révèle un bug rare et une automatisation extrême

Quelle dépendance ?

AWS : le post-mortem de la grande panne révèle un bug rare et une automatisation extrême

Amazon Web Services a publié un long post-mortem, revenant de manière détaillée sur la gigantesque panne qui a affecté ses services le 20 octobre. À la racine de la cascade, une situation de compétition autour d’enregistrements DNS et un effondrement d’autres services par effet domino. L’automatisation s’est retournée contre ses concepteurs.

Le 27 octobre à 14h06

La panne AWS du 20 octobre a affecté de très nombreuses entreprises s‘appuyant sur son cloud pour proposer leurs services. Alexa, Asana, Snapchat, Fortnite, Epic Games Store, ChatGPT, Autocad ou encore Docker ont été directement touchés, avec une interruption totale ou partielle de leurs activités pendant plusieurs heures.

Comment une telle panne a-t-elle pu arriver ?

AWS avait publié une série d’informations tout au long de la panne, ne serait-ce que pour tenir informée la clientèle, forcément démunie. On savait que le service de base de données DynamoDB était impliqué et qu’Amazon avait rencontré des problèmes avec les DNS. Mais le rapport complet de l’incident est nettement plus intéressant.

Pour comprendre ce qui s’est passé, rappelons qu’AWS est une infrastructure immense, dans laquelle DynamoDB tient une place importante. Le service utilise des centaines de milliers d’enregistrements DNS pour gérer la flotte de serveurs qui lui sont rattachés. Deux systèmes entièrement automatisés sont chargés d’assurer la résilience de l’ensemble en gérant ces enregistrements et en assurant la cohérence du tout.

C’est aussi à travers eux que le problème s’est présenté, sous la forme d’une situation de compétition (race condition en anglais). Expliquons rapidement de quoi il s’agit : une situation de compétition est un bug survenant quand le comportement d’un programme dépend de l’ordre ou du moment précis d’exécution de plusieurs processus tournant en parallèle.

Dans le cas présent, les deux systèmes automatisés travaillaient simultanément sur les mêmes enregistrements DNS. En temps normal, ce n’est pas un problème et des mécanismes existent pour gérer les résultats. Mais pour une raison inconnue (AWS ne dit pas laquelle), l’un des systèmes automatisés, appelé DNS Enactor, s’est mis à afficher un retard important dans ses calculs et donc dans la mise à jour des enregistrements DNS. L’autre système a fini ses calculs, mis à jour les enregistrements DNS, puis a lancé un nettoyage pour effacer les anciennes informations.

Il reste 68% de l'article à découvrir.

Déjà abonné ? Se connecter

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (19)

votre avatar
Les races condition, une horreur absolue à gérer... Qui réclame des tas de mécanismes de sécurité... Que tous les devs ne savent pas forcément gérer/développer.
J'ai un module d'enchère, acheté avec du support, que j'ai entièrement dû reprendre avec des LLM parce que les devs d'origine étaient incapables de gérer des problèmes de ce type, et je me retrouvais aléatoirement avec plusieurs produits gagnés d'un coup pour un ou plusieurs clients différents... Un comble...
votre avatar
Tu touche du doigt le problème principal... les devs d'aujourd'hui ne code que le cas nominal, ils ne prennent pas ou peu en compte les cas dégradés probables, sans même parler des possibles ou des inimaginables.

Pour le taf j'ai fait une expression de besoin, avec une série de conditions, pour traiter un fichier.
On m'a indiqué qu'une recette avait eu lieu ... et on m'a présenté le résultat.
Une valeur impossible, qui ne fait pas partie des spécs était présente, ça n'a choqué aucun des devs présents, le fait de compter 2 fois des éléments, ça ne les a pas choqué non plus.
Ils ont réussi à me pondre un outils qui ne respecte même pas les specs ...

J'ai d'autres exemples sur d'autres process où seul le cas nominal est codé, genre une IHM, on demandé un téléphone, bah aucun contrôle sur le type de données, donc on peu balancer l'alphabet chinois pour faire planter l'interface, 0 contrôle de surface.
et la réponse des devs ? "nan mais l'utilisateur il fait pas ça, nous on sait comment ça marche on ne le fait pas"
C'est beau la naïveté, ou l'ignorance, ou un mélange des deux ...
votre avatar
et la réponse des chefs d'entreprise ?
"nan mais les devs c'est obsolète maintenant on fait tout avec des prompts chatgpt & bientôt des agent qui vont mettre en prod tout seul".

Ca ne peux que bien se passer dans l'avenir...
votre avatar
D'autant qu'en pratique, si CERTAINS llm excellent à corriger du code pourri ou insuffisant en matière de précaution, et corriger des problèmes de sécurité, voir même rajouter des fonctionnalités, elles sont pour la majorité très nulle lorsqu'il s'agit de partir d'une page blanche et se heurtent aux connaissances techniques de ce qu'est capable de décrire celui qui demande quelque chose...
De mon côté, sans faire un reverse engineering complet du code qu'on m'avait donné via les llm, ça aurait été un boulot encore plus monstrueux en matière de travail de partir de 0...
Tout corriger et stabiliser m'a demandé quasiment cinq semaines de boulot à temps plein pour anticiper tous les besoins et corriger toutes les incohérences, heureusement qu'avec ma pépinière, je peux me le permettre...
Pas le choix ceci dit, c'étaient les seuls à proposer un module du genre sous prestashop...
votre avatar
Je connais de vieux codeurs qui fonctionnent de la même façon. Mon N+1 fonctionne exactement de cette manière, un vrai Steve Jobs période "You're Holding It Wrong". Tout le temps, j'en déprime.
votre avatar
Je crois pas que les devs chez amazon soient des novices qui ne comprennent pas les race conditions, ou ne traitent que les cas nominaux. On peut pas extrapoler son experience à n'importe quoi. Je pense surtout que l'infra d'AWS est un monstre de complexité (sans forcément de connotation négative; par nécessité), et qu'ils auront beau anticiper des tonnes de races il y en aura toujours quelques une pour passer entre les mailles.
votre avatar
Oui mais les devs, ils ont des managers qui eux, pour la plupart, n'ont jamais réellement codé de leur vie. Et avec l'avènement des LLMs, ils pensent que coder c'est juste l'IA qui va tout gérer. Et comme ce genre de managers est extrêmement présent (un peu comme les polluants éternels) dans les entreprises, difficile de laisser des devs compétents faire correctement son boulot.

Alors certes tu as des idiots, mais d'expérience faut regarder la chaîne de commandement.
votre avatar
Les accès concurrents sont un des trucs les plus complexes à gérer, et il n'y a pas de recette idéale :
- trop "sécuriser" un algo revient à multiplier les points communs de synchro, verroux, contrôles ou autres sémaphores, au final ton algo devient lent (monothread), critique (un internaute commençant un acte va bloquer les autres) et ralenti toute la chaîne.
- trop paralléliser à l'inverse, améliore les perfs, supprime les deadlocks, mais ouvre la voie au bug aléatoire impossible à déboguer ou reproduire.
=> les deux types d'algo sont valables et doivent être choisis / codés selon le besoin.

Dans tous les cas le dev n'est pas l'unique responsable, il y'a souvent une défaillance dans les expressions des besoins, ces 3 règles sont valables :
- "il n'est pas possible de commander plusieurs fois le même produit." (typiquement on vend un produit unique, ce qui pourrait être le cas d'une vente aux enchères)
- "le produit est industriel, il peut toujours être commandé, les ventes n'impactent que le délais de livraison" (une voiture, une carte graphique quoi-que :-D )
- "le système doit gérer une série limitée c-à-d un volume restreint avec un fort risque de pic de ventes parallèle" (typiquement des places de concerts attendues day-one où tu va bouffer un traffic monstre sur quelques minutes)

Dans le premier cas, il faut gérer un verrou à chaque enchère et ne libérer que lorsque l'enchère est passée
Le second cas ne nécessite aucun verrou, mais devra sans doute être connecté au système de planification pour informer assez tôt des délais de production / livraison
Le dernier cas est l'opposé du premier : il ne faut surtout pas verrouiller ou contrôler les stocks, tout laisser passer en mémorisant simple l'ordre de commande, et uniquement après la validation du paiement contrôler le stock réel, en parallèle il faut prévoir un système de remboursement, de désactivation des ventes (soldout), voire revente et liste d'attente.

Un dev ou son equivalent automatisé ne va pas (facilement) identifier ou inventer une RG non-exprimée, bien souvent ce qui est "sous-entendu", "induit" voire même "évident" pour le key user, ne l'est pas pour le dev qui jongle avec des contextes de clients très différents.

Pour moi le rôle du dev est aussi d'être consultant : conseiller, participer à la rédaction de l'expression du besoin en posant les bonnes questions.

Gérer la billetterie du Hellfest qui vend 240000 billets en 80min (50 passes par secondes !) ce ne sont pas les mêmes contraintes que faire une plateforme de vente aux enchères d'article d’occasion, naïvement c'est la même chose : "Fais moi une plateforme de vente en ligne"
votre avatar
Au delà de l'automatisation, le problème est surtout qu'autant de services et matériels (genre les fameux lits connectés…) dépendent d'un seul fournisseur.

Ce qui est moche également, c'est qu'une grande partie de l'infra AWS dépende du DC US-EAST1.

Vive le Minitel 2.0, France Télécom / Orange en rêvait, Amazon et CloudFlare l'ont inventé…
votre avatar
Maintenant imaginez si les ingénieurs qui étaient là pour gérer l'incendie avaient étés remplacés par des IAs. ^^'
votre avatar
Et qui te dis qu'il ne vont par être "remercier" en fin d'année pour ce motif.
C'est pas la 1er fois fois que l'on voit des licenciements pendant des années records de bénéfices...
votre avatar
C'est possible, mais ça serait un choix stratégique terrible.
Dans un cas comme on a eu là, c'est probablement grâce à un "sachant" réveillé à 2h du mat' que la solution a pu être rétablie. L'IA, elle, serait probablement tombée en panne, ou n'aurait juste pas su répondre car le cas était littéralement jamais vu...
votre avatar
Ton message raisonne pas mal avec la dernière news : next.ink Next
votre avatar
Oui ça m'a fait (un peu) rire.
votre avatar
L'un des risques de l'automatisation à outrance, c'est la perte de compétence et de maîtrise.

Surtout dans des entreprises qui considèrent le personnel comme jetable et renouvelable à souhaits. Et je suppose que Amazon, comme Microsoft ou Google, doit désormais aussi réduire ses dépenses RH au profit de leurs IA.
votre avatar
Tu dis?
https://www.reuters.com/business/world-at-work/amazon-targets-many-30000-corporate-job-cuts-sources-say-2025-10-27/
votre avatar
Ca sort aussi d'un script d'automatisation ?
votre avatar
au final, est-ce que les gros clients ont reçu un geste commercial sous forme de coupon de réduction pour une tasse de café? :D
votre avatar
Bien sure, remboursement au prorata-temporis de l'indisponibilité. :bocul:

AWS : le post-mortem de la grande panne révèle un bug rare et une automatisation extrême

  • Comment une telle panne a-t-elle pu arriver ?

  • Cascades et dominos

  • Affres de l’automatisation

Fermer