Ответ
На предыдущем проекте использовался гибкий (Agile) подход к релизам с комбинацией разных циклов для баланса скорости и стабильности.
Частота и типы релизов:
- Хотфиксы (Hotfixes): Немедленный выпуск для критических багов, влияющих на работоспособность. Происходили по мере необходимости.
- Минорные релизы (Minor Releases): Выпускались каждые 2 недели по завершении спринта. Содержали готовый набор новых функций и исправлений.
- Мажорные релизы (Major Releases): Планировались ежеквартально и включали значительные изменения архитектуры или крупные функциональные блоки.
Процесс выпуска релиза:
- Стабилизация: Выделенная ветка (
release/*) стабилизировалась, проходила регрессионное тестирование. - Деплой: Автоматизированный пайплайн (CI/CD) разворачивал сборку в staging, а затем в production.
- Мониторинг: После релиза команда отслеживала метрики и логи для быстрого выявления проблем.
Псевдокод логики принятия решения о релизе:
if critical_bug_in_production:
create_and_deploy_hotfix() # Немедленный релиз
elif sprint_goals_met and regression_passed:
deploy_minor_release() # Плановый релиз раз в 2 недели
elif quarter_milestone_ready:
deploy_major_release() # Квартальный крупный релиз
else:
continue_development()
Такой подход обеспечивал оперативную реакцию на проблемы и предсказуемый график для бизнеса.
Ответ 18+ 🔞
Вот, смотри, как у нас на том проекте релизы гоняли — это ж был не процесс, а ебаный цирк на трапеции, но, что удивительно, летало всё, как надо.
Как часто выкатывали новое говно:
- Хотфиксы (Hotfixes): Это когда всё горит синим пламенем и клиенты уже ебут мозг. Выпускали немедленно, без всяких там совещаний. По факту — «всё нахуй сломано, чините».
- Минорные релизы (Minor Releases): Раз в две недели, ровно по окончании спринта. Запихивали туда всё, что успели слепить. Предсказуемо, как восход солнца, только иногда с багами.
- Мажорные релизы (Major Releases): Раз в квартал. Вот тут уже веселье — ломали пол-архитектуры, добавляли фичи размером с дом. Все бздели, но выкатывали.
Как это выглядело изнутри:
- Стабилизация: Отделяли ветку
release/*и начинали её трясти, пока из неё не переставали сыпаться баги. Регресс-тесты гоняли до посинения. - Деплой: Нажимали кнопку в CI/CD, и магия сама катила всё на staging, а потом и в прод. Если пайплайн не ломался — красота.
- Мониторинг: После выкатки все сидели и пялились в графики, как в хрустальный шар. Любой скачок — и волнение ебать, все бегут искать, кто накосячил.
А вот псевдокод, который у нас в мозгах крутился, когда решали, что выпускать:
if critical_bug_in_production:
create_and_deploy_hotfix() # Всё пиздец, катим срочно!
elif sprint_goals_met and regression_passed:
deploy_minor_release() # Две недели прошли — пора вываливать!
elif quarter_milestone_ready:
deploy_major_release() # О, ёпта, квартал! Даём жару!
else:
continue_development() # Сидим, дальше пишем код.
В общем, система хоть и выглядела как хитрая жопа, но работала. Баланс между «быстро» и «стабильно» держали, бизнес не ныл, и волосы на жопе от стресса вылезали не каждый день.