Всего один программный баг обрушил AWS на 15 часов и стоил миллиарды долларов
Недавний масштабный сбой Amazon Web Services, парализовавший значительную часть интернета на 15 часов и обошедшийся в миллиарды долларов, произошёл из-за единственного программного бага. Ars Technica сообщает, что ошибка в одном компоненте вызвала каскадный эффект по всей системе AWS.
Виновником стал баг в DynamoDB, системе управления DNS от AWS. DNS (Domain Name System) часто сравнивают с телефонной книгой интернета – он переводит доменные имена, удобные для людей, в IP-адреса, необходимые автоматизированным системам. В современном интернете многие сервисы вроде облачных вычислений или стриминга должны назначать один домен нескольким IP-адресам в сети, позволяя эффективно использовать географически распределённые серверы.
DNS Enactor, компонент DynamoDB, отвечающий за обновление этих таблиц, "испытал необычно высокие задержки, требуя повторных попыток обновления на нескольких DNS-конечных точках". Пока Enactor пытался догнать, DynamoDB продолжала генерировать новые планы для выполнения, которые другой, работающий по расписанию DNS Enactor попытался реализовать.
Свежая DNS-конфигурация оказалась перезаписана значительно устаревшей, когда задержавшийся Enactor наконец наверстал упущенное, обойдя защитный механизм, предотвращающий подобные ошибки, который также испытывал задержки. Второй, работающий по расписанию Enactor затем полностью удалил устаревший план, когда определил его как устаревший. Это привело к эффекту домино по всей AWS, потребовав от инженеров вручную диагностировать проблему и устранить её.
Случай наглядно демонстрирует хрупкость интернета, уязвимого к странным внутренним логическим сбоям. В то же время, это предупреждение о том, что технологические компании слишком активно полагаются на AWS, практически полностью игнорируя создание собственной инфраструктуры. Такая зависимость ставит их в очень шаткое положение.