Модель ветвления Trunk Based Development (TBD)

Trunk Based Development, TBD, транковая или магистральная разработка — это модель ветвления системы управления версиями, при которой все разработчики работают в одной ветке. В TBD основная ветка называется «trunk», и все разработчики вносят свои изменения непосредственно в неё. Дополнительные ветки в TBD тоже создаются, но они существуют очень недолго, относительно других моделей ветвления (GitFlow, например), максимум 2 дня. То есть работа над большими задачами декомпозируется и выполняется очень короткими итерациями.

Этот подход отличается от традиционных моделей ветвления, где каждый разработчик долго работает над своей собственной веткой и объединяет изменения в основную ветку только после полного завершения своей работы. В TBD в основную ветку добавляются в том числе и не до конца реализованные «фичи», но при этом их наличие не мешает развёртыванию — код покрывается тестами, ревьюится, используются CI/CD, а недописанные фичи «закрыты» флагами функций (Feature Flags).

Это означает, что каждый разработчик работает над одной и той же кодовой базой, и любые изменения, внесенные одним разработчиком, станут очень быстро видны всем остальным разработчикам, работающим над тем же проектом. Этот подход делает упор на сотрудничество и непрерывную интеграцию, поскольку разработчики могут оперативно работать над разрешением любых возникающих конфликтов или проблем.

Преимущества TBD

Одним из основных преимуществ разработки на основе транков является ее скорость и простота. Поскольку все разработчики работают в одной ветке, нет необходимости управлять несколькими ветками с большими объёмами изменений и иметь дело со сложными конфликтами слияния.

Trunk Based Development также способствует сотрудничеству и общению между разработчиками. Разработчики могут легко видеть изменения друг друга, оставлять отзывы или вносить предложения. Такой подход может привести к ускорению разработки и повышению качества кода, поскольку улучшается общее владение кодом, а проблемы можно быстро выявлять и решать.

Еще одним преимуществом транковой разработки является ее способность поддерживать непрерывную интеграцию и непрерывное развертывание. Поскольку все изменения вносятся непосредственно в транк‑ветку, процесс сборки и развертывания легко автоматизировать. Это может помочь командам быстрее предоставлять новые функции и обновления, а также снижает риск возникновения ошибок и неполадок.

Недостатки TBD

Разработка на основе транков имеет множество преимуществ, но она не лишена недостатков.

Одна из потенциальных проблем заключается в том, что, когда все разработчики работают в одной и той же ветке, существует риск конфликтов или проблем, возникающих из‑за того, что несколько человек одновременно вносят изменения в один и тот же участок кода. Этот риск можно снизить, внедрив качественные методы общения и совместной работы. И, разумеется, что использование инструментов системы контроля версий позволяет разрешать такие конфликты. При этом стоит отметить, что в других моделях ветвления эта проблема тоже есть и объём усилий для разрешения конфликтов там обычно заметно больше, так как слияние изменений происходит реже и их накапливается сильно больше.

Еще одним потенциальным недостатком транковой разработки является то, что откатить изменения может быть сложнее, если что‑то пойдет не так. Поскольку все изменения вносятся непосредственно в транк, может быть сложно выделить конкретное изменение и отменить его при необходимости. Этот риск можно снизить путем внедрения хороших методов тестирования и развертывания, а также ведения подробной истории всех изменений, внесенных в базу кода. Ещё одним полезным способом является использование флагов функций (Feature Flags), благодаря которым можно включать или отключать определенные функции приложения в рантайме без необходимости переразвертывания.

Декомпозиция больших задач на небольшие итерации тоже не самая простая задача в рамках TBD. Она требует более детальной проработки используемых в проекте абстракций, хорошего понимания ООП и активного использования интерфейсного подхода в проектировании взаимодействия между компонентами системы.

Как внедрить TBD?

Первым шагом для реализации магистральной разработки является создание четкого процесса управления изменениями в кодовой базе. Это включает в себя использование систем контроля версий, таких как Git или SVN, а также внедрение хороших практик тестирования и развертывания, чтобы гарантировать, что изменения проходят надлежащую проверку перед их объединением в транк.

