Blue Green Deployment и Drupal - сколько вы действительно знаете?

Опубликовано: 2019-07-23

Blue Green Deployment - одна из основных стратегий развертывания, которая преодолевает ограничения традиционного подхода к развертыванию приложений. Что вы знаете о развертывании Blue Green? Как реализовано развертывание Blue Green в Drupal?

Да, вы правильно прочитали. Переводить приложение в автономный режим для обновлений или при запуске новой версии - непростая задача и настоящая боль. Это правда, что вы можете смягчить это с помощью запланированных простоев, но это не то, что сделает клиентов счастливыми. Некоторые сайты фактически теряют тысячи долларов каждую минуту своего бездействия! Должно ли развертывание или обновление вашего приложения быть реальной причиной вашей потери?

Узнайте, почему сине-зеленое развертывание - лучшая стратегия для сокращения времени простоя и снижения других рисков, связанных с развертыванием приложений. Узнайте больше о сине-зеленом развертывании и Drupal.

Что такое сине-зеленое развертывание?

Сине-зеленое развертывание - это метод выпуска приложений путем смещения или перемещения трафика между двумя идентичными средами, в которых выполняются две разные версии приложения.

Вкратце, есть версия приложения, назовем ее «синей версией» в продакшене. А еще есть маршрутизатор, который используется для маршрутизации трафика в приложение. Теперь вам нужна другая версия. «зеленая версия» с добавлением еще нескольких вкусностей, которые предстоит развернуть. Однако вы также хотите убедиться, что во время этого развертывания пользователь все еще может смотреть на ваше приложение, нажимать кнопку или делать все, что он хочет, без остановки вашего приложения! Это больше похоже на тайное развертывание «зеленой версии», в то время как «синяя версия» обрабатывает весь трафик тем временем, прежде чем в конечном итоге отключить соединения.

blue_green_deployment

При практически нулевом времени простоя выпуска и возможности отката фундаментальная идея сине-зеленого развертывания заключается в перемещении трафика между двумя идентичными средами, в которых работают две разные версии приложения. В то время как текущая версия приложения представлена ​​синей средой, зеленая среда запускает другую версию.

Почему сине-зеленое развертывание?

Одной из основных проблем при автоматизации процесса развертывания является само сокращение, т. Е. Перевод приложения с заключительного этапа тестирования на этап реального времени. И об этом нужно быстро позаботиться, чтобы минимизировать время простоя. Это именно то, что делает сине-зеленое развертывание. В двух производственных средах (как можно более идентичных по своей природе) в любой момент времени одна из них активна. И когда вы готовитесь к новому выпуску, вы проводите все свое тестирование в другой среде, которая не работает. Когда вы будете готовы к запуску, все, что вам нужно сделать, это переключить маршрутизатор так, чтобы весь ваш трафик был направлен на ваш последний выпуск, а другая среда просто бездействовала.

Кроме того, сине-зеленое развертывание обеспечивает одну из наиболее важных функций - быстрый откат. Предположим, что если что-то пойдет не так с вашим последним выпуском, вам просто нужно переключить маршрутизатор обратно. Хотя проблема с потерянными транзакциями может все еще существовать при работающей неисправной среде, вы также можете спроектировать ее таким образом, чтобы обе ваши среды питались транзакциями, а одна действовала как резервная копия для другой.

Насколько сине-зеленое развертывание?

Теперь, когда мы знаем о двух средах сине-зеленого развертывания, давайте рассмотрим некоторые из лучших практик для их реализации.

  • Балансировка нагрузки через переключение DNS

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

Проблема с внесением изменений в записи DNS просто приведет к длинному следу трафика. Это означает, что хотя некоторые из ваших пользователей по-прежнему будут обслуживаться в старой среде, вы даже не сможете полностью контролировать, куда направляется ваш трафик.

Однако балансировщики нагрузки позволят вам немедленно настроить новые серверы, и вам не придется зависеть от механизма DNS. Таким образом, вы получите полный контроль над трафиком и можете быть абсолютно уверены, что весь трафик направляется в новую среду.

  • Постоянное обновление

НЕ переключайте сразу все свои серверы. Вместо этого выполните последовательное обновление. То есть вместо того, чтобы сразу переключаться на Зеленые серверы с Синих, работайте с интегрированной средой. Добавьте один новый сервер, удалите старый. Повторяйте, пока не будет установлен каждый новый сервер. Это значительно сократит время простоя!

  • Мониторинг окружающей среды

