Ответ
Основная стратегия — автоматизация и использование идемпотентных процессов развертывания, которые позволяют быстро и безопасно откатиться.
Ключевые практики:
- Инфраструктура как код (IaC): Использую Terraform для описания всей инфраструктуры. Состояние хранится в удаленном бэкенде (Terraform Cloud/S3). Откат — это применение предыдущей версии конфигурации.
- Иммьютабельные артефакты: Приложение пакуется в Docker-образ с уникальным тегом (например, хэш коммита). Серверы не обновляются, а заменяются на новые с новым образом.
- Стратегии развертывания в Kubernetes:
- Rolling Update (по умолчанию): Поды обновляются постепенно. Откат одной командой:
kubectl rollout undo deployment/my-app. - Blue-Green: Разворачиваю новую версию ("green") параллельно со старой ("blue"). После тестирования переключаю трафик (например, обновляю Service selector). Откат — это обратное переключение.
- Canary: Новую версию разворачиваю для небольшого процента пользователей, анализирую метрики (ошибки, latency), и только потом масштабирую на всех.
- Rolling Update (по умолчанию): Поды обновляются постепенно. Откат одной командой:
- Мониторинг развертывания: Настраиваю дашборды в Grafana и алерты в Alertmanager на ключевые метрики (ошибки 5xx, рост latency) сразу после деплоя. Если срабатывает алерт — запускаю откат.