В сбое Microsoft Azure DevOps в Бразилии обвиняют опечатку

    0
    3


    Microsoft Azure DevOps, набор служб жизненного цикла приложений, прекратил работу в регионе Южная Бразилия в среду примерно на десять часов из-за основной ошибки кода.

    В пятницу Эрик Маттингли, главный менеджер по разработке программного обеспечения, принес извинения за сбой и раскрыл причину сбоя: простая опечатка, которая привела к удалению семнадцати производственных баз данных.

    Мэттингли объяснил, что инженеры Azure DevOps иногда делают моментальные снимки рабочих баз данных, чтобы изучить обнаруженные проблемы или протестировать улучшения производительности. И они полагаются на фоновую систему, которая работает ежедневно и удаляет старые снимки по истечении заданного периода времени.

    Во время недавнего спринта — группового проекта на жаргоне Agile — инженеры Azure DevOps выполнили обновление кода, заменив устаревшие пакеты Microsoft.Azure.Managment.* поддерживаемыми пакетами Azure.ResourceManager.* NuGet.

    Результатом стал большой запрос на внесение изменений, который заменял вызовы API в старых пакетах вызовами в более новых пакетах. В запросе на вытягивание произошла опечатка — изменение кода, которое необходимо проверить и объединить с соответствующим проектом. И это привело к удалению фонового снимка, чтобы удалить весь сервер.

    «В этом запросе на вытягивание была скрыта ошибка-опечатка в задании на удаление моментального снимка, которая заменила вызов для удаления базы данных SQL Azure вызовом, который удаляет Azure SQL Server, на котором размещена база данных», — сказал Маттингли.

    В Azure DevOps есть тесты для обнаружения таких проблем, но, по словам Маттингли, ошибочный код работает только при определенных условиях и, следовательно, не полностью охватывается существующими тестами. Эти условия, по-видимому, требуют наличия моментального снимка базы данных, который достаточно стар, чтобы его мог перехватить сценарий удаления.

    Мэттингли сказал, что Sprint 222 был развернут внутри (кольцо 0) без инцидентов из-за отсутствия каких-либо баз данных моментальных снимков. Несколько дней спустя изменения программного обеспечения были развернуты в клиентской среде (кольцо 1) для единицы масштабирования в Южной Бразилии (кластер серверов для определенной роли). В этой среде была база данных моментальных снимков, достаточно старая, чтобы вызвать ошибку, из-за которой фоновое задание удалило «весь Azure SQL Server и все семнадцать рабочих баз данных» для единицы масштабирования.

    Все данные были восстановлены, но на это ушло более десяти часов. По словам Маттингли, на это есть несколько причин.

    Во-первых, поскольку клиенты не могут самостоятельно восстанавливать серверы Azure SQL Server, этим должны были заниматься дежурные инженеры Azure, что у многих занимало около часа.

    Другая причина заключается в том, что у баз данных были разные конфигурации резервного копирования: некоторые были настроены для резервного копирования с избыточностью зоны, а другие были настроены для более поздней резервной копии с избыточностью геозоны. Устранение этого несоответствия добавило много часов процессу восстановления.

    «Наконец, — сказал Маттингли, — даже после того, как базы данных начали возвращаться в оперативный режим, вся единица масштабирования оставалась недоступной даже для клиентов, чьи данные хранились в этих базах данных, из-за сложного набора проблем с нашими веб-серверами».

    Эти проблемы возникали из-за задачи прогрева сервера, которая повторяла список доступных баз данных с помощью тестового вызова. Базы данных, находящиеся в процессе восстановления, выдали ошибку, которая привела к тому, что тест прогрева «выполнил повторную попытку с экспоненциальной отсрочкой, в результате чего прогрев занял в среднем девяносто минут, а не доли секунды в обычной ситуации».

    Еще больше усложняло ситуацию то, что этот процесс восстановления был поэтапным, и как только один или два сервера снова начинали принимать клиентский трафик, они перегружались и отключались. В конечном счете, для восстановления службы потребовалось заблокировать весь трафик на единицу масштабирования South Brazil до тех пор, пока все не будет достаточно готово для повторного подключения к балансировщику нагрузки и обработки трафика.

    Были внесены различные исправления и реконфигурации, чтобы предотвратить повторение проблемы.

    «Еще раз приносим свои извинения всем клиентам, которых затронул этот сбой», — сказал Маттингли. ®

    Предыдущая статьяSnapdragon 8 Gen 3 может быть запущен в октябре для борьбы iPhone 15
    Следующая статьяБританский военный начальник требует, чтобы инструменты искусственного интеллекта обеспечивали безопасность страны
    Виктор Попанов
    Эксперт тестовой лаборатории. Первый джойстик держал в руках в возрасте 3 лет. Первый компьютер, на котором „работал” был с процессором Intel i386DX-266. Тестирует оборудование для издания ITBusiness. Будь то анализ новейших гаджетов или устранение сложных неполадок, этот автор всегда готов к выполнению поставленной задачи. Его страсть к технологиям и приверженность качеству делают его бесценным помощником в любой команде.