Мы выкатывались по пятницам, потому что «днём много пользователей». В итоге именно в пятницу накапливалась усталость, а в ночь на субботу начинались эксперименты. Однажды откат занял почти час, потому что никто не проверил совместимость миграций.
После того инцидента мы сели и честно выписали, что ломается чаще всего. Получился короткий список: отсутствие чеклиста, отсутствие владельца релиза и «устные договорённости» без фиксации.
Что мы изменили
Первое и самое скучное: сделали чеклист из 12 пунктов. Второе: назначили релиз-капитана, который не кодит в этот момент, а следит за процессом. Третье: добавили обязательный dry-run на стенде с копией продовых данных.
release_checklist:
- verify_migrations
- warmup_caches
- run_smoke_tests
- monitor_error_rate_15m
- rollback_plan_ready
Это не «магия процессов», просто дисциплина. Через месяц среднее время релиза сократилось с 58 до 24 минут, а количество ночных алертов упало почти вдвое.
Героизм в релизе обычно означает, что кто-то заранее не сделал домашнюю работу.
Главное изменение произошло не в CI, а в голове команды. Мы перестали воспринимать предсказуемость как скуку. Наоборот, стало легче экспериментировать, потому что появился безопасный контур.