{"id":694,"date":"2020-07-15T17:15:27","date_gmt":"2020-07-15T17:15:27","guid":{"rendered":"http:\/\/hslomka.de\/techno\/?p=694"},"modified":"2021-05-21T11:28:35","modified_gmt":"2021-05-21T11:28:35","slug":"branching-modell-fur-den-betrieb-in-grosen-umgebungen","status":"publish","type":"post","link":"https:\/\/techno.slomka.biz\/?p=694","title":{"rendered":"Branching Modell f\u00fcr den Betrieb in gro\u00dfen Umgebungen"},"content":{"rendered":"<p>Ich habe in gro\u00dfen Rechenzentren mit verschiedenen Git Branch Modellen Erfahrungen gesammelt. Kurz:<br \/>\n&#8211; <a href=\"https:\/\/datasift.github.io\/gitflow\/IntroducingGitFlow.html\">git Flow<\/a> ist meist zu komplex.<br \/>\n&#8211; <a href=\"https:\/\/docs.gitlab.com\/ee\/topics\/gitlab_flow.html\">gitlab flow<\/a> ber\u00fccksichtigt einige wichtige Aspekte des Betriebs nicht.<br \/>\n&#8211; <a href=\"https:\/\/trunkbaseddevelopment.com\/#one-line-summary\">Trunk Based Development<\/a> funktioniert meines Erachtens nicht bei Service Providern, die keine Anwendungen entwickeln sondern nur betreiben, dies aber in hohen Installationszahlen mit vielen unterschiedlichen Releases.<\/p>\n<p>Der Betriebsaspekt wird meines Erachtens zu oft untersch\u00e4tzt. DevOps ist eben genau Dev und Ops. Die meisten Branch Konzepte finden L\u00f6sungen f\u00fcr Entwickler. Die betrieblichen Aspekte eines langfristigen, stabilen Betriebes in gro\u00dfen Umgebungen werden oft nicht bedacht.<\/p>\n<h2>Ein Beispiel eines Service Providers<\/h2>\n<p>Der Service Provider administriert eine Anwendung, nennen wir Sie &#8220;Banking v1.0&#8221;, auf WebSphere Application Server oder Tomcat und betriebt diese f\u00fcr Kunden. Die Anwendung selbst wird von einem Softwarehersteller geliefert. Es erfolgt keine Entwicklung.<\/p>\n<p>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.<br \/>\nWas macht man, wenn die App in verschiedenen Versionen v1.1 und v1.2 auf verschiedenen Systemen des Service Providers im Auftrag des Kunden l\u00e4uft?<\/p>\n<h2>Ein L\u00f6sungsansatz<\/h2>\n<p>Mit tags sind solche Konstellationen schwierig zu l\u00f6sen. Ein guter Ansatz ist hier dargestellt:<br \/>\n<a href=\"https:\/\/tleyden.github.io\/blog\/2014\/04\/09\/a-successful-git-branching-model-with-enterprise-support\/\">A Successful Git Branching Model With Enterprise Support<\/a><\/p>\n<p>Er geht von zus\u00e4tzlichen Branches f\u00fcr den Support und einem Branch &#8220;stable&#8221; (ich w\u00fcrde ihn eher &#8220;prod&#8221; nennen) aus. Ich pers\u00f6nlich w\u00fcrde die Nutzung solcher Branches so weit wie m\u00f6glich einschr\u00e4nken und diese schnell wieder &#8220;abbauen&#8221;, aber in den oben beschriebenen Szenarien sind sie sicherlich sinnvoll.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe in gro\u00dfen Rechenzentren mit verschiedenen Git Branch Modellen Erfahrungen gesammelt. Kurz: &#8211; git Flow ist meist zu komplex. &#8211; gitlab flow ber\u00fccksichtigt einige wichtige Aspekte des Betriebs nicht. &#8211; 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\u00e4tzt. DevOps ist eben genau Dev und Ops. Die meisten Branch Konzepte finden L\u00f6sungen f\u00fcr Entwickler. Die betrieblichen Aspekte eines langfristigen, stabilen Betriebes in gro\u00dfen Umgebungen werden oft nicht bedacht. Ein Beispiel eines Service Providers Der Service Provider administriert eine Anwendung, nennen wir Sie &#8220;Banking v1.0&#8221;, auf WebSphere Application Server oder Tomcat und betriebt diese f\u00fcr 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\u00e4uft? Ein L\u00f6sungsansatz Mit tags sind solche Konstellationen schwierig zu l\u00f6sen. Ein guter Ansatz ist hier dargestellt: A Successful Git Branching Model With Enterprise Support Er geht von zus\u00e4tzlichen Branches f\u00fcr den Support und einem Branch &#8220;stable&#8221; (ich w\u00fcrde ihn eher &#8220;prod&#8221; nennen) aus. Ich pers\u00f6nlich w\u00fcrde die Nutzung solcher Branches so weit wie m\u00f6glich einschr\u00e4nken und diese schnell wieder &#8220;abbauen&#8221;, aber in den oben beschriebenen Szenarien sind sie sicherlich sinnvoll.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,3,5],"tags":[47,62,74],"class_list":["post-694","post","type-post","status-publish","format-standard","hentry","category-branching-merging","category-devops","category-git","tag-branch-model","tag-git","tag-merging"],"_links":{"self":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=694"}],"version-history":[{"count":1,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/694\/revisions"}],"predecessor-version":[{"id":812,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=\/wp\/v2\/posts\/694\/revisions\/812"}],"wp:attachment":[{"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techno.slomka.biz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}