Также важно установить правила общения и сотрудничества между разработчиками. Это может включать организацию регулярных собраний команды, использование инструментов для совместной работы и обеспечение доступа всех разработчиков к одним и тем же инструментам и ресурсам.

Наконец, важно обеспечить, чтобы все разработчики прошли надлежащую подготовку в области разработки на основе транков и поняли преимущества и недостатки этого подхода. Это может включать в себя проведение учебных занятий, предложение наставничества и поддержки, а также поощрение постоянного обучения и развития.

Trunk Based Development — это мощная модель ветвления, которая может помочь командам более эффективно сотрудничать и быстрее создавать высококачественный код. Несмотря на то, что здесь есть свои проблемы, при наличии правильных инструментов и процессов trunk‑разработка может стать ценным инструментом для любой команды разработчиков.

Вот несколько примеров компаний, которые успешно используют транковую разработку:

1. Google: Google использует Trunk Based Development для многих своих внутренних проектов, включая поисковую систему и операционную систему Android. Такой подход помог Google быстрее предоставлять новые функции и обновления, а также улучшить качество кода и снизить риск ошибок.

2. Amazon. Amazon — еще одна компания, которая успешно внедрила разработку на основе транков. Компания использует этот подход для многих своих внутренних проектов, включая платформу электронной коммерции и услуги облачных вычислений.

3. Netflix. Netflix известен своим инновационным использованием технологий, и Trunk Based Development не является исключением. Компания использует этот подход для многих своих внутренних проектов, включая свою потоковую платформу и систему рекомендаций контента.

Это всего лишь несколько примеров компаний, которые успешно внедрили транковую разработку. Многие другие компании, как большие, так и малые, приняли этот подход и увидели значительные преимущества с точки зрения совместной работы, качества кода и скорости доставки изменений.

методологии разработки
Статья опубликована в 2023 году

Тематические статьи

Флаги функций (Feature Flags)

Флаги функций позволяют отделить развертывание функций от развертывания кода, обеспечивают возможности для A/B-тестирования и предоставляют механизм быстрого отключения проблемных функций

методологии разработки
Статья опубликована в 2023 году

TDD — разработка через тестирование

TDD, test-driven development или разработка через тестирование — это методология разработки ПО, повышающая надёжность и сопровождаемость проектов.

TDD основывается на повторении коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется программный код, который реализует желаемое поведение системы и позволяет пройти написанный тест, а после этого проводится рефакторинг написанного кода с постоянной проверкой прохождения тестов.

автоматизированное тестирование
тестирование
TDD
методологии разработки
Статья опубликована в 2014 и обновлена в 2023 году

GIT — система управления версиями

GIT — распределённая система управления версиями, созданная Линусом Торвальдсом для управления разработкой ядра Linux и в настоящее время получившая очень широкое распространение в среде разработчиков программного обеспечения.

веб-разработка
бэкенд
фронтенд
системы контроля версий
Статья опубликована в 2014 году

Модель ветвления GitFlow

GitFlow — модель ветвления системы управления версиями, разработанная для структурированного управления изменениями в коде и повышения качества совместной работы разработчиков.

методологии разработки
Статья опубликована в 2023 году

Цифровая трансформация бизнеса

Цифровая трансформация — это процесс интеграции цифровых технологий во все области бизнеса, фундаментально меняющий способы их работы и приносящие пользу клиентам.

цифровизация
Статья опубликована в 2023 году

Применение искусственного интеллекта и машинного обучения в бизнесе

Искусственный интеллект (Artificial Intelligence, AI) и машинное обучение (Machine Learning, ML) за последние годы привнесли много нового в бизнес, в электронную коммерцию и в веб‑разработку. Бизнес использует эти технологии для улучшения качества обслуживания клиентов, оптимизации бизнес‑процессов и получения конкурентного преимущества на рынке.

машинное обучение
бэкенд
веб-разработка
цифровизация
Статья опубликована в 2023 году

Наши услуги