Рубрики
Uncategorized

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

Практикуется подобным Amazon более десяти лет, Blue-Green является доказанным и безопасным методом для … Теги с DevOps, начинающими, Куберателями, CodeNewie.

Учебники семафор (10 частей серии)

Практикуется подобным Amazon более десяти лет, Blue-Green является проверенным и безопасным методом для непрерывного развертывания программного обеспечения.

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

Если это так, все в порядке — вы не одиноки — но это не должно быть таким. Многие методы могут помочь нам сделать безопасные развертывания без простоя или необходимость в поддержании Windows. Один из этих методов называется сине-зеленый (или синий/зеленый ), и вот что мы узнаем сегодня.

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

Сине-зеленое развертывание — это методика управления выпуском, которая снижает риск и минимизирует время простоя. Он использует две производственные среды, известные как синие и зеленые, чтобы обеспечить надежное тестирование, непрерывные обновления без отключения и мгновенных откатов.

Происхождение сине-зеленых развертываний

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

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

Эти разработчики, Даниэль Север и Джез скромный Затем имел нетрадиционную, но блестящую идею. Они будут развернуть и тестировать непосредственно в производстве.

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

Развертывание работало так. Они скопировали папку, содержащую последнюю версию в производственную машину. Затем они начали веб-сайт, используя отдельный домен и тестируют курение прямо там. Как только они были счастливы, они будут указывать на веб-сервере Apache в новую папку, вызовите его в день и предположительно имеют раунд пива. Если что-то пошло на юг, они могут указать веб-серверу обратно в старую папку, исправить ошибки и повторите попытку. Эта стратегия значительно улучшила обнаружение ошибок, потому что тестовые и производственные среды теперь были одинаковыми.

На данный момент у них были две среды на одной машине: одна для старой версии и другой для новой. Первоначально они хотели назвать их буквами: окружающая обстановка А , Окружающая среда B , и так далее. Но кто-то указал, что люди будут склонны верить, что a как-то лучше, чем b (возможно, это звучало слишком похоже на «план B»). Они наконец урегулированы на использование цветов вместо этого, у которых не было естественного порядка. Таким образом, они запланировали имена, такие как синий , зеленый или апельсин (Они избегали красный потому что он подразумевает опасность). В конце концов, оказалось, что им нужны только две среды. И так термин сине-зеленый был придуман.

Как работают сине-зеленые развертывания?

С несколькими предостережениями мы рассмотрим позже, Blue-Green в значительной степени проверяет все коробки для идеального процесса развертывания:

  • Бесшовные : Пользователи не должны испытывать время простоя.
  • Безопасный : низкая вероятность неудачи.
  • Полностью обратимый : Мы можем отменить изменение без побочных эффектов.

Основой метода Blue-Green — это развертывание на стороне боковых. Для этого нам нужно два отдельно, но идентично среда. И я имею в виду окружающая среда На самом деле, в том числе серверы, виртуальные машины, контейнеры, конфигурации, базы данных, среди прочего. Иногда мы можем использовать разные коробки. В других случаях мы можем использовать отдельные виртуальные машины, работающие на одном оборудовании. Или они могут быть разные контейнеры, работающие в одном устройстве.

В чистом виде Blue-Green просит дублировать каждый ресурс, наша приложение зависит от.

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

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

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

Как только мы убедитесь, что версия работает в Green работает хорошо, мы переключаем маршрут. Тогда цикл начинается снова.

Развертывание завершено, как только пользователи переключаются на новую версию, работающую на зеленом

Облако делает сине-зеленые развертывания Более осуществимо

Сохранение двух наборов окружающей среды все время может стать дорогим. К счастью, у нас много инструментов, которые позволяют нам взять и разорвать инфраструктуру по требованию. Мы можем начать и остановить серверы с Инфраструктура как код (IAC) платформы, такие как Anisible или Terraform. Мы можем упростить выпуску с контейнерами или развертыванием оркестроидателя с использованием Kubernetes. Удивительно, когда мы учитываем гибкость и сокращение затрат, облачные предложения, сине-зеленые развертывания находятся в пределах досягаемости каждого.

Облако тезирует большую часть инфраструктуры. Мы можем открывать развертывание как серию свободно связанных компонентов.

Когда пришло время для нового выпуска, мы создаем новые ресурсы, не касаясь живой среды. На практике мы будем использовать CI/CD Инструмент, как Семафор Создать идентичные новые компоненты и сделать развертывание.

Затем мы автоматически повторно прослушайте все пользовательские соединения одновременно.

Как только развертывание будет завершено, и мы довольны, мы можем ломать старую среду.

Одна технология, которая делает сине-зеленый очень простым, это Кубернеты. Чтобы узнать больше и увидеть развертывание Kubernetes в действии, возьмитесь себе свободную копию нашей электронной книги: CI/CD с Docker и Kubernetes Отказ

Кто может извлечь выгоду из сине-зеленых развертываний?

Blue-Green — отличное решение, когда нам нужно:

  • Время работы : Когда мы не можем позволить себе снизить систему, чтобы обновить ее.
  • Точные тесты : Когда нужно более надежные и точные тесты.
  • Надежность : Когда мы хотим улучшить надежность наших развертываний.

Чтобы использовать сине-зеленые развертывания, нам понадобится несколько вещей:

  • Автоматизация : нам нужно Непрерывная доставка трубопроводов Автоматизировать процесс обеспечения, развертывания и тестирования.
  • Тестирование : Нам нужны исчерпывающие тесты. Мы полагаемся на них, чтобы решить, когда релизы готовы развернуть. Мы должны использовать Непрерывная интеграция Чтобы быстро ловить ошибки и тестировать новые версии, прежде чем жить.
  • Изоляция : Нам нужны две одинаковые и отдельные среды. В противном случае одна среда может повлиять на другую.

