Про деплои и ковбоев
Canary Deployment (Канареечный деплой)
Назван по аналогии с "канарейками в шахтах", по реакции которых шахтеры оценивали безопасность шахт. В современных реалиях птичками становится небольшая группа пользователей, которая первой взаимодействует с новой версией. Обычно выкатывается на 1-5% трафика, затем, если всё стабильно, — идет расширение: 10%, 25%, 50%, 100%. Весь процесс контролируется по метрикам: ошибки, латентность, бизнес-показатели (например, конверсии).
Преимущества:
⚪️Контролируемый риск: баги влияют на ограниченное число пользователей
⚪️Гибкость: можно медленно масштабировать rollout, давая больше времени на оценку
⚪️Аналитика и A/B тесты: канареек на проде может быть несколько , что позволяет собирать поведенческие данные и проводить тесты
⚪️Быстрый откат: достаточно выключить канареечный сегмент
Недостатки:
⚪️Сложная маршрутизация трафика: нужен продвинутый механизм маршрутизации на уровне балансировщика нагрузки, API Gateway, ingress controller и т.д.
⚪️Две версии одновременно: увеличивает затрату ресурсов на мониторинг, логирование и дебага
⚪️Сложности с совместимостью данных: если новая версия использует требует изменение в схеме данных — нужен продуманный backward-совместимый подход
Когда использовать:
✔️Продукты с большим числом пользователей и частыми релизами
✔️Критичные бизнес-функции, где важно протестировать поведение на реальных данных
✔️Развёртывания с продвинутой системой мониторинга (Prometheus, NewRelic, Datadog и т.п.)
Blue-Green Deployment
В рамках этого подхода поддерживаются две идентичные среды: например Blue (текущая, продакшн) и Green (новая). Green разворачивается и тестируется в фоне. Когда готова — трафик плавно переключается на неё (через DNS, LB, ingress). Если возникли проблемы — откат осуществляется моментальным возвратом на Blue.
Преимущества:
⚪️Мгновенный rollback: просто переключение обратно
⚪️Изоляция версий: Blue и Green полностью независимы (избегается смешение)
⚪️Чистота среды: новая версия тестируется в production-like окружении до релиза
⚪️Запас по мощности: в случае резкого роста нагрузки Blue и Green объединяются и система способна держать до 2х нагрузки
Недостатки:
⚪️Большой расход ресурсов: нужно поддерживать одновременно 2 полноценные копии приложения (а иногда и баз данных)
⚪️Сложности с миграциями БД: как управлять изменениями схемы, если обе версии используют одну и ту же БД?
Когда использовать:
✔️Когда важна предсказуемость и атомарность деплоя
✔️В системах, где легче задублировать окружение, чем поддерживать сложную логику маршрутизации
✔️Когда релизов немного, но они крупные и требуют подготовки
Читать вторую часть
#полезныематериалы @downtime_bar
Post #231
442

- 👍 4
- 🤗 2
- ❤ 1