Как происходила раскатка?
Что проверяют
Как новая версия сервиса доходила до пользователей: кто решал, что релиз готов, как выкладывали без простоя и что делали, если что-то пошло не так. Это вопрос про зрелость процесса, а не про конкретный CI. Следом обычно спрашивают про последний неудачный релиз и откат.
Как отвечать
Опишите процесс своего проекта по пунктам:
- ветки и версии: trunk-based с короткими ветками или релизные ветки, семантические версии, частота релизов. Незаконченные фичи прячутся за feature-флагами, а не живут в ветке месяцами;
- окружения: dev, stage с данными, близкими к боевым, prod. Один и тот же артефакт проходит их по очереди;
- стратегия выкладки: rolling update, blue-green (две копии окружения и переключение трафика) или canary, когда новая версия сначала получает небольшую долю трафика. Для автоматической канарейки в Kubernetes используют Argo Rollouts или Flagger;
- совместимость: схема базы меняется по принципу expand/contract через Flyway или Liquibase, API не ломает старых клиентов, сообщения в Kafka читаются обеими версиями;
- корректная остановка:
server.shutdown=gracefulв Spring Boot (в свежих версиях включено по умолчанию), чтобы под дорабатывал текущие запросы, и readiness-проба, чтобы новый под не получал трафик до прогрева; - после выкладки: дашборды в Grafana по метрикам Micrometer (ошибки, задержка, heap, GC) и заранее оговорённые критерии отката.
Хорошо, если вспомните реальный инцидент: что сломалось, как быстро заметили, как откатили, что изменили в процессе. Проценты снижения инцидентов называйте только те, что сами видели в метриках.
Где спотыкаются
Отвечают одним словом «через Jenkins». Инструмент не объясняет, как избегали простоя и как решали, что релиз можно выкатывать дальше.
Путают blue-green и canary. Первый переключает весь трафик сразу между двумя окружениями, второй раскатывает версию постепенно по доле пользователей.
Не думают о миграциях при откате. Если новая версия удалила колонку, откат кода уже не спасает, поэтому удаление всегда идёт отдельным поздним релизом.