Как выкатить без простоя
Вопрос
Интервьюер: «Как вы обеспечиваете деплой без простоя для HTTP-сервиса с базой данных?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Стратегия: rolling, blue-green или canary, и почему выбрана
Readiness probe и прогрев: трафик только в готовые экземпляры
Graceful shutdown: SIGTERM, доработка запросов, preStop
Совместимость версий API и схемы БД: expand/contract
Быстрый откат и наблюдение за метриками после выкатки
Что могут спросить следом
- Как удалить колонку, которую использует код?
- Что будет с долгими WebSocket-соединениями при деплое?
- Как проверить, что деплой действительно без простоя?
Разбор
Образцовый ответ: «Беру rolling update с maxUnavailable 0, чтобы готовых экземпляров не становилось меньше. Новый под получает трафик только после readiness, а старый при SIGTERM перестаёт принимать соединения, дорабатывает текущие и выходит; preStop на несколько секунд закрывает гонку с обновлением балансировщика. Самое сложное база: во время выкатки работают две версии, поэтому миграции делаю по expand/contract, удаление колонки только отдельным релизом, когда старого кода нет. После выкатки смотрю на долю 5xx и задержку, при деградации rollout undo. Проверяю, что простоя нет, нагрузочным прогоном во время выкатки на стенде: ни одного 502».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.