Vor nunmehr über einem Jahrzehnt hat „DevOps“ das Licht der Welt erblickt und sich etabliert. Doch wie wird sich DevOps in den 20ern weiterentwickeln?

In loser Folge geben wir an dieser Stelle einen Einblick in DevOps-Trends, denen wir zunehmend häufig begegnen.

Microservices-Architekturen und die Integration von Kubernetes in DevOps“ waren Teil des letzten Beitrages. Lernen Sie heute die Bedeutung von GitOps und Infrastructure as Code kennen.

GitOps

GitOps ist ein Weg, “Continuous Deployment” (Fortlaufende Bereitstellung) umzusetzen.

Entwickler können mit den ihnen bekannten Entwickler-Tools Aufgaben des Betriebs durchführen. Ein Beispiel ist das Bereitstellen von Softwareupdates in Form eines Microservices auf Kubernetes. Prozesse werden dadurch automatisiert, beschleunigt und somit wesentlich effizienter.

In der Praxis wird dafür häufig die Open-Source Versionsverwaltung „Git“ eingesetzt. Daher auch der Ursprung der Wortschöpfung „GitOps“.

Die unter Versionsverwaltung stehenden Dokumente beschreiben den Zustand der Anwendungen und der zugrundeliegenden Infrastruktur (u.a. Betriebssysteme, Datenbanken, Netzwerke). Änderungen in Form von Git „pushes“ und „merges“ starten Aktionen, die sogenannten CI/CD-Pipelines, und aktualisieren den Produktionszustand von Anwendungen oder Infrastruktur.

Durch den Einsatz von Diff-Tools lassen sich Abweichungen zwischen tatsächlichem Produktionszustand und dem gewünschten Zustand erkennen. Im Fehlerfall ist ein Rollback zu einem früheren Zustand möglich. Git Repositories sind dabei immer die „source of truth“ für den Zustand der Anwendungen und der Infrastruktur.

Infrastructure as Code / Everything as Code

Zunehmende Virtualisierung und die Verlagerung von Anwendungen in die Clouds der Tech-Giganten wie Amazon und Microsoft machen es möglich. Komplexe IT-Infrastrukturen, bestehend aus Servern, Betriebssystemen, Anwendungen, Netzwerk, Datenbanken und Speicher, lassen sich in kurzer Zeit konfigurieren und bereitstellen.

Bei „Infrastructure as Code“ (IaC, auch Everything as Code) wird die Infrastruktur automatisiert anhand einer strukturierten Dokumentation (Code) aufgebaut.

Die Bereitstellung wird wesentlich beschleunigt. Im Falle eines gravierenden Ausfalls kann auf die letzte funktionierende Konfiguration zurückgegriffen werden. Das bedeutet schnelle Wiederherstellung und reduziert teure Ausfallzeiten. Fehlkonfigurationen werden im Vergleich zu einer manuellen Konfiguration (Konsole oder Web-Oberfläche) vermieden.

Der Code, üblicherweise unter Versionsverwaltung (siehe GitOps), kann von den Entwicklern eingesehen und angepasst werden. Sie müssen sich aber darauf verlassen können, dass die dokumentierte Infrastruktur dem tatsächlichen Zustand entspricht (source of truth).

Herausfordernd bleibt der Umgang mit unkontrollierten Änderungen der Konfiguration außerhalb von IaC. Beispielsweise durch manuelle Eingriffe per Webconsole oder auch durch Updates auf Seiten des Cloud-Anbieters.

Ein verbreitetes Tool für IaC ist die Open-Source Anwendung Terraform.