Могут ли все делать синие зеленые развертывания? Не всегда, некоторые ситуации могут помешать нам использовать метод:

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

Плюсы сине-зеленых развертываний

Итак, сине-зеленый правильный стратегия развертывания для вас? Чтобы ответить на это, нам придется сравнивать его плюсы и минусы.

Начнем с плюсов:

  • Тестирование паритета : Это особенность. Тестирующая четность означает, что тесты действительно отражают реальность производства. Это то, что Дэн и Джез искали, когда они разработали сине-зеленый. Запустив тесты на том же аппаратном и программном обеспечении, они сделали их более полезными и значимыми.
  • Развертывание в любое время : Нет простоев означает, что мы можем сделать релизы в любое время. Нет необходимости ждать окон обслуживания.
  • Мгновенное сокращение : Пользователи включены в новую версию мгновенно или почти так. Каждый видит последний релиз одновременно.
  • Мгновенный откат : Отрезание работает обоими способами. Если мы решили вернуться к предыдущей версии, мы можем переключить всех пользователей в одно мгновение.
  • Горячая позиция : Blue-Green может спасти нас от сценариев стихийных бедствий. Предположим, что один центр обработки данных входит в автономный режим, приведя живую среду. Нет Biggie, мы перейдем к другому, пока проблема не будет исправлена. Это будет работать так же, как долго у нас есть меры предосторожности не ставить синий и зеленый на ту же зону доступности.
  • Postmortem : Отладка неудачных выпусков сложно с установленными развертываниями. Когда столкнулся с простоя, приоритет всегда возвращается к нормальности. Сбор данных отладки является вторичным, поэтому во время отката может быть потеряна много ценной информации. Blue-Green не страдает от этой проблемы-отката, всегда оставляют неисправное развертывание Intact для анализа.

Даунсиды сине-зеленых развертываний

На данный момент вы можете думать, что сине-зеленый должен быть поймать. В противном случае все, что могли бы использовать его. Итак, давайте рассмотрим недостатки:

  • Холодно начинается : Пользователи могут испытывать медлительность, когда они внезапно переключаются на новую среду. Кроме того, любые необнаруженные проблемы с производительностью, вероятно, появится на данный момент. Работа на разминке и стресс-тесты смягчают эти проблемы.
  • Стоит : По сравнению с другими методами развертывания синего зеленого цвета дороже. Предоставление инфраструктуры по требованию по требованию. Но когда мы делаем несколько масштабированных развертываний в день, затраты могут снежный ком.
  • Время : Настройка процесса развертывания Blue-Gree требует времени и усилий. Процесс сложен и имеет много ответственности. Возможно, нам понадобится провести много итераций, прежде чем мы получим это правильно.
  • Базы данных : Миграция базы данных сложнее, даже до такой степени, что вы демонстрируете. Изменения схемы баз данных должны быть впечатляемыми и обратной совместимой. Возможно, нам понадобится двигаться вперед и назад между старыми и новыми версиями. Проблема усугубляется, когда у нас есть две базы данных, один для синего и один для зеленого. Сохранение данных в синхронизации — это боль. Общие стратегии для решения этой проблемы связаны с использованием репликации или создания одной базы данных только для чтения.
  • Пользовательские транзакции : Во время сокращения некоторые пользовательские транзакции будут прерваны. Мы должны тщательно учитывать, как справиться с ними. Как мы должны иметь дело с полупринянными транзакциями? Представляем ли мы сообщение об ошибке и сообщите пользователям попробовать еще раз? Или мы пытаемся нести их в новую среду? Одним из возможных решений состоит в том, чтобы кормить все транзакции в обе среды одновременно, параллельно. В этом сценарии нам нужно будет иметь дело с любыми дублированными данными после завершения развертывания.
  • Общие услуги : Базы данных и другие общие услуги могут утерять информацию между синим и зеленым. Мы должны быть осторожны здесь, в противном случае одна среда может повлиять на другую косвенно. Это может сломать правило изоляции и вмешиваться в развертывание.

Как видите, Blue-Green имеет много преимуществ по сравнению с традиционными вместо развертываний, но у него также есть некоторые недостатки. Некоторые люди не любят подход всего или ничего и предпочитают использовать канарные релизы, которые сочетают в себе элементы из сине-зеленых и установленных развертываний и предлагают более постепенные переходы. Вы можете прочитать все о канаре, развертываемых в нашей бесплатной электронной книге CI/CD с Docker и Kubernetes Отказ

Где узнать больше

Мы узнали, какие сине-зеленые развертывания являются, как они стали, и проблемы, которые они решают. Я надеюсь, что этот пост поможет вам решить, является ли Blue-Green правильной стратегией развертывания для вас.

Узнайте о большем количестве способах развертывания программного обеспечения с этими сообщениями:

Больше ресурсов никогда не прекращают учиться:

Непрерывная интеграция и доставка в AWS Kubernetes

Томас Фернандес · 11 октября 1919 · 7 минут чтения

Docker и Java Spring Boot [Part.1: Непрерывная интеграция]

Томас Фернандес · 22 января 22,20 · 5 мин читать

Kubernetes и Java Spring Boot [Part.2: Непрерывное развертывание]

Томас Фернандес · 30 января 20 мин. читать

Google Cloud Kubernetes за 10 минут

Томас Фернандес · 14 ноября 1919 · 10 мин читать

Спасибо за чтение!

Учебники семафор (10 частей серии)

Оригинал: «https://dev.to/semaphore/what-is-blue-green-deployment-1ong»