Хотя мониторинг живой среды очевиден, вы не хотите, чтобы вас застали врасплох, не наблюдая за другой средой. Да, мониторинг другой среды менее важен. Однако, поскольку одна и та же среда может действовать как оба состояния, вам понадобится более простой способ переключения предупреждений между ними. Настройте разные токены API для двух сред, сообщающих о результатах, или программно измените политику предупреждений в среде при изменении / переключении ее роли.

  • Автоматизация

Ручной набор действий только увеличит вашу работу. Вместо этого запишите каждое действие в процессе переключения. Автоматизация процесса переключения приведет к более быстрой, простой и безопасной реализации сине-зеленого развертывания.

Сине-зеленое развертывание для сайтов Drupal

Проблемы

  • Во время развертывания кода Drupal должен запускать обновления базы данных для работы, и это серьезная проблема, поскольку обновления Drupal переводят веб-сайт в режим обслуживания, и ваши пользователи приветствуются этим красивым белым экраном.
Сопровождение Drupal
Источник: drupal.org

В случае сбоя развертывания откат возможен только путем восстановления базы данных из дампа, учитывая, что схема базы данных могла быть изменена. Это означает простои!

Решение: сине-зеленое развертывание!

Давайте посмотрим на обзор инфраструктуры для реализации Blue Green Deployment с Drupal. Для любого типа операций в Drupal требуется Nginx и php-сервер (в основном для запуска Drupal), нам нужна база данных, файловое хранилище, некоторый кеш, а стек спроектирован таким образом, чтобы он был высокодоступным.

При использовании Blue Green Deployment вам необходимо развернуть новый стек с новой кодовой базой и скопировать всю свою базу данных и различные состояния из предыдущей кодовой базы, предпочтительно с помощью Drush.

обзор инфраструктуры
Источник: Drupal Con Seattle 2019

После того, как два разных стека настроены, промежуточный стек должен быть протестирован независимо от производственного стека. По сути, вам нужно, чтобы ваши пользователи перешли в стек (производственный стек) и протестировали версию развернутого веб-сайта. И когда другая версия (промежуточный стек) будет готова, вам просто нужно перевернуть версии. Теперь пользователей направляют в новый стек, а старая версия доступна для тестирования.

Сине-зеленое развертывание с помощью Docker

Развертывание в Drupal - непростая задача. Хотя вы должны убедиться, что код развернут, зависимости композитора обработаны, обновления схемы актуальны и все кеши очищены, вам также необходимо убедиться, что «отзывчивый веб-сайт» запущен и работает. А что будет, если возникнет проблема и развертывание не удастся? Вы откатываетесь? Или остановить развертывание?

Фраза, которую вы ищете, - это сине-зеленое развертывание.

Во время развертывания Drupal Docker обеспечивает легкий переход между приложениями и упрощает создание и запуск разных версий одного и того же. В экземпляре EC2 всегда есть набор поднятых контейнеров докеров синего и зеленого цвета, а nginx работает как обратный прокси-сервер. Сине-зеленое развертывание с помощью Docker позволяет пользователю создать веб-сайт Drupal, который будет работать параллельно в двух разных средах.


Сине-зеленое развертывание с AWS

Хотя исторически сине-зеленое развертывание не было первым выбором для локального развертывания программного обеспечения из-за его высокой стоимости и сложности, контейнеры навсегда изменили это восприятие.

Контейнеры упрощают внедрение сине-зеленого развертывания из-за их простой упаковки и единообразного поведения при переключении между средами. А чтобы изменить конфигурацию контейнера, вам просто нужно обновить его файл докеров и перестроить и повторно развернуть контейнер на месте, а не обновлять программное обеспечение.

Amazon ECS выполняет эти непрерывные обновления при обновлении существующей службы Amazon ECS. Последовательное обновление для сине-зеленого развертывания ecs включает замену существующей версии контейнера на последнюю. Это количество контейнеров, которые Amazon ECS добавляет или удаляет во время обновления, контролируется путем настройки максимального и минимального количества работоспособных задач, разрешенных во время развертывания службы. После обновления определение задачи службы обновляется с использованием последней версии образа контейнера, Amazon ECS автоматически начинает замену старой версии контейнера на последнюю.

Развертывание AWS сине-зеленым

Сине-зеленое развертывание с AWS ECS также обеспечит преимущества оптимизации, поскольку вы не привязаны к одному и тому же набору ресурсов. То есть, когда диапазон производительности приложения изменяется от одной версии к другой, вы просто запускаете новую среду с оптимизированными ресурсами (их может быть меньше или с совершенно другим набором ресурсов).

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

Это решение позволяет пользователям легко управлять развертыванием и масштабируемостью веб-платформ, не теряя времени. Это развертывание помогает настроить среду с высокой доступностью, в которой веб-сайт Drupal будет работать без каких-либо проблем.