Сине-зелёные развёртывания
Настройте стратегии сине-зелёных развёртываний с помощью GitHub Actions, чтобы сократить простой и упростить быстрый откат.
«Сине-зелёные развёртывания» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое развёртывание Blue/Green
Добро пожаловать! На этом уроке мы подробно рассмотрим развёртывания Blue/Green — мощную стратегию выпуска нового программного обеспечения.
Она призвана свести к минимуму простой и риски во время развёртываний, обеспечивая пользователям бесперебойную работу.
Знакомство с Blue и Green
Представьте, что у вас есть два одинаковых производственных окружения: одно называется «Blue», а другое — «Green».
- Blue: Текущее активное окружение, обслуживающее весь пользовательский трафик.
- Green: Неактивное идентичное окружение, используемое для развёртывания и тестирования новых версий.
Как работает Blue/Green
Процесс прост, но эффективен:
- Разверните новую версию приложения в окружении Green (неактивном).
- Тщательно протестируйте новую версию в Green.
- Убедившись в её корректной работе, переключите весь пользовательский трафик с Blue на Green.
- Старое окружение Blue теперь неактивно, и его можно сохранить для быстрого отката или обновления.
Зачем использовать Blue/Green
Эта стратегия даёт существенные преимущества:
- Нулевой простой: Пользователи незаметно переходят на новую версию без перерывов.
- Мгновенный откат: Если возникают проблемы, просто переключите трафик обратно на стабильное окружение Blue.
- Снижение рисков: Тестируйте новые версии в окружении, похожем на производственное, до их запуска.
Что вам понадобится
Для реализации Blue/Green обычно необходимы:
- Балансировщик нагрузки: Для направления трафика в окружение Blue или Green.
- Два одинаковых окружения: Часто облачных, что обеспечивает согласованность.
- Инструмент автоматизации: Например, GitHub Actions для управления развёртываниями и переключением трафика.
Координация с помощью GitHub Actions
GitHub Actions может автоматизировать каждый шаг развёртывания Blue/Green.
Можно определить рабочие процессы, которые будут:
- Собирать приложение и развёртывать его в неактивном окружении.
- Запускать автоматические тесты для нового развёртывания.
- Инициировать переключение трафика через API балансировщика нагрузки или скрипт.
Развёртывание новой версии
Вот упрощённый фрагмент GitHub Actions для развёртывания новой версии приложения в окружении «Green». Обратите внимание на использование имени environment.
name: Deploy to Green
on:
push:
branches:
- main
jobs:
deploy-green:
runs-on: ubuntu-latest
environment: Green # Target the Green environment
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy app to Green
run: |
echo "Deploying application version ${{ github.sha }} to Green environment..."
# Your actual deployment commands go here
# e.g., deploy to a specific AWS EC2 instance or Kubernetes namespaceПереключение трафика
После успешного развёртывания и тестирования последний шаг — переключить трафик. Обычно для этого обновляют балансировщик нагрузки или запись DNS.
Вот концептуальный шаг GitHub Actions, который инициирует это переключение:
name: Switch Traffic to Green
on:
workflow_dispatch: # Manual trigger for traffic switch
jobs:
switch-traffic:
runs-on: ubuntu-latest
steps:
- name: Update Load Balancer to Green
run: |
echo "Switching load balancer traffic to Green environment..."
# Call your load balancer's API or a script here
# e.g., aws elbv2 modify-target-group-attributes ...
# or kubectl apply -f green-ingress.yamlМгновенный откат
Что произойдёт, если вы переключите трафик на Green, а затем обнаружится критическая ошибка?
С Blue/Green откат выполняется мгновенно! Просто переключите трафик балансировщика нагрузки обратно на исходное стабильное окружение Blue.
Это значительно уменьшает последствия инцидента и время восстановления.
Важные аспекты
Несмотря на свои преимущества, Blue/Green имеет особенности:
- Дублирование ресурсов: Вы запускаете два полноценных окружения, что может вдвое увеличить расходы на инфраструктуру.
- Миграции базы данных: Обработка изменений базы данных может быть сложной, поскольку Blue и Green могут нуждаться в доступе к одному и тому же хранилищу данных.
- Приложения с состоянием: Приложения с сохраняемым состоянием требуют тщательного планирования.
Тест по развёртыванию Blue/Green
Давайте проверим, насколько хорошо вы поняли развёртывания Blue/Green.
Краткие итоги урока
Отличная работа! Вы узнали о развёртываниях Blue/Green.
- Для развёртывания новых версий используются два одинаковых окружения (Blue и Green).
- Обеспечиваются нулевой простой и мгновенный откат.
- GitHub Actions может автоматизировать развёртывание и переключение трафика.
- Не забудьте учесть расходы на ресурсы и изменения базы данных!
Часто задаваемые вопросы
Урок «Сине-зелёные развёртывания» бесплатный?
Да — полный текст урока «Сине-зелёные развёртывания» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Сине-зелёные развёртывания»?
Настройте стратегии сине-зелёных развёртываний с помощью GitHub Actions, чтобы сократить простой и упростить быстрый откат. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Сине-зелёные развёртывания»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сине-зелёные развёртывания
- Канареечные выпуски с Actions
- Откаты и аварийное восстановление
- Флаги функций и постепенные развёртывания