Знаю, минусы прилетят. Программисты скажут "это база", бизнес скажет "слишком сложно". Но всё равно расскажу.
Работаю в IT с 2013 года. И вот что меня реально бесило: каждую пятницу вечером команда говорила "деплоим в субботу ночью". Почему? "А вдруг сломается — пользователи пострадают".
Логика понятна. Но однажды я сел и посчитал, сколько это реально стоит.
Сначала — история про валерьянку
Год назад. Пятница, 23:00. Фича готова, протестирована, клиент ждёт.
Тимлид: "Деплоим завтра в 3 ночи, когда пользователей меньше".
Он: "А если сломается? Откат — это 20-30 минут паники. Пользователи увидят ошибки. Клиенты уйдут."
Окей, логично. Суббота, 3 ночи. Все на связи. Деплоим.
Паника. Звонки. "Откатывай! Откатывай!" Остановили новую версию, запустили старую, проверили, дышали в пакет 25 минут.
После этого я пил валерьянку перед каждым релизом. Не шучу.
И так — каждые две недели. Потому что чаще деплоить страшно.
А потом я сел и посчитал.
Сколько стоит "деплоить ночью"
4 деплоя в месяц × 4 часа каждый = 16 часов
16 часов × 4 человека = 64 часа в месяц
64 × 12 месяцев = 768 часов переработок в год
768 × 2000 ₽/час = 1 536 000 ₽
Полтора ляма. В год. Просто потому что страшно деплоить днём.
Разработчики не увольняются из-за денег. Увольняются, когда деплой в 3 ночи становится нормой. Когда страх "сломать прод" убивает инициативу. Когда каждый релиз — это стресс.
Цена потери одного разработчика:
Найм: 3-6 месяцев поиска
Онбординг: 2-3 месяца до нормальной работы
Потеря знаний: код, бизнес-логика, контекст
Итого: ~200К/мес × 6 месяцев = 1 200 000 ₽
Один уволившийся из-за выгорания стоит дороже, чем год нормального деплоя.
Что я сделал (объясняю для не-программистов)
Ресторан закрывается → ремонт кухни → открывается Клиенты ждут у двери или уходят к конкурентам Если что-то сломалось — ремонтируем дальше, клиенты всё ещё ждут
Ресторан работает (синяя кухня обслуживает клиентов) Рядом строится новая кухня (зелёная) Когда готова — официанты мгновенно переключаются на новую Клиенты не замечают Старая кухня остаётся — если что-то не так, возвращаемся за 30 секунд
Суть: У тебя две версии приложения. Одна работает, вторая готовится. Переключение — мгновенное. Откат — 30 секунд.
Что изменилось
Простой при деплое: 5-15 минут
Откат: 15-30 минут паники
Когда деплоить: ночь/выходные
Частота релизов: 1-2 раза в месяц
Стресс: валерьянка
Переработки: 768 часов/год
Простой при деплое: 0 секунд
Откат: 30 секунд одной командой
Когда деплоить: в обед, после кофе
Частота релизов: каждый день
Стресс: нет
Переработки: 0
Первый раз нажал "деплой" в 14:00 в будний день — руки тряслись. Привычка. Пошёл на обед, вернулся — всё работает. Если бы что-то сломалось — одна команда, 30 секунд, откат.
Деплой перестал быть событием. Стал рутиной.
Математика (для тех кто любит цифры)
Это консервативный расчёт. Только прямая экономия на переработках. Без учёта репутации, удержания разработчиков, скорости доставки фич.
Реальный кейс: наша платформа
Релизы: 5-7 раз в неделю
Деплой: в 14:00, после обеда
Простой: 0 минут за 3 месяца
Откаты: 2 раза за 3 месяца, каждый по 30 секунд
"Раньше перед деплоем я пил валерьянку. Проверял каждую мелочь по 10 раз, потому что откат — это кошмар на 20-30 минут с паникой и звонками. Сейчас нажимаю git push, иду обедать, возвращаюсь — всё работает. Если что-то не так — откатываю за 30 секунд одной командой."
Я сам так говорил. Это реально меняет отношение к работе.
Честно: где это НЕ работает
Готов снять панамку, если где-то преувеличил. Но вот реальные ограничения:
Лендинг, MVP с 10 пользователями, пет-проект — не тратьте время. Настройка стоит 180К, если у вас 3 пользователя — это overkill.
Настройка требует 40-80 часов работы человека, который понимает Docker, nginx, CI/CD. Если такого нет — либо наймите, либо оставьте как есть.
Приложение не в Docker, монолит с жёсткими зависимостями — сначала контейнеризация, потом Blue-Green. Это отдельный проект.
Blue-Green требует 2x ресурсов во время деплоя (две версии работают одновременно). Если сервер уже на пределе — будет плохо.
❌ Когда схема базы ломает обратную совместимость
Если новая версия удаляет колонки или меняет типы — старая версия не сможет работать с новой базой. Нужны "умные" миграции.
И да, иногда что-то идёт не так. Был случай: контейнер стартовал, но API не отвечал (проблема с миграциями). Health check поймал, откатился автоматически. Но это бесит, когда происходит.
Дисклеймер
Звучит как реклама DevOps-услуг? Понимаю.
Я ничего не продаю
Скрипты — bash, nginx, docker-compose. Всё стандартное
ROI — реальный расчёт на реальных цифрах
Можешь сам посчитать: сколько часов в год твоя команда тратит на ночные деплои?
Не веришь? Посчитай свои переработки. 4 деплоя в месяц × 4 часа × 4 человека × 12 месяцев × твою ставку.
"Это сложно, не для всех"
Согласен. Поэтому написал раздел про ограничения. Если у тебя MVP на 10 пользователей — не трать время.
Наймите. 40-80 часов работы DevOps стоят ~180 000 ₽. Экономия — 1 500 000 ₽ в год. ROI очевиден.
Отлично. Но спроси команду: они реально хотят деплоить в 3 ночи? Или делают это, потому что "так принято"?
"Kubernetes решает это автоматически"
Да. Если у тебя Kubernetes — там Blue-Green встроен. Эта статья для тех, у кого один сервер, docker-compose, и желание спать ночью.
Работаю в IT, насмотрелся на то, как команды выгорают из-за страха деплоить. Решил показать альтернативу.
Канал (редкие, но полезные посты): https://t.me/maslennikovigor
GitHub (бесплатные инструменты для автоматизации разработки): https://github.com/maslennikov-ig/claude-code-orchestrator-kit
Если твоя команда деплоит ночью — покажи им эту статью. Пусть посчитают.
И да, если где-то наврал с цифрами — готов к минусам. Критика по делу приветствуется.