Blue-Green деплой
Поддерживаем два идентичных окружения: Blue (текущий live) и Green (новая версия). После тестирования Green — переключаем трафик.
# Nginx upstream — переключение между blue и green
upstream app {
server 127.0.0.1:8080; # blue
# server 127.0.0.1:8081; # green (раскомментировать при переключении)
}
server {
location / {
proxy_pass http://app;
}
}
Blue-Green с Docker Compose
# Запускаем green окружение
docker-compose -f docker-compose.green.yml up -d
# Проверяем green
curl http://localhost:8081/health
# Переключаем Nginx на green
sed -i 's/8080/8081/' /etc/nginx/conf.d/app.conf
nginx -s reload
# Останавливаем blue
docker-compose -f docker-compose.blue.yml down
💡 Blue-Green позволяет мгновенный откат: если green не работает — переключите Nginx обратно на blue одной командой.
Rolling Deployment
Постепенная замена инстансов: обновляем один за другим, не останавливая сервис.
# Пример с Docker Swarm
docker service update --image myapp:v2 --update-parallelism 1 --update-delay 30s myapp_service
| Стратегия | Откат | Ресурсы | Сложность |
|---|---|---|---|
| Blue-Green | Мгновенный | 2x | Средняя |
| Rolling | Постепенный | 1x + overhead | Низкая |
| Canary | Постепенный | 1x | Высокая |
⚠️ При blue-green деплое убедитесь что оба окружения работают с одной базой данных и схема БД совместима с обеими версиями приложения.