Trunk-Based Development: snel en efficiënt samenwerken aan code


calendar icon 4 minuten

Trunk-Based Development (TBD) is een populaire branching strategie in softwareontwikkeling. Ontwikkelaars kunnen hun code regelmatig integreren in een gedeelde codebase, de trunk genaamd. Dit is een tegenhanger van feature branches, waarbij elke ontwikkelaar aan zijn eigen versie van de code werkt en deze later samenvoegt met de main branch. TBD heeft als doel om de samenwerking tussen ontwikkelaars te verbeteren en de time-to-market van nieuwe features te verkorten.

Hoe werkt TBD?
Bij TBD werken alle ontwikkelaars aan dezelfde codebase, ook wel de trunk genoemd. Iedereen werkt daarbij op dezelfde branch en commit regelmatig hun code. Dit betekent dat alle wijzigingen die in de codebase worden aangebracht, direct zichtbaar zijn voor alle ontwikkelaars. Hierdoor is het mogelijk om snel feedback te krijgen op de code en problemen op te lossen.

Let op! Voorkom dat wijzigingen in de codebase elkaar gaan beïnvloeden. Als ontwikkelaars kun je gebruik maken van code reviews en automatische tests om dit te voorkomen. Hierdoor wordt de kwaliteit van de code bewaakt en kunnen problemen snel worden opgespoord en opgelost. Hieronder vind je een voorbeeld van een TBD-pipeline voor Gitlab

stages:
  - build
  - dev-deploy
  - test
  - test-deploy
  - acceptance-deploy
  - production-deploy
build:
  stage: build
  script:
    - echo "Building the application"
dev-deploy:
  stage: dev-deploy
  script:
    - echo "Deploying to dev environment"
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"
test:
  stage: test
  script:
    - echo "Running unit tests"
test-deploy:
  stage: test-deploy
  script:
    - echo "Deploying to test environment"
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"

acceptance-deploy:
  stage: acceptance-deploy
  script:
    - echo "Deploying to acceptance environment"
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"
production-deploy:
  stage: production-deploy
  script:
    - echo "Deploying to production environment"
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"

In deze pipeline wordt de dev-deploy stage handmatig getriggered door een merge request. Ook de acceptance-deploy en production-deploy stages worden getriggerd wanneer er gemerged wordt naar de main branch, maar niet bij een merge request. Hierdoor wordt de dev omgeving gebruikt voor de ontwikkeling en het testen van features in een afzonderlijke omgeving. Dee acceptance en production omgevingen worden alleen geüpdatet met goedgekeurde wijzigingen. Dit ondersteunt de DTAP-workflow.

Voordelen van Trunk-Based Development
Het werken met TBD heeft verschillende voordelen t.o.v. het werken met feature branches. Je kunt sneller en efficiënter werken, omdat je met ontwikkelaars regelmatig code kunt commiten en ook feedback kunt krijgen. Dit zorgt voor een hogere codekwaliteit en minder fouten in de code.

Bovendien wordt er door het gebruik van TBD minder tijd besteed aan het samenvoegen van verschillende feature branches. Doordat de code regelmatig wordt geïntegreerd in de trunk ontstaan er minder conflicts.

Tot slot zorgt het werken met TBD ervoor dat ontwikkelaars beter samenwerken. Doordat iedereen werkt aan dezelfde codebase, is het makkelijker om elkaar te helpen en feedback te geven. Hierdoor wordt er als team meer geleerd en wordt de kennis over de codebase beter verspreid.

Nadelen van Trunk-Based Development
TBD is niet voor alle projecten geschikt. Het werken met TBD vereist een goed onderhouden codebase en voldoende tests om de kwaliteit van de code te bewaken. Daarnaast kan het lastig zijn om wijzigingen in de code terug te draaien als deze voor problemen zorgen.

Een ander nadeel van TBD is dat het minder geschikt is voor projecten waarbij de code vaak moet worden teruggedraaid naar een vorige versie. Bij TBD is het namelijk lastiger om terug te gaan naar een vorige versie van de codebase, omdat alle wijzigingen direct in de trunk worden doorgevoerd.

Wat adviseren wij jou?
Trunk-Based Development is een efficiënte en effectieve manier om softwareontwikkeling te doen. Vooral in teams met meerdere ontwikkelaars die aan dezelfde codebase werken. Het biedt voordelen zoals snellere feedback loops, minder merge conflicten en een betere samenwerking tussen teamleden.

TDB is niet voor alle projecten geschikt. Sommige projecten profiteren meer van andere ontwikkelingsmethoden zoals Gitflow of Feature Branching. Het is aan het team om te beslissen welke methodologie het meest geschikt is voor hun specifieke project. Trunk-Based Development kan een waardevolle toevoeging zijn aan de toolset van een ontwikkelingsteam. Het helpen bij het opleveren van hoogwaardige software op een efficiënte manier.

Keertje over sparren? Neem contact met ons op!

Deel:

Recente blogs