Стратегии деплоя: rolling, blue-green, canary
Вопрос
Расскажи о стратегиях деплоя и когда какую выбрать.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Rolling: инстансы по очереди, дёшево, обе версии работают одновременно
Blue-green: два окружения, мгновенное переключение и откат, но двойные ресурсы
Canary: малая доля трафика, решение по метрикам
Feature flags отделяют релиз фичи от деплоя кода
Для всех, кроме recreate: обратно совместимые API и миграции
Что могут спросить следом
- Как автоматически решить, что canary плохой?
- Что делать с базой при blue-green?
Разбор
Самая простая стратегия это rolling: инстансы обновляются по одному или пачками. Ресурсов почти не нужно, но во время выкатки работают обе версии, и откат это такая же выкатка назад.
Blue-green держит два полных окружения. Новое поднимается рядом, проверяется, и балансировщик переключает трафик целиком. Откат мгновенный, но ресурсов нужно вдвое больше на время выкатки, а база обычно общая, поэтому миграции всё равно должны быть совместимыми.
Canary пускает на новую версию малую долю трафика и смотрит на метрики: ошибки, задержки, бизнес-показатели. Если всё хорошо, доля растёт. Это лучший выбор для больших сервисов с хорошим мониторингом.
Отдельно стоят feature flags: код выкачен, но фича выключена и включается по флагу для части пользователей. Для небольшого проекта я бы взял blue-green, для крупного canary плюс флаги.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Continuous delivery и continuous deployment
Следующий вопрос
Как бы ты построил CI/CD для проекта