Deployment strategies (blue/green, canary)
Тема дорожной карты · DevOps Engineer
Стратегии деплоя управляют профилем риска при выкатке нового кода. Rolling-обновление постепенно заменяет инстансы; blue-green переключает трафик между двумя полноценными окружениями; canary направляет небольшую долю трафика на новую версию с мониторингом; shadow дублирует продовый трафик, не затрагивая пользователей. Каждая стратегия — свой компромисс между скоростью отката, стоимостью инфраструктуры и тем, насколько рано вы поймаете регрессию. Выбирайте по «радиусу поражения» и уверенности в тестах.
Как это работает
Deployment strategies (blue/green, canary) автоматизирует путь от git push до работающего production-деплоя. Типичный пайплайн: lint и unit-тесты → сборка артефакта (Docker image, JAR и т.п.) → integration-тесты в эфемерном окружении → security scan → публикация артефакта в registry → деплой в stage → smoke-тесты → деплой в prod. GitHub Actions, GitLab CI и Jenkins — доминирующие runners; ArgoCD и Flux декларативно делают deploy-фазу для Kubernetes. Современные пайплайны запускаются на self-hosted runners ради безопасности и стоимости, с build-матрицами, тестирующими несколько OS/language-версий параллельно.
Когда применять
Стройте Deployment strategies (blue/green, canary) с первого дня любого проекта, даже личного. MVP-пайплайн: каждый push — тесты, каждый merge в main — сборка и деплой в stage. Откладывайте сложные deploy-стратегии (blue/green, canary), пока трафик не оправдает их, но никогда не откладывайте базу. Для российских команд GitLab CI часто предпочтительнее (self-hostable на Yandex Cloud, безопасно с точки зрения санкционных облаков); GitHub Actions ок для open-source-зеркал, но имел перебои с доступом из России.
Типичные ошибки
Ловушки CI/CD: секреты в логах пайплайна (используйте masked-переменные и никогда echo $TOKEN); shared runners, позволяющие секретам утекать между job'ами; flaky-тесты, которые перезапускают "пока не пройдут" вместо починки (это скрывает реальные регрессии); 30-минутные сборки из-за плохого кэширования; нет rollback-стратегии при провале деплоя; деплой в prod без smoke-тестов; manual approval gates, которые никто не enforce-ит. Отслеживайте длительность пайплайна — она всегда растёт, если не бороться.