Die Zukunft in den Wolken

Die Zukunft in den Wolken

geschrieben von Tore Müller, IT-Software-Engineer

Wie wir Software in die Cloud verlagern

Softwarebetrieb in der Cloud ist längst in der Mitte der Industrie angekommen. Mit Hilfe von Kubernetes, einer Open-Source-Plattform für die Administration von Anwendungen und Arbeitslasten in sogenannten Containern, können wir Software in einer sicheren Umgebung, ausfallsicher und flexibel erweiterbar betreiben.

So werden durch Kubernetes bei steigender Nutzer:innenlast beispielsweise der automatisierte Start neuer Services zur Entlastung ausgelöst oder Anwendungen im Fehlerfall durch die Plattform automatisch neu gestartet und das ohne zusätzliche, kostenintensive Backup-Systeme.

Die Anwendungen laufen dabei in Ihren Containern autark voneinander, sodass auch neue Services und Ressourcen friktionsfrei in die Cloud eingespielt werden können.

Kubernetes in unserem Unternehmen

Als Plattform zur Ausführung und automatischer Skalierung von Software in Datencontainern, bildet Kubernetes das zentrale System moderner cloudbasierter Softwarearchitekturen. Besonders profitieren von dieser Plattform Microservice-Strukturen, denen bei unveränderter Skalierbarkeit und Ausfallsicherheit ein reibungsloser Ablauf im Deployment ermöglicht wird.

In unserem Unternehmen kommen aktuell drei Kubernetes Cluster zum Einsatz:

  • Produktions Cluster in einer Rancher Umgebung
  • Entwicklungs Cluster in einer Rancher Umgebung
  • Produktions-Fallback Cluster in einer Google Cloud Plattform

Beide Rancher Cluster werden on premise auf einem Proxmox Cluster gehostet und können über separate Load Balancer erreicht werden.

Das Google Cluster dient als Notfall-System, dass bei einem Ausfall des Produktions Clusters dessen Aufgaben übernimmt. Anwendungen, welche die Erlaubnis bekommen auf unseren Google-Servern zu laufen, werden im Falle eines Ausfalls automatisch gestartet um die Betriebsfähigkeit aufrecht zu erhalten, bis das Produktions Cluster wieder zur Verfügung steht. Solange die Anwendungen im Google Cluster nicht benötigt werden, werden sie runterskaliert um Ressourcen zu schonen.

Bei den Zugriffsregelungen wird nach Möglichkeit genau getrennt. Entwicklungs- und Testversionen unserer Anwendungen laufen im Entwicklungs Cluster und kommunizieren einzig mit den Entwicklungsversionen anderer Systeme und Datenbanken. So vermeiden wir Störungen und Fehler in Produktivsystemen oder in anderen Umgebungen.

Continuous Integration und Deployment

Als Continuous Integration und Continuous Deployment werden Aufgaben bezeichnet, die für jedes Update an unserer Software ausgeführt werden, um Änderungen zu testen und diese in unsere Systeme zu übernehmen.

Die Teilaufgaben dieser Prozesse werden bei uns in mehrere Einzelschritte unterteilt.

Build

Für unsere Microservices werden Docker Container vorbereitet und als Images in unserem Gitlab System abgespeichert. Diese Images können vom Kubernetes abgerufen und entsprechend der anwendungsspezifischen Konfiguration gestartet werden.

Test

Im Entwicklungsprozess definierte Tests werden durchgeführt, um sicherzustellen, dass vorgenommene Änderungen bestehende Funktionalitäten nicht negativ beeinträchtigen.

Deploy Preperation

Je nachdem, ob eine Entwicklungs- oder Produktivversion veröffentlicht werden soll, werden die zuvor erstellten Images mit unterschiedlichen Hinweisen versehen und Berechtigungen im Kubernetes konfiguriert, um so eine problemlose Veröffentlichung der Software zu ermöglichen.

Deploy

Um dem Kubernetes Cluster mitzuteilen, dass eine neue Version der Software zur Verfügung steht oder auch eine komplett neue Software eingespielt werden soll, wird eine Konfiguration mit den zuvor festgelegten Informationen und Hinweisen hochgeladen.

Die Konfiguration beinhaltet, welches Image mit welcher Version geladen werden soll und über welche Adresse diese Anwendung erreichbar ist. Anschließend kümmert sich das Kubernetes Cluster darum die neue Version zu starten. Erst wenn diese gestartet und verfügbar ist, wird die alte Version beendet und entfernt, wodurch der Nutzende keine Unterbrechung durch das Update bemerkt.

Cleanup

Nicht mehr benötigte Test-Deployments werden aus der Kubernetes Umgebung gelöscht.


Diese Aufgaben sind, mit wenigen Ausnahmen, für alle Microservices oder Microfrontends identisch. Die Unterschiede, wie Anwendungsnamen, -endpunkte etc. werden durch Variablen festgelegt und diese in die entsprechende Konfiguration geschrieben. Die Ausnahmen beinhalten Dienste, die einen Zustand auf einer Festplatte, sogenannte Persistent Volumes, speichern müssen oder bestimmte nicht bei uns entwickelte Anwendungen, die eigene Konfigurationen benötigen.

Gemeinsam ermöglichen uns die Cloud mit strukturierten Continuous Integration und Deployment Aufgaben ein unkompliziertes Erweitern und Verbessern unserer Software und heben unseren Software Standard zum neuen State of the Art.


Zum Anzeigen oder Hinzufügen von Kommentaren einloggen

Weitere Artikel von wilhelm.tel

Ebenfalls angesehen

Themen ansehen