Спроектируйте канареечный релиз
Вопрос
Интервьюер: «Как бы вы автоматизировали canary-релизы для 40 сервисов, чтобы плохую версию откатывало без человека?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Инструмент: Argo Rollouts, Flagger или меш с весами трафика
Шаги веса (1, 5, 25, 50, 100%) и паузы между ними
Метрики анализа: доля ошибок, задержка p99, по сравнению со stable, плюс бизнес-метрика
Пороги и минимальный объём выборки, автоматический откат
Совместимость БД и сессий, sticky-маршрутизация при необходимости
Шаблон для всех сервисов и уведомления команде
Что могут спросить следом
- Что делать сервисам с маленьким трафиком?
- Как канарить асинхронный воркер из очереди, у которого нет HTTP-трафика?
Разбор
Образцовый ответ: «Беру Argo Rollouts: он заменяет Deployment и умеет шаги с весами и анализом. Шаги 5%, 25%, 50%, 100% с паузами по 10 минут. На каждом шаге AnalysisTemplate запрашивает Prometheus: доля 5xx и p99 задержки канарейки против stable, плюс для критичных сервисов бизнес-метрика вроде успешных оплат. Порог, например, ошибки канарейки не выше stable плюс 1 п.п. и минимум 500 запросов в окне, иначе шаг продлевается. Провал анализа автоматически возвращает весь трафик на stable и пишет в канал команды. Всё это общий Helm-шаблон, сервис только задаёт свои пороги. Для малого трафика доля больше и окно длиннее, для воркеров канарейка по доле консьюмеров и метрикам ошибок обработки».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.