STRG logo as displayed in the footer of the website.

MAGAZINE

Mit GitHub zum Ziel

Die STRG ist ständig bestrebt, die Produktivität und Qualität ihrer Tätigkeiten zu verbessern, indem sie die besten derzeit verfügbaren Software-Tools und -Plattformen einsetzt. Nirgendwo ist dies wichtiger als bei unserem Entwicklerteam. Vor kurzem haben wir unser System zur Steuerung der Softwareentwicklung auf GitHub logoGitHub umgestellt. Der Prozess erforderte eine Menge Planung und Vorbereitung, aber die Ergebnisse zahlen sich bereits aus!

Während die meisten österreichischen Unternehmen im August die Sommerpause einlegen, wird bei STRG unermüdlich gearbeitet. Zusätzlich zu unserem unermüdlichen Arbeitsablauf haben die STRG-Mitarbeiter dieses Jahr ein wichtiges internes Infrastrukturprojekt durchgeführt: die Neuorganisation der gesamten STRG-Entwicklerdatenbibliothek und ihre Migration auf die GitHub-Hosting-Plattform. „Git“ ist ein „verteiltes Versionskontrollsystem“. Es handelt sich um eine kostenlose Open-Source-Software, die von Entwicklern zur Koordinierung der gemeinsamen Programmierarbeit verwendet wird. Die Software kann in einem eigenständigen Netzwerk oder in einem Cloud-basierten Hosting-Dienst implementiert werden.

Das Grundkonzept von Git besteht darin, dass alle verschiedenen Versionen des Codes gespeichert, kontrolliert und für alle zugänglich gemacht werden. Wenn also etwas geändert wird, kann es leicht überprüft und zusammengeführt werden, und wenn in der neuesten Version ein SNAFU auftritt, kann eine zuvor stabile Version leicht wiederhergestellt werden. Das Verzweigungsmodell ermöglicht es den Programmierern, eine Funktion des Codes zu erstellen oder zu ändern, ohne die Hauptcode-Struktur zu verändern.

Die heutigen Softwareentwicklungssysteme werden immer komplexer und stellen eine hohe Einstiegshürde für neue Entwickler und Mitwirkende dar. Selbst für ein erfahrenes Softwareentwicklungsunternehmen wie STRG ist es fast unmöglich, dass eine einzelne Person den kompletten Überblick hat. STRG musste diese Komplexität reduzieren, damit jeder Programmierer jederzeit auf eine Ressource zugreifen kann, wenn er sie braucht. Die Prozesse müssen vollständig automatisiert und rationalisiert werden, damit sich die Entwickler auf ihre gemeinsame Arbeit konzentrieren und die Qualität sicherstellen können.

Bevor die Migration zu GitHub durchgeführt werden konnte, war es jedoch notwendig, ein wenig Hausarbeit zu leisten. Jasmin Müller, die sich bei STRG für kontinuierliche Verbesserungen einsetzt, nahm die Herausforderung an: „Es handelt sich um einen Standardisierungsprozess, bei dem die Namenskonventionen für jedes Code-Repository festgelegt werden. Im Laufe der Jahre entwickelten sich diese Konventionen und führten zu unterschiedlich benannten Ordnern, die ähnliche Daten enthielten. Dies war also eine gute Gelegenheit, unsere bestehenden Datenstrukturen zu analysieren. Wir haben eine riesige Excel-Tabelle erstellt, die etwa 800 Repositories enthält.

Jasmin bereitete die Migration vor, recherchierte die Voraussetzungen und Abhängigkeiten, definierte grob die To-Dos und sorgte dafür, dass alle Akteure mit im Boot waren. Nach einigen Planungstreffen wurde die Feinabstimmung vorgenommen und ein detaillierter Migrationsplan erstellt. „Der Migrationsplan ermöglichte es uns, unsere Arbeit in JIRA [Projektmanagementsoftware] zu planen und effizient zu gestalten, so dass es keine Unterbrechungen für unsere Mitarbeiter oder die Systeme unserer Kunden gab. Das Entwicklerteam brauchte nur ein paar Befehle, um auf eine neue Git-Quelle umzustellen. Das ging reibungslos und einfach.“

Allerdings nicht ganz ohne kleinere Probleme. Von Anfang an war nicht klar, ob alle unsere Pipelines funktionieren würden, wenn das Open-Source-Tool Jenkins CI (Continuous Integration) in GitHub integriert werden würde. Jenkins ist ein wichtiges Tool für die Automatisierung der Bereitstellung und der Pipelines. Nach der Übertragung von Änderungen in ein Repository testet Jenkins den Code, prüft, ob er richtig formatiert ist und ob er bereits auf einem Server bereitgestellt wurde. Schließlich wurde ein Weg gefunden, Jenkins so umzuwandeln, dass es in der GitHub-Umgebung funktioniert. Neben der Integration des Jenkins CI-Tools hat GitHub auch JIRA vollständig integriert und verweist transparent auf alle Jira-Tickets.

„Kurz gesagt, verbessert GitHub die gesamte Kommunikation und Automatisierung, die eine agile, kollaborative Programmierung möglich macht, und stellt eine permanente Dokumentation sicher.”

STRG nutzte die Git-Plattform von Bitbucket bereits seit mehreren Jahren, doch erwies es sich als schwierig, die Standardisierung aufrechtzuerhalten, da die Konfigurationsparameter in Schnittstellen angewendet wurden. Dies machte sie anfällig für Fehler: Im Laufe der Zeit führten Konfigurationsabweichungen zu einem erhöhten Aufwand beim Onboarding von Mitwirkenden und oft zu Berechtigungsproblemen und Inkonsistenzen. Standardisierung ist entscheidend, wenn ein Unternehmen wachsen will, und dies war einer der Hauptgründe, warum STRG sich für die Migration zu GitHub (einer Microsoft-Tochtergesellschaft) entschied. GitHub hostet nicht nur den Softwarecode, sondern ermöglicht uns auch eine stärkere Automatisierung des Software-Lebenszyklus, von der Qualitätssicherung über die Bündelung bis hin zu Versand und Bereitstellung.

„Bei einem so mächtigen Tool habe ich schon viele Verbesserungen im Kopf“, sagt Nils Müller, Teamlead und Softwarearchitekt bei STRG. „Wir führen die Workflows und Aktionen von GitHub in unserem Kubernetes-Cluster aus, das nach GitOps-Prinzipien verwaltet wird, sowie in der zugrunde liegenden Google Cloud-Infrastruktur. Dies ermöglicht es uns, Aufgaben im Entwicklungslebenszyklus auf eine deklarative und leicht konfigurierbare Weise zu automatisieren.“ Nachdem wir die Repositories in der Excel-Tabelle strukturiert hatten, generierten wir Infrastructure-as-Code-Definitionen auf der Grundlage dieser Datenquelle. „Anstatt uns mühsam durch die GitHub-Oberfläche zu klicken, um Repositories zu erstellen oder umzubenennen, konnten wir endlich einfach eine Konfigurationsdatei schreiben und sie an Git übergeben“, sagt Jasmin Müller. „Jetzt kann jeder im Unternehmen einfach einen Pull-Request auf GitHub erstellen, um Repositories hinzuzufügen oder zu ändern. Terraform hat uns geholfen, unsere Struktur mit Vorlagen und Standardparametern zu standardisieren.“

Pull-Requests erfordern eine Überprüfung, bevor sie in die Hauptstrecke zusammengeführt werden können. Die Zusammenführung löst eine Aktion (CI) aus, die Terraform die definierten Ressourcen, den gewünschten Zustand, mit dem aktuellen Zustand abgleichen lässt.

Als STRG sich nach Git-Hosting-Diensten umsah, untersuchte es auch GitLab. Es bietet zwar eine Vielzahl von Funktionen, aber viele waren für STRG nicht so nützlich. Das Alles-oder-Nichts-Abonnementmodell von GitLab war zu teuer. GitHub kostet mehr als Bitbucket, bietet aber eine größere Bandbreite an Funktionen, die für STRG nützlich sind und die es uns ermöglichen, die Automatisierung und Standardisierung auf ein neues Niveau zu heben. Zusammen mit der höheren Produktivität durch die Automatisierung wird sich dies langfristig als eine kluge Investition erweisen.

Die Sicherheit und Stabilität von GitHub sind extrem zuverlässig und die Prozesse werden gut gepflegt, was es zu einem Favoriten in der Open-Source-Community der Entwickler macht. STRG hat damit begonnen, DevOps- und GitOps-Prinzipien im gesamten Unternehmen zu implementieren. Diese Migration war ein großer Schritt, um unseren Entwicklern mehr Verantwortung für den von ihnen erstellten und ausgelieferten Code zu übertragen – ein Schritt in Richtung “shift left”.

by Jasmin Müller and Nils Müller

You may also like

Subscribe To Our Newsletter

Get notified about new articles