Ответ вслух Middle Деплой и эксплуатация спрашивают часто обновлено

Как вы выкатываете Python-сервис

Вопрос

Расскажите, как устроен деплой вашего Python-сервиса от коммита до продакшена.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «На каждый PR CI гоняет ruff, mypy, тесты на настоящей PostgreSQL и проверку, что миграции не забыты. После мержа собирается Docker-образ: зависимости по lock-файлу отдельным слоем, код поверх, процесс не от root, тег по хешу коммита.

Что должно прозвучать в ответе

  • CI: линтеры, типы, тесты, проверка миграций

  • Сборка Docker-образа с кешем слоёв, тег по коммиту

  • Миграции обратно совместимы, применяются отдельным шагом

  • Rolling или blue-green с readiness-пробами и graceful shutdown

  • Наблюдение после выкладки: ошибки, латентность, быстрый откат

  • Секреты и конфигурация через окружение

Что могут спросить следом

  • Как откатиться, если новая версия сломала прод?
  • Как вы применяете миграции в Kubernetes?

Разбор

Образцовый ответ: «На каждый PR CI гоняет ruff, mypy, тесты на настоящей PostgreSQL и проверку, что миграции не забыты. После мержа собирается Docker-образ: зависимости по lock-файлу отдельным слоем, код поверх, процесс не от root, тег по хешу коммита. Деплой начинается с миграций отдельной задачей, и они обязательно совместимы с предыдущей версией кода, иначе rolling update сломает старые экземпляры. Затем rolling update: новые поды поднимаются, проходят readiness, получают трафик, старые получают SIGTERM и корректно дообрабатывают запросы. Конфигурация и секреты приходят из окружения, в образе их нет. После выкладки смотрю дашборд: доля 5xx, p95 латентности, ошибки в Sentry; при проблемах откат на предыдущий тег одной командой, и он безопасен благодаря совместимым миграциям».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.