Предположим, вы работаете в компании здравоохранения, которая предоставляет свои услуги через веб-платформу. Пользовательский интерфейс для этой платформы настроен как веб-приложение PHP, размещенное в службах приложений Azure. Частые обновления исходного кода приложения выпускаются в продакшн для улучшения функций или устранения ошибок.Однако эти обновления иногда вносят проблемы:
- Недетектированные ошибки: Несмотря на тщательное тестирование, тестеры иногда упускают критические ошибки, что приводит к проблемам в производственной среде.
- Простои: Когда ошибки обнаруживаются, откат изменений вызывает прерывания в обслуживании, что раздражает конечных пользователей.
- Медленные развертывания: Процесс развертывания и компиляции влияет на отзывчивость приложения, особенно во время пиковой загрузки, что приводит к недовольству пользователей.
Существует ли лучшее решение для обеспечения бесперебойных обновлений без прерывания услуг? Да! Microsoft Azure предлагает мощную функцию, известную как деплойментные слоты.
Слоты развертывания Azure
Microsoft Azureразвертывание слоты предоставляют эффективный и надежный способ управления обновлениями приложений. С помощью слотов развертывания вы можете одновременно поддерживать как новые, так и старые версии вашего приложения. Переключение между двумя версиями так просто, как несколько кликов мышью, что исключает необходимость трудоемкого отката кода.
Что такое слоты развертывания и как они работают?
Слоты развертывания Azure – это функция в Службах приложений Azure, которая позволяет создавать отдельные среды для развертывания и тестирования вашего веб-приложения перед его доступом для всех конечных пользователей. Каждый слот развертывания работает как независимый экземпляр вашего приложения, который можно настраивать для определенных целей, таких как:
- Стейджинг: Для тестирования и проверки изменений перед переходом в производство.
- Производство: Для обслуживания конечных пользователей стабильной версией приложения.
- Дополнительные слоты: В зависимости от вашего тарифного плана вы можете создавать слоты для QA, тестирования или других сред.
Основные особенности слотов развертывания
Предварительно прогретые экземпляры
При развертывании в статический слот происходит его предварительное прогревание. Это означает, что приложение полностью инициализировано и готово к обработке запросов пользователей с минимальной задержкой.
Замена статического слота на рабочий гарантирует отсутствие перерывов в работе или задержек при запуске.
Бесперебойное перенаправление трафика
При замене происходит бесперебойное перенаправление трафика между слотами, что гарантирует, что ни один пользовательский запрос не будет потерян.
Возможность отката
Если после замены новой версии в рабочий режим возникают непредвиденные проблемы, вы сразу можете вернуться к “последней известной рабочей” конфигурации.
Как статические слоты решают проблему
Обнаружение ошибок до выхода в продакшн
Путем развертывания нового кода в статический слот тестировщики могут проверить приложение в среде, которая отражает производственную, что минимизирует риск обнаружения непримеченных ошибок.
Отсутствие прерываний в обслуживании
Поскольку приложение предварительно прогрето в статическом слоте, замена на рабочий режим происходит без перерывов, обеспечивая бесперебойное обслуживание конечных пользователей.
Более быстрое развертывание
Обмен слотами мгновенный по сравнению с традиционными методами развертывания, что значительно сокращает время, необходимое для развертывания, и улучшает отзывчивость.
Настройка и конфигурация веб-приложения Azure
1. Создайте веб-приложение
Войдите в портал Azure со своей учетной записью. Найдите Службы приложений и нажмите на нее.
Нажмите на Веб-приложение.
Выберите от 1 до 7 значений, необходимых для вашего приложения, затем нажмите Проверить + создать, а затем Создать. Название веб-приложения в этом демо – webappdemotosrs.
webappdemotosrs (Веб-приложение) можно получить доступ по URL основного домена.
2. Создание слотов развертывания
Нажмите на Слоты развертывания панели.
Нажмите Добавить слот.
Назовите слот Имя.
Выберите, хотите ли вы клонировать настройки из другого слота. Если вы выберете клонирование, настройки будут скопированы в ваш новый слот из указанного вами слота.
Щелкните по Добавить.
Слот создается с указанным именем.
Настройка параметров развертывания веб-приложения
В этом задании вы настроите параметры развертывания веб-приложения. Параметры развертывания позволяют осуществлять непрерывное развертывание. Это гарантирует, что служба приложений имеет последнюю версию приложения. На слоте предварительного развертывания выберите Центр развертывания, затем выберите Настройки. В раскрывающемся списке Источник выберите Внешний Git. Обратите внимание на другие варианты.
- В поле репозитория введите: https://github.com/Azure-Samples/php-docs-hello-world.
- В поле ветки введите master. Выберите Сохранить.
- На слоте предварительного развертывания выберите Обзор.
- Выберите ссылку Default domain и откройте URL в новой вкладке.
- Убедитесь, что стендовый слот отображает “Hello World”.
3. Обмен слотами развертывания
Нажмите на Обменять.
Нажмите на Начать обмен.
После завершения обмена появится уведомление, показывающее его статус.
4. После Обмена слотами развертывания
Производственный Выход URL основного домена:
Стендовый Выход URL основного домена будет как показано ниже
Это демонстрирует, что после обмена слотами развертывания производственный слот начинает работать на новом коде, в то время как стендовый слот возвращается к старому коду.
Резюме
В этой статье мы узнали, как создавать и использовать слоты развертывания в службе Azure App Service. Мы использовали слоты для тестирования и стадирования новых версий нашего приложения и меняли эти слоты развертывания. Мы можем менять слоты для развертывания протестированного приложения в производство и откатывать развернутое приложение, когда возникают непредвиденные проблемы. При использовании слотов развертывания помните, что Azure предварительно греет приложение перед обменом, и перенаправление трафика мгновенно. Результатом является то, что ваше приложение развертывается без прерываний в обслуживании или снижения его производительности.
Source:
https://dzone.com/articles/azure-web-apps-deployment-slots