Categories
Branching & Merging DevOps Git

Branching Modell für den Betrieb in großen Umgebungen

Ich habe in großen Rechenzentren mit verschiedenen Gir Branch Modellen Erfahrungen gesammelt. Kurz:
git Flow ist meist zu komplex.
gitlab flow berücksichtigt einige wichtige Aspekte des Betriebs nicht.
Trunk Based Development funktioniert meines Erachtens nicht bei Service Providern, die keine Anwendungen entwickeln sondern nur betreiben, dies aber in hohen Installationszahlen mit vielen unterschiedlichen Releases.

Der Betriebsaspekt wird meines Erachtens zu oft unterschätzt. DevOps ist eben genau Dev und Ops. Die meisten Branch Konzepte finden Lösungen für Entwickler. Die betrieblichen Aspekte eines langfristigen, stabilen Betriebes in großen Umgebungen werden oft nicht bedacht.

Ein Beispiel eines Service Providers

Der Service Provider administriert eine Anwendung, nennen wir Sie “Banking v1.0”, auf WebSphere Application Server oder Tomcat und betriebt diese für Kunden. Die Anwendung selbst wird von einem Softwarehersteller geliefert. Es erfolgt keine Entwicklung.

Das Betriebsteam hat einen Branch master, der die Banking App v1.0 auf der Middleware deployt. Wird eine neue Version v1.1 geliefert, und auf dem master Branch eingecheckt, kann diese auf die Test und Integraions Stages ausgerollt werden. Nach erfolgreichem Tests kann in Produktion deployt werden. Was aber macht man, wenn die Tests noch andauern, aber in der Produktion ein Patch 1.0.1 eingespielt werden muss.
Was macht man, wenn die App in verschiedenen Versionen v1.1 und v1.2 auf verschiedenen Systemen des Service Providers im Auftrag des Kunden läuft?

Ein Lösungsansatz

Mit tags sind solche Konstellationen schwierig zu lösen. Ein guter Ansatz ist hier dargestellt:
A Successful Git Branching Model With Enterprise Support

Er geht von zusätzlichen Branches für den Support und einem Branch “stable” (ich würde ihn eher “prod” nennen) aus. Ich persönlich würde die Nutzung solcher Branches so weit wie möglich einschränken und diese schnell wieder “abbauen”, aber in den oben beschriebenen Szenarien sind sie sicherlich sinnvoll.