Мы выкатывались по пятницам, потому что «днём много пользователей». В итоге именно в пятницу накапливалась усталость, а в ночь на субботу начинались эксперименты. Однажды откат занял почти час, потому что никто не проверил совместимость миграций.

После того инцидента мы сели и честно выписали, что ломается чаще всего. Получился короткий список: отсутствие чеклиста, отсутствие владельца релиза и «устные договорённости» без фиксации.

Что мы изменили

Первое и самое скучное: сделали чеклист из 12 пунктов. Второе: назначили релиз-капитана, который не кодит в этот момент, а следит за процессом. Третье: добавили обязательный dry-run на стенде с копией продовых данных.

release_checklist:
  - verify_migrations
  - warmup_caches
  - run_smoke_tests
  - monitor_error_rate_15m
  - rollback_plan_ready

Это не «магия процессов», просто дисциплина. Через месяц среднее время релиза сократилось с 58 до 24 минут, а количество ночных алертов упало почти вдвое.

Героизм в релизе обычно означает, что кто-то заранее не сделал домашнюю работу.

Главное изменение произошло не в CI, а в голове команды. Мы перестали воспринимать предсказуемость как скуку. Наоборот, стало легче экспериментировать, потому что появился безопасный контур.