12.02 · ред.
Как я улучшил процесс релиз-инжиниринга и снизил риски 🚀 Вы когда-нибудь задумывались, какой маршрут проходит код от строки в редакторе до стабильного запуска в продакшене? Давайте об этом поговорим!
Релиз-инжиниринг – это сложный процесс подготовки и выпуска обновлений программного обеспечения в продакшн, благодаря которому конечный продукт работает стабильно и без сбоев.
Кто этим занимается? Релиз-инженер – специалист, который отвечает за организацию и контроль процесса выпуска обновлений, чтобы каждое изменение доходило до продакшена без проблем.
Как это работало раньше У нас был большой поток изменений и множество акторов, поэтому изменения группировались в пачки и выпускались по фиксированному календарю дежурств. Каждый день дежурил новый релиз-инженер из разных команд, за исключением пятницы.
«Никаких деплоев в пятницу!»
👀 Процесс выглядел так: - Релиз-инженер собирал изменения и формировал релиз. - Проводились различные проверки, после чего запускался деплой. - В течение релиза инженер следил за метриками и, при возникновении ошибок, производил откат изменений. - Если всё проходило успешно – поздравляем, изменения успешно выкачены на продакшн!
🛑 Проблема, с которой столкнулись Недавно у нас резко сократился штат сотрудников – да, такое бывает. Поскольку руководство гильдией релиз-инженеров оказалось на мне, пришлось оперативно оптимизировать процесс под новые реалии.
🔑 Ключевые моменты, указывающие на необходимость смены модели: - Резкое сокращение количества акторов и изменений, текущая модель с ежедневными дежурствами становится неэффективной. - DORA-метрики показали, что частота релизов и их длительность позволяют нам уменьшить размер пачек.
В такой ситуации текущая модель перестаёт быть рациональной. Это особенно заметно, когда релиз-инженер, который раньше дежурил раз в месяц, теперь вынужден дежурить каждую неделю.
Последствия старой модели: 🔥 Рост нагрузки – увеличение частоты дежурств перегружает инженеров. ⬇️ Сокращение командного ресурса – меньше времени остается на разработку. ⚠️ Снижение количества изменений – релизные пачки становятся менее эффективными. 👀 Человеческий фактор – усталость и стресс повышают вероятность ошибок.
Что решили изменить: новая модель Я понял, что нужно переходить на модель деплоя по требованию. Теперь каждая команда отвечает за деплой своих изменений самостоятельно. Если у команды нет дежурного, способного выполнить релиз, она отправляет добровольца на обучение джедайским техникам релиза.
Преимущества новой модели: 📉 Снижение уровня риска: Локальный контроль позволяет команде лучше понимать свой код и оперативно реагировать на проблемы. 💪 Рост ответственности: Принцип "You build it, you run it" становится реальностью – каждый владеет своим кодом. 🤝 Увеличение вовлечённости: Команды мотивированы, поскольку от их работы напрямую зависит качество выпускаемой фичи. ⏰ Сокращение времени на координацию: Локальные решения позволяют быстрее принимать оперативные решения без долгих согласований.
Вывод Изменив процесс релиз-инжиниринга, мы смогли снизить риски, повысить стабильность продакшена и увеличить вовлечённость команд. Теперь каждая команда отвечает только за свои изменения, а зона принятия решений стала компактнее.
А как бы вы оптимизировали этот процесс в текущей ситуации? Делитесь идеями в комментариях!👇
· 14.02
Интересно, что по сути нормальный процесс, когда команда отвечает за свой продукт на всех этапах (включая релиз), становится чем-то инновационным… Это же одна из базовых практик, которую зачем-то вынесли в отдельную службу, что только усложнило процесс.
ответить
Иван, хорошее замечание. Вы абсолютно правы. Тут нет инноваций, это просто история в рамках компании с которой мы столкнулись. Все становится сложнее и более запутанно, когда приходится работать с монолитом
ответить
· 13.02
У нас тоже по требованию, видим плюсов больше, но риски все же выше, почему снижение?
ответить
Почему, на ваш взгляд, риски повышаются? Представим ситуацию: один инженер релизит код от нескольких команд. Он проверил изменения, возможно, уточнил у коллег, нет ли в них критичных моментов. Но этого все-равно может быть недостаточно. Если во время выкатки что-то падает, начинается поиск причины и ответственного и тд, это может занять время. Я описываю ситуацию, когда проблема была в коде другой команды. Мы как раз стараемся минимизировать такие случаи, это не значит, что такого может не произойти, но вероятность сильно снижается. Когда пройдет больше времени, можно будет провести анализ по метркам)
ответить
· 13.02
Главное не забывать весь код описывать, а то человек ушел и кусок «ю кэн билт, ю ран ит» уйдет вместе с ним.
ответить
· 13.02
Централизованный релиз-инжиниринг хорош на старте, но при снижении количества акторов он реально становится узким горлышком. Переход к модели «You build it, you run it» — это не только снижение нагрузки, но и повышение качества, потому что никто не разберётся в коде лучше, чем его автор.
ответить
еще контент в этом сообществе
еще контент в этом соообществе
12.02 · ред.
войдите, чтобы увидеть
и подписаться на интересных профи