Почему Trunk-Based Development — лучшая модель ветвления

Наш эксперт, Андрей Александров, рассказал про подход и практики Trunk-Based Development на митапе сообщества DevOps Moscow. Митап проходил в конце 2018 года в офисе Леруа Мерлен и собрал более 200 представителей сообщества.

В докладе рассмотрены:
  1. Определение подхода и модели ветвления, история появления и упоминание в индустрии. Trunk-Based Development рассматривался как практический ответ на потребность быстро тестировать бизнес-гипотезы и сокращать цикл от идеи до пользователя. В докладе были приведены ссылки на индустриальные подтверждения эффективности подхода, включая модель и книгу Accelerate, исследование и отчет Accelerate State of DevOps 2018, а также опыт Google из доклада Why Google Stores Billions of Lines of Code in a Single Repository; где описывается работа тысяч инженеров в одном репозитории;
  2. Принципы Trunk-Based Development: короткоживущие feature ветки и готовая к релизу trunk ветка. Подчеркивалось, что любые ветки, кроме trunk, должны существовать не более 1-2 дней, а сама trunk ветка должна находиться в состоянии постоянной готовности к деплою независимо от того, какие изменения в нее попадают. Такой подход позволяет поддерживать непрерывную интеграцию и минимизировать стоимость слияния изменений;
  3. Практика Branch by Abstraction, которая позволяет выполнять постепенные изменения кода и частые интеграции за счет создания веток не под фичи, а под изменение одной конкретной абстракции. В докладе подробно разбирался подход декомпозиции крупных изменений на серию небольших pull request, каждый из которых затрагивает одну абстракцию, вводит новый интерфейс или реализацию и может быть быстро интегрирован в trunk без риска сломать существующее поведение;
  4. Практика Continuous Code Review, которая приводит к ускорению поставки, шарингу знаний и снижению технического долга. За счет небольшого размера изменений pull request становятся простыми для проверки и могут быть отревьюены за минуты. Такой режим постоянного ревью позволяет всем участникам команды лучше понимать кодовую базу, быстрее распространять знания и предотвращать накопление проблем в архитектуре и качестве кода;
  5. Сложности, требования и ограничения применения подхода Trunk-Based Development, которые включают необходимость высокого покрытия автоматизированными тестами, развитой инфраструктуры и зрелых инженерных практик. В докладе подчеркивалось, что без надежных тестов, навыков декомпозиции изменений и умения работать с абстракциями подход становится трудно применимым. Trunk-Based Development требует осознанных инвестиций в качество кода, автоматизацию и инженерную культуру, но в обмен позволяет достигать минимальных итераций и высокой скорости изменений.

Подробнее про подход и практики Trunk-Based Development в статье, презентации и записи выступления:
Если вам интересно развитие подхода и практик Trunk-Based Development в вашей компании или команде, обращайтесь к нам за помощью. Мы помогаем развивать инженерную культуру и современные практики в командах разработки, тестирования и эксплуатации, проводим анализ и оценку практик, подготавливаем рекомендации и помогаем их реализовать на практике.