Zero-downtime деплой: blue-green и rolling стратегии

Миграция · 04.02.2025
Zero-downtime деплой: blue-green и rolling стратегии

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 деплое убедитесь что оба окружения работают с одной базой данных и схема БД совместима с обеими версиями приложения.
← Назад в базу знаний Задать вопрос поддержке