Веб-Сервисы Amazon – Как Реализовать Сине-Зеленое Развертывание С Одной Главной Веткой

  • Автор темы Dabian20
  • Обновлено
  • 18, Oct 2024
  • #1

Мне сказали, что простой выход — иметь две производственные ветки: master/blue и master/green, действие git merge запускает CI для развертывания в соответствующих стеках. Возможно ли это сделать с помощью одной главной ветки?

Еще немного подробностей о наших стеках.

  • CloudFront, в качестве источника выбран сегмент S3, который обслуживает все статические ресурсы интерфейсного SPA (одностраничное приложение).
  • Приложение SPA взаимодействует со шлюзом AWS API, который подключает AWS Lambda.
  • AWS Lambda отвечает за операции CRUD с базой данных с DynamoDB.
  • Интерфейсное приложение и функция Lambda имеют собственное репозиторий Git, действие слияния главной ветки Git запускает 2 задания Circle CI, одно копирует внешние ресурсы в корзину S3, другое развертывает Lambda с бессерверной платформой.

Для сине-зеленого развертывания я планирую иметь 2 экземпляра S3, шлюз API и функцию Lambda. Чтобы переключиться на сине-зеленый, нам нужно изменить источник с одного сегмента S3 на другой, а затем создать аннулирование для очистки кеша.

Чтобы сине-зеленое развертывание одной производственной ветки git работало, Circle CI должен знать, является ли текущий активный стек синим или зеленым, скопируйте и вставьте/разверните в другой стек. Если Circle CI не может это сделать, Альтернатива, о которой я мог бы подумать, - это каким-то образом поместить действие checkout_current_active_stack в крючок предварительной фиксации git? Чтобы быть конкретным:

  1. (в крючке git precommit) отправьте HTTP-запрос к API текущего активного стека (лямбда-функция AWS, которая отслеживает текущую информацию стека)
  2. развернуть базу на возвращаемом значении («синий» или «зеленый»)

#amazon-web-services #circleci #git-hooks #bluegreen

Dabian20


Рег
21 Aug, 2017

Тем
82

Постов
193

Баллов
633
  • 25, Oct 2024
  • #2

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

Разделение фаз конвейера имеет несколько преимуществ:

  1. Вам нужно только один раз скомпилировать/протестировать из
    master
    branch; then promote the packages through the Artefact Repository.
  2. Ваши пакеты навсегда хранятся в репозитории артефактов, например. Сонартип Нексус или Мастерская JFrog, это означает, что вы можете воспроизвести старую сборку, поскольку у вас есть определенные пакеты, используемые для развертывания.
  3. CodeDeploy будет обрабатывать шаблоны выпуска за вас, и вам не придется слишком много думать о том, как добиться сине-зеленого развертывания.

Также стоит отметить, что вы можете смоделировать весь конвейер в Автоматизация выпуска приложений такие инструменты, как BuildMaster или Nolio. Лично я предпочитаю строить свои конвейеры из нескольких 3р-д SaaS-решения для вечеринок.

 

Sonder


Рег
26 Jan, 2011

Тем
66

Постов
198

Баллов
568
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно