- Техника синего/зеленого развертывания позволяет выпускать приложения путем перехода трафика между двумя идентичными средами, которые работают разные версии приложения.
- Синие/зеленые развертывания могут смягчить общие риски, связанные с развертыванием программного обеспечения, такими как время простоя и возможности отката.
- Эта белая вака предоставляет обзор методики синего/зеленого развертывания и описывает техники, которые клиенты могут реализовать с использованием услуг и инструментов Amazon Web Services (AWS).
- Он также рассматривает соображения вокруг уровня данных, что является важным компонентом большинства приложений.
Синяя/зеленая методология развертывания
- Синие/зеленые развертывания обеспечивают релизы с нулевым временем простоя и возможностями отката.
Фундаментальная идея синего/зеленого развертывания — это смещение трафика между двумя идентичными средами, которые работают разные версии вашего приложения.
Синяя среда представляет текущую версию приложения, обслуживающую трафик производства.
Параллельно, зеленая среда устроилась запуск другой версии вашего приложения.
После того, как зеленая среда готова и проверена, производственный трафик перенаправляется от синего до зеленого.
Если какие-либо проблемы определены, вы можете откатиться, возвращая движение обратно в синюю среду.
Преимущества синего/зеленого
- После развертывания зеленой среды у вас есть возможность его подтвердить.
- Вы можете сделать это с тестовым трафиком, прежде чем отправлять производственный трафик в зеленую среду, или с использованием очень небольшой доли производственного трафика, чтобы лучше отразить реальный пользовательский трафик.
- Это называется канареевый анализ или канареечное тестирование.
- Если вы обнаружите, что зеленая среда не работает должным образом, не влияет на синюю среду.
Вы можете направить трафик обратно к нему, минимизируя нарушение эксплуатации или простоя и ограничивающую радиус взрыва воздействия.
Эта способность просто бросить движение к операционной среде, является ключевым преимуществом синих/зеленых развертываний.
Вы можете откатиться в синюю среду в любое время во время процесса развертывания.
Умеренные эксплуатации или время простоя сводятся к минимуму, поскольку воздействие ограничено окном времени между обнаружением выпуска зеленой среды и смещением трафика обратно в синюю среду.
Кроме того, воздействие ограничено частью трафика, идущего в зеленую среду, не все трафик.
Если радиус взрыва ошибок развертывания уменьшается, так и общий риск развертывания.
Синие/зеленые развертывания также хорошо работают с непрерывными интеграцией и непрерывными развертыванием (CI/CD) рабочими процессами, во многих случаях ограничивают их сложность.
Ваша автоматизация развертывания должна учитывать меньшие зависимости от существующей среды, состояния или конфигурации, поскольку ваша новая зеленая среда запущена на совершенно новый набор ресурсов.
Определите границу окружающей среды
- При планировании синих/зеленых развертываний вы должны подумать о вашей границе окружающей среды, где есть все изменилось, и что нужно развернуть, чтобы сделать эти изменения в прямом эфире.
- Сфера вашей среды зависит от ряд факторов:
Архитектура применения: зависимости, свободно/плотно связаны
Организация: Скорость и количество итераций
Риск и сложность: взрывное радиус и влияние неудачного развертывания
Люди: опыт команд
Процесс: тестирование/QA, Возможность отката
Стоимость: операционные бюджеты, дополнительные ресурсы
Например, организации операционные приложения, основанные на рисунке архитектуры микросервисов, могут иметь меньшие границы окружающей среды из-за свободных связей и четко определенных интерфейсов между отдельными службами.
Организации, работающие на наследии, монолитные приложения могут по-прежнему использовать синие/зеленые развертывания, но область окружающей среды может быть шире и тестирование более обширным.
Независимо от границы окружающей среды, вы должны использовать автоматизацию везде, где вы можете оптимизировать процесс, уменьшить человеческую ошибку и контролировать ваши расходы.
Услуги для синих/зеленых развертываний
- Маршрут Amazon 53.
- Упругая балансировка нагрузки
- Автоматическое масштабирование
- AWS Эластичный Beanstalk
- AWS OPSWORKS.
- AWS CloudFormation
- Amazon Cloudwatch
- AWS CODDEDOWLED
Существует три способа перемещения трафика во время развертывания на упругих контейнерах Amazon Easustic (Amazon ECS).
- Канарейка — трафик смещается в два шага.
- Линейный — трафик смещается равным приращениям.
- All-A-Dim — один раз — все трафик сместится в обновленные задачи.
AWS лямбда крючки
С aws лямбда-крючками CodeDey может вызвать функцию LAMBDA во время различных событий жизненного цикла, включая развертывание ECS, развертывание функций лямбда и развертыванию EC2/Ondement. Крючки полезны в создании рабочего процесса развертывания для ваших приложений.
Методы внедрения
- Следующие методики являются примерами того, как вы можете реализовать синий/зеленый на AWS.
- В то время как AWS подчеркивает конкретные услуги в каждой технике, у вас могут быть другие услуги или инструменты для реализации одного и того же шаблона.
- Выберите соответствующую технику, основанную на существующей архитектуре, природе заявки, а также целей для развертывания программного обеспечения в вашей организации. — Как можно больше экспериментировать, чтобы получить опыт для вашей среды и понять, как различные факторы риска развертывания влияют на вашу конкретную рабочую нагрузку.
Обновление DNS-маршрутизации с Amazon Manager 53
- DNS маршрутизация через рекордные обновления — это общий подход к синим/зеленым развертыванию.
- DNS используется в качестве механизма переключения трафика из синей среды на зеленый и наоборот при необходимости отката.
Этот подход работает с широким спектром конфигураций окружающей среды, если вы можете выразить конечную точку в среду как имя DNS или IP-адрес.
В пределах AWS эта техника применяется к средам, которые являются:
- Единичные экземпляры, с публичным или упругим IP-адресом
- Группы экземпляров за упругой нагрузкой балансировочный балансировщик нагрузки или стороннего балансировщика нагрузки
- Экземпляры в группе автоматической масштабировки с упругой балансировкой нагрузки балансировкой нагрузки как передний конец
- Услуги, работающие на эластичном контейнере Amazon (Amazon ECS) Cluster, подверженные упругой балансировке нагрузки на нагрузку
- Веб-ярусы эластичные бобовые среды
- Другие конфигурации, которые подвергают конечную точку IP или DNS
Вы можете сместить трафик все сразу, или вы можете сделать взвешенное распределение. Для взвешенного распределения с Amazon Transe 53 вы можете определить процент трафика, чтобы перейти к зеленой среде и постепенно обновлять вес, пока зеленая среда не несет полное производственное движение.
Это обеспечивает возможность проводить анализ канаренного анализа, где в новой среде представлен небольшой процент производственного трафика. Вы можете проверить новый код и монитор для ошибок, ограничивая радиус взрыва, если возникнут какие-либо проблемы. Он также позволяет зеленую среду масштабировать для поддержки полной производственной нагрузки, если вы используете упругую балансировку нагрузки (ELB), например. ELB автоматически ведет масштабировать его пропускную способность для удовлетворения входящего трафика приложений; Процесс масштабирования не мгновенно, поэтому мы рекомендуем вам тестировать, наблюдать и понимать ваши шаблоны трафика. Балансировщики нагрузки также могут быть предварительно утеплены (настроен для оптимальной емкости) через запрос о поддержке.
Смейте автоматический масштабирующую группу за упругой балансировкой нагрузки
- Если сложности DNS запрещены, рассмотрите возможность использования балансировки нагрузки для управления трафиком в ваши синие и зеленые среды.
- Эта методика использует автоматическое масштабирование для управления ресурсами EC2 для синих и зеленых сред, масштабирования вверх или вниз на основе фактического спроса.
- Вы также можете управлять размером группы автоматического масштабирования, обновляя максимально требуемый доступ к вашей конкретной группе.
- Автоматическое масштабирование также интегрируется с упругой балансировкой нагрузки (ELB), поэтому любые новые экземпляры автоматически добавляются в бассейн нагрузки, если они пройдут проверки здоровья, регулируемые балансировкой нагрузки.
- ELB тестирует здоровье ваших зарегистрированных экземпляров EC2 с простым пингом или более сложным попыткой подключения или запроса.
- Проверки здоровья происходят в настраиваемых интервалах и определены пороговые значения для определения того, идентифицирован ли экземпляр как здоровый или нездоровый.
- Например, у вас может быть политика проверки Health Health, который закрепляет порт 80 каждые 20 секунд, а после прохождения порога 10 успешных пингов, проверка здоровья сообщит об этом экземпляре как расследование.
- Если достаточное количество пинга запрашивает время, то, как сообщается, существует экземпляр OutofService
- Когда вы масштабируете Green Auto Scaling Group, вы можете взять синие автоматические масштабированные экземпляры из эксплуатации, либо заканчивая их, либо вкладывая их в режим ожидания.
- В режиме ожидания является хорошим вариантом, потому что если вам нужно откатить в синюю среду, вам нужно только поставить свои синие серверные экземпляры обратно в эксплуатацию, и они готовы к работе.
- Как только Green Group не сможет без проблем, вы можете вывести из эксплуатации синей группы, регулируя размер группы до нуля.
- Если вам нужно откатиться, отсоедините балансировщик нагрузки от зеленой группы или уменьшите размер группы зеленой группы до нуля.
Обновить конфигурации запуска группы автоматического масштабирования
- Конфигурация запуска содержит информацию, такую как идентификатор изображения Amazon Machine (AMI), тип экземпляра, пару клавиш, одна или несколько групп безопасности и отображение блочного устройства.
- Автоматические группы масштабирования имеют свои собственные запускные конфигурации. Вы можете связать только одну конфигурацию запуска с группой автоматической масштабирования одновременно, и он не может быть изменен после его создания.
- Чтобы изменить конфигурацию запуска, связанную с группой автоматической масштабирования, замените существующую конфигурацию запуска новым.
После того, как находятся новые конфигурации запуска, любые новые экземпляры, которые запускаются, используйте новые параметры конфигурации запуска, но существующие экземпляры не затрагиваются.
Когда автоматическое масштабирование удаляет экземпляры (упомянутые как масштабирование) из группы, политика завершения по умолчанию — удалить экземпляры с самым ранним конфигурацией запуска.
Тем не менее, вы должны знать, что если зоны доступности были несбалансированы, чтобы начать с того, что автоматическое масштабирование может удалить экземпляр с новой конфигурацией запуска, чтобы сбалансировать зоны.
В таких ситуациях вы должны иметь процессы на месте, чтобы компенсировать этот эффект.
Для реализации этой методики начните с автоматической масштабирования группы и упругой балансировочной нагрузки балансировку нагрузки.
Чтобы развернуть новую версию приложения в зеленой среде, обновите автоматическую масштабирующую группу с новой конфигурацией запуска, а затем масштабируйте группу автоматической масштабирования в два раза его первоначального размера.
Следующим шагом является сокращение группы автоматической масштабирования обратно к исходному размеру.
По умолчанию экземпляры со старой конфигурацией запуска сняты первыми.
Вы также можете использовать режим ожидания группы, чтобы временно удалить экземпляры из группы автоматического масштабирования.
Наличие экземпляра в режиме ожидания помогает в быстрых откатах, если требуется.
Как только вы уверены в вновь развернутой версии приложения, вы можете навсегда удалить экземпляры в режиме ожидания.
Чтобы выполнить откат, обновите группу автоматической масштабирования со старой конфигурацией запуска.
Затем выполните предыдущие шаги в обратном порядке. Или если экземпляры в режиме ожидания, верните их онлайн
Смейте окружающую среду эластичного приложения Geanstalk
- Эластичный Geanstalk позволяет быстро и простым развертыванию и управлению приложениями без необходимости беспокоиться о инфраструктуре, которая запускает эти приложения.
- Чтобы развернуть приложение с использованием эластичного Geanstalk, загрузите версию приложения в виде пакета приложения (например, файл Java .war или файл .zip), а затем предоставить некоторую информацию о вашем приложении.
На основании информации о приложении эластичный Beanstalk разворачивает приложение в синей среде и обеспечивает URL для доступа к среде (обычно для веб-серверов).
Elestic Beanstalk обеспечивает несколько политик развертывания, которые вы можете настроить для использования, начиная от политик, которые выполняют обновление в месте в существующих экземплярах, к неизменному развертыванию с использованием набора новых экземпляров.
Поскольку упругий Beanstalk выполняет обновление на месте при обновлении ваших версий приложений, ваше приложение может стать недоступным для пользователей в течение короткого периода времени.
Эластичный Beanstalk обеспечивает URL окружающей среды, когда приложение увеличивается и работает.
Зеленая среда направляется со своей собственной средой URL.
В это время две среды возникают и бегают, но только синяя среда обслуживает производственный трафик.
Используйте следующую процедуру для продвижения зеленой среды для обслуживания производственного трафика.
- Перейдите к приборной панели окружающей среды в упругой консоли Beanstalk.
В меню действий выберите URL-адрес Swap Environment.
Elestic Beanstalk выполняет переключатель DNS, который обычно занимает несколько минут.
Как только изменения DNS распространяются, вы можете прекратить синюю среду.
Клонировать стек в AWS OpsWorks и обновление DNS
- AWS OPSWORKS использует концепцию стеков, которые являются логическими группами ресурсов AWS (экземпляры EC2, RDS Amazon, упругий нагрузки и т. Д.), которые имеют общую цель и должны быть логически управляемыми вместе.
- Стеки изготавливаются из одного или нескольких слоев.
Слой представляет собой набор экземпляров EC2, которые обслуживают определенную цель, например, приложения для обслуживания или размещения сервера базы данных.
Когда хранилище данных является частью стека, вы должны знать о некоторых проблемах управления данными.
Чтобы реализовать эту технику в AWS OpsSworks, поднимите синюю среду/стек с текущей версией приложения.
Далее создайте зеленую среду/стек с более новой версией приложения.
На данный момент зеленая среда не получает никакого движения.
Если упругая балансировка нагрузки должна быть инициализирована, вы можете сделать это в это время.
Когда пришло время продвигать зеленую среду/стек в производство, обновите DNS-записи, чтобы указать на балансировщик нагрузки на зеленую среду/стека.
Вы также можете сделать этот DNS постепенно с помощью взвешенной политики маршрутизации Amazon Route.
Лучшие практики для управления синхронизацией данных и схемыми
- Сложность управления синхронизацией данных по двум различным средам зависит от количества используемых хранилище данных, индивидуальности модели данных и требований согласованности данных.
Как синие и зеленые среды нуждаются в современных данных:
- Зеленая среда нуждается в современном доступе к данным, потому что он становится новой производственной средой.
- Синяя среда нуждается в современных данных в случае отката, когда производство либо сдвигается назад, либо остается в синей среде.
В целом, вы достигаете это, имея и зеленые и синие среды, делят одни и те же хранилища данных. Неструктурированные хранилища данных, такие как хранилище объектов Amazon S3, базы данных NoSQL и общие файловые системы часто проще поделиться между двумя средами.
Структурированные хранилища данных, такие как RDBMM, где схема данных может расходиться между средами, обычно требуют дополнительных соображений.
Общая рекомендация состоит в том, чтобы отсоединить схему изменения из изменений кода. Таким образом, реляционная база данных выходит за пределами границы окружающей среды, определенной для синего/зеленого развертывания и совместно используемых между синими и зелеными средами. Две подходы для выполнения изменений схемы часто используются в тандеме:
- Схема изменилась первой, до развертывания синего/зеленого кода.
Обновления базы данных должны быть обратно совместимыми, поэтому старая версия приложения все еще может взаимодействовать с данными.
Схема изменяется последней, после развертывания синего/зеленого кода.
Изменения кода в новой версии приложения должны быть обратно совместимы со старой схемой.
Существует повышенный риск, связанный с управлением схемой с помощью удаленного подхода: сбои в процессе модификации схемы могут повлиять на вашу производственную среду.
Ваши изменения аддитивных изменений могут снизить более раннее применение из-за недокументированной проблемы, где перезапущены лучшие практики или где новая версия приложения все еще имеет зависимость на удаленном поле где-то в коде.
Чтобы смягчить риск соответствующим образом, этот паттерн ставит тяжелый упор на шаги жизненного цикла программного обеспечения предварительного развертывания.
Обязательно иметь сильную фазу тестирования и рамки и сильную фазу QA.
Выполнение развертывания в тестовой среде может помочь выявить эти виды вопросов рано, прежде чем толчок к производству.
Когда синие/зеленые развертывания не рекомендуются
- Следующие сценарии подчеркивают узоры, которые могут не быть хорошо подходящими для синих/зеленых развертываний.
Ваши изменения схемы слишком сложны, чтобы отделиться от изменения кода? Обмен информационными магазинами не выполнимо?
В некоторых сценариях совместное использование хранилища данных не желательно или возможно. Изменения схемы слишком сложны для развязки. Местонаправленность данных вводит слишком много разложения производительности к применению, так как, когда синие и зеленые среды находятся в географически разнородных областях. Все эти ситуации требуют раствора, в котором хранилище данных находится внутри границы среды развертывания, и плотно связан с синими и зелеными приложениями соответственно.
Это требует изменения данных, которые можно синхронизировано-размножаться из синей среды к зеленой, и наоборот. Системы и процессы для достижения этого, как правило, являются сложными и ограничены требованиями к консистенциям данных вашего приложения. Это означает, что во время самого развертывания вы должны также управлять надежностью, масштабируемостью и выполнением этой рабочей нагрузки синхронизации, добавляя риск для развертывания.
Ваша заявка должна быть развертываем в курсе?
Вы должны рассмотреть возможность использования флагов функций в вашем приложении, чтобы сделать его развертыванием. Это поможет вам контролировать возможность включения/отключения функций приложения в синем/зеленом развертывании. Ваш прикладной код будет запустить дополнительные или альтернативные подпрограммы во время развертывания, чтобы сохранить данные синхронизации или выполнять другие обязанности, связанные с развертыванием. Эти процедуры включены/отключены, отключенные во время развертывания с помощью флагов конфигурации.
Введение в развертывание ваших приложений вводит дополнительное риск и сложность и обычно не рекомендуется с синим/зеленым развертыванием. Целью синего/зеленых развертываний является достижение неизменной инфраструктуры, где вы не вносите изменения в ваше приложение после его развертывания, но вообще восстанавливается. Таким образом, вы убедитесь, что тот же код работает в настройке производства и в настройке развертывания, снижая общие факторы риска.
Приложение Prom Place Shold (Cots) приходит с предопределенным процессом обновления/обновления, который не является синим/зеленым развертыванием?
Многие коммерческие поставщики программного обеспечения предоставляют свое собственное обновление и обновление процесса для приложений, которые они проверены и проверены для распространения. Хотя поставщики все чаще принимают принципы неизменной инфраструктуры и автоматизированное развертывание, в настоящее время не все программные продукты имеют эти возможности.
Работая вокруг рекомендуемого поставщика поставщиков и практик развертывания, чтобы попытаться реализовать или имитировать процесс развертывания синего/зеленого развертывания, также может ввести ненужный риск, который может потенциально отрицать преимущества этой методологии.
Заключение
Развертывание приложений имеет связанные с ними риски. Однако, такие успемы, как появление облачных вычислений, рамок развертывания и автоматизации, а также новые методы развертывания, синий/зеленый, например, помогают смягчить риски, такие как человеческая ошибка, процесс, простоя и возможности отката.
Модель выставления счетов AWS и широкий спектр инструментов автоматизации позволяет клиентам намного проще двигаться быстро и экономически эффективно реализовывать синие/зеленые развертывания в масштабе.
Ссылка
Оригинальная бумага
Оригинал: «https://dev.to/awsmenacommunity/blue-green-deployments-on-aws-aws-white-paper-summary-2192»