Microsoft Teams Blog articles на русском
Подписаться
Смена двигателя во время полета самолета: миграция 60 000 приложений под нагрузкой в реальном времени
Интеграционные учетные записи Azure Logic Apps Consumption работали на базе примерно 60 000 приложений Azure Functions, работающих на старых средах выполнения. Команда успешно перенесла все эти приложения на новую среду выполнения Functions v4 без каких-либо действий со стороны клиентов. Это было достигнуто благодаря тщательному многоэтапному подходу, разработанному для обеспечения совместимости и минимизации сбоев.Основная стратегия включала "теневое" тестирование, при котором реальный производственный трафик направлялся одновременно на старую и новую среды выполнения. Это позволило напрямую сравнивать каждый результат без влияния непроверенного пути на клиентов. Ключевым аспектом было создание надежного порога эквивалентности, гарантирующего анализ 100% соответствующего трафика для различения реальных ошибок от изначально недетерминированных рабочих нагрузок.Любые выявленные реальные расхождения тщательно устранялись перед перенаправлением трафика. Развертывание было постепенным и обратимым, то есть трафик постепенно перемещался по регионам на основе хэширования трафика. Важной функцией была возможность полного отката миграции путем простого изменения конфигурации, которое вступало в силу в течение нескольких минут.Вывод из эксплуатации старых приложений был осуществлен с особой осторожностью. Сначала были остановлены старые приложения, затем последовал значительный период наблюдения перед их окончательным удалением. Этот поэтапный подход гарантировал, что любые непредвиденные проблемы могли быть устранены без ущерба для клиентов.Эта сложная миграция стала возможной благодаря тому, что Microsoft владела и управляла базовой вычислительной инфраструктурой. Постоянные данные клиентов, такие как соглашения и схемы, остались нетронутыми, а выполняемые действия представляли собой чистые преобразования. Эта плоскость управления позволила параллельно выполнять и сравнивать обе среды выполнения.Основная проблема заключалась не в самой новой среде выполнения, а в доказательстве ее совместимости с существующими рабочими нагрузками клиентов. Устаревшие среды выполнения приближались к концу срока службы, что создавало растущие риски. Переход на Azure Functions v4 с его изолированной моделью рабочего процесса представлял собой значительный архитектурный сдвиг.Стандартные, более простые варианты миграции, такие как обновления на месте или простые слоты развертывания, были признаны недостаточными из-за изменения модели хоста и масштаба операции, охватывающей 60 000 приложений. Миграция обеспечила отсутствие видимых клиентам сбоев, хотя небольшое количество клиентов столкнулось с кратким крайним случаем при высокой нагрузке перед инициированием отката. Команда взяла на себя сложность, чтобы обеспечить бесперебойную работу для своих клиентов.