Amazon laat in een blogpost weten wat er op 19 oktober bij de clouddienst AWS fout ging, waardoor wereldwijd talloze websites en diensten offline waren. Een bug in de NoSQL-database DynamoDB zorgde voor een kettingreactie van problemen.
Het zou een probleem in de DNS-records van het datacenter US-East-1 geweest zijn. Op 19 oktober, lokaal midden in de nacht, bleek dat er een racecondition was ontstaan in het DynamoDB-database waardoor alle IP-adressen uit het DNS-record verdwenen. Hierdoor kregen gebruikers veel api-foutmeldingen te zien als zij met DynamoDB wilden verbinden.
De racecondition was het gevolg van een conflict tussen twee DNS-enactors. Deze geautomatiseerde systemen proberen het probleem op te lossen, maar het ene systeem maakt de oplossing van het andere ongedaan en vice versa. Specifiek werden er door de DNS-planner constant nieuwe plannen geproduceerd. De ene enactor registreerde dit met vertraging en paste het plan toe, terwijl de tweede het intussen verouderde plan verwijderde. Dit zorgde voor lege DNS-records.
Andere geautomatiseerde systemen zijn weer afhankelijk van DynamoDB. Onder meer het EC2-cloudcompute-ecosysteem en de Network Load Balancer functioneerden daardoor niet meer naar verwachting, waardoor ook deze systemen met opstapelende problemen te maken kregen. Het laatstgenoemde systeem constateerde daardoor veel fouten en verwijderde daardoor weer nodes, wat het hele enactorprobleem versterkte.
Verbeteringen
Amazon claimt dat er sinds de grote storing voorzorgsmaatregelen genomen zijn om deze problemen voortaan te voorkomen. Specifiek zou het bedrijf maatregelen genomen hebben om de omstandigheden waarin een racecondition kan ontstaan, te voorkomen. Verder is het EC2-systeem voortaan begrensd op basis van de wachtrij, zodat er bij een vertraagde werking geen opstapeling van verzoeken kan ontstaan. Het NLB-systeem heeft voortaan een beperking van de hoeveelheid capaciteit die het per gefaalde gezondheidscheck kan verwijderen.
Update, zaterdag: De functie van DynamoDB is toegelicht. Er stond foutief in het artikel dat het om een beheersysteem zou gaan.