Was ist Trunk-basiertes Development?

Trunk-basiertes Development (TBD) ist eine Git-Branching-Strategie, bei der Developer in einem einzelnen Branch, dem sogenannten „Trunk“, zusammenarbeiten und kleinere Änderungen häufiger vornehmen. In diesem Fall werden Branches selten erstellt, und falls doch, sind diese meist von kurzer Dauer, oft nur wenige Stunden.

Die grundlegende Idee dieser Strategie ist es, langanhaltende Branches zu vermeiden und somit der sogenannten Merge Hell zu entgehen. Stattdessen dreht sich der Prozess von trunk-basiertem Development darum, dass Features immer in einem releasebereiten Zustand sein sollten.

Wie wird das genau gemacht? Einfach gesagt, jeder Developer teilt seine Arbeit in kleinere Pakete auf und integriert diese in den Trunk oder die Mainline, sodass direkt in den Trunk ohne die Nutzung von Branches committet wird. Das bedeutet, es gibt nur einen Branch, in den Developer direkt committen, bekannt als Trunk.

Trunk-basiertes Development und CI/CD

Trunk-basiertes Development ist notwendig für und ein Schlüsselfaktor von Continuous Integration (CI) und Continuous Delivery (CD). Da Developer mehrfach am Tag Änderungen am Trunk vornehmen und Branches so häufig wie möglich gemerged werden, folgen sie der Praxis der kontinuierlichen Integration. Dies beschleunigt den Prozess der Veröffentlichung neuer Features und macht Continuous Delivery möglich.

Trunk-basiertes Development schafft also die notwendigen Voraussetzungen für Continuous Integration, indem mehrmals täglich Commits erfolgen. Die beiden Konzepte sind so eng miteinander verbunden, dass manchmal eines anstelle des anderen verwendet wird, da sie beide derselben Idee folgen, kontinuierlich in den Trunk zu integrieren. Oder anders gesagt, man benötigt trunk-basiertes Development, um Continuous Integration umzusetzen.

Wann sollte man trunk-basiertes Development implementieren?

Trunk-basiertes Development funktioniert am besten mit einem Team erfahrener Developer, da diese Arbeitsweise ihnen die Autonomie gibt, die sie benötigen, um ihre Aufgaben zu erledigen.

Es ist weniger empfehlenswert für Teams mit vielen Junior Developern, deren Arbeit eng überwacht werden muss. Auch bei Open-Source-Projekten, bei denen strengere Kontrollen über Änderungen erforderlich sind, ist es weniger ratsam, da bei solchen Projekten jeder beitragen kann.

Der Reifegrad des Produkts ist ein weiterer Faktor, der bei der Entscheidung für trunk-basiertes Development berücksichtigt werden sollte. Wenn das Produkt noch in den Anfängen steht, ist die Priorität oft, es schnell zum Laufen zu bringen. Bei einem ausgereifteren Produkt möchte man Änderungen möglicherweise genauer überwachen, um größere finanzielle Verluste zu vermeiden. In diesem Fall könnte Feature Branching in Betracht gezogen werden.

Trunk-basiertes Development wird oft mit Feature Flags kombiniert, sodass neue Features sofort bereitgestellt und bei Bedarf leicht zurückgenommen werden können.

Vorteile von trunk-basiertem Development

Flucht vor Merge Hell

Im Gegensatz zu Feature Branching sind Branches bei trunk-basiertem Development kurzlebig und dauern meist nur wenige Stunden. Dies eliminiert die riskante Aufgabe des Mergings langanhaltender Branches und führt zu weniger Konflikten, also weniger „Merge Hell“.

Weniger Merge-Konflikte

Durch die Umsetzung von Continuous Integration pushen Developer ihre Änderungen mindestens einmal täglich in den gemeinsamen Branch, wodurch die Wahrscheinlichkeit von Merge-Konflikten erheblich reduziert wird.

Schnelleres Feedback

Durch das kontinuierliche Integrieren von Änderungen in den Trunk können kontinuierliche Verbesserungen an Features vorgenommen werden, da Developer ihre Änderungen mit denen ihrer Kollegen validieren können.

Schnellere Releases

Schnelleres Feedback führt natürlich zu schnelleren Releases. Regelmäßige Commits in den Trunk führen zu effizienterem Release-Management und häufigeren Deployments. Ständige kleine Änderungen führen zu stabileren Releases, die jederzeit für den Einsatz bereit sind.

Mit Vorsicht genießen

Trunk-basiertes Development ist nicht ohne Schwächen. Wenn Developer ständig Änderungen am Trunk vornehmen, kann es zu ständiger Unruhe kommen. Es ist wichtig, dass Developer regelmäßig vom Trunk herunterladen, um nicht in Konflikt mit neuen Commits zu geraten.

Es gibt auch Fälle, in denen trunk-basiertes Development nicht ratsam ist. In solchen Fällen sollten Developer andere Entwicklungsmethoden wie Feature Branching in Betracht ziehen.

Mehr erfahren: Wie sich trunk-basiertes Development im Vergleich zu anderen Gi-Branching-Strategien schlägt.

Fazit

Die Vorteile dieser Technik überwiegen bei weitem ihre Schwächen. Die Wahl der richtigen Methode zur Verwaltung des Quellcodes hängt davon ab, was für dein Team am besten ist. Wenn du jedoch hochqualitative Releases für deine Kunden liefern und eine effiziente Zusammenarbeit zwischen Developern fördern möchtest, ist die Implementierung dieser Praxis innerhalb deines Unternehmens eine einfache Strategie.

Schneller wachsen
mit ABTasty

Erhalten Sie eine individuelle Komplettlösung für die Plattform

Demo anfordern