Daniel Wegner - 09. Juli 2020
Seit mehr als zwei Jahren benutzen wir bei MACD das Open-Source-System Kubernetes (k8s) für die Bereitstellung einiger Software-Produkte. Hier möchte ich erläutern, wie es dazu kam, welche Vorteile es gibt und was Kubernetes überhaupt ist.
Traditionell wurde bei uns Software entwickelt, welche nicht ständig verfügbar sein muss. Nachts konnten die Handelssysteme stoppen und am Wochenende wurden sie erst gar nicht gestartet. Durch die Idee zusätzlich ein innovatives digitales Finanzinformations-Tool namens AIXRAY zu entwickeln, hat sich diese Situation geändert.
Das neue Kommunikationstool sollte auf die Interaktion verschiedenster Kundengruppen aus der Finanzwelt ausgelegt sein, eine ständige Verfügbarkeit von 24/7 (sprich 24 Stunden am Tag, 7 Tage die Woche) gewährleisten. Wir entschieden uns, ein Konzept auf Basis einer Webseite zu entwickeln.
Diese Anforderung erforderte ein Umdenken und so begannen wir die aktuellen Techniken zu evaluieren. Schnell wurde klar, dass wir die Webseite in Teile hinunterbrechen mussten, um zum einen einzelne Funktionalitäten gezielt aktualisieren zu können, ohne die gesamte Webseite zu beeinflussen, zum anderen um die Komplexität des zu Grunde liegenden Quelltextes zu reduzieren.
Seitdem arbeiten wir nach dem Motto: "Do One Thing and Do It Well" von Malcolm Douglas McIlroy, dessen Spruch sich zwar ursprünglich auf was anderes bezog, aber zu unserem Kontext sehr gut passt.
Die Entwicklung von unabhängigen Services setzen wir auch in der Entwicklung unseres neuen Order Management System MAX ein. Das modulare Nachfolgeprodukt unserer bisherigen Handelssysteme XKYTE und GLOX beinhaltet das Beste aus beiden Systemen und ist technologisch auf dem modernsten Stand.
Unsere Microservice-Architektur für unsere Systeme besteht zum aktuellen Zeitpunkt aus 15 Services. Daraus ergibt sich die Situation, dass wir nicht mehr nur eine einzige Anwendung haben, sondern viele, welche zusammen ausgerollt und gewartet werden müssen.
Dies ergibt eine völlig neue Komplexität, die so bei unseren bisherigen Software-Produkten nicht gegeben war. Um diese Komplexität zu meistern, benötigt man eine Orchestrierung, also das intelligente Zusammenspiel vieler Einzelservices zu einem funktionierenden Gesamtdienst - und genau hier kommt Kubernetes (k8s) zum Einsatz.
Die Software vernetzt die verschiedenen Prozesse von Netzwerk, Speicher, Visualisierung und Applikationen optimal miteinander und hilft so, die komplexen IT-Service-Workflows zu automatisieren.
Bereitstellung
Verpacke ich meine Anwendung in sogenannte Container, ist k8s in der Lage, diese Anwendung für mich auf meinen Servern auszurollen und erreichbar zu machen. Zusätzlich werden Aktualisierungen meiner Anwendung ausgerollt - möglichst ohne eine Unterbrechung zu verursachen.
Skalierbarkeit
Falls ich davon ausgehen kann, das z.B. meine Webseite eine sehr hohe Anzahl Besucher haben wird, könnte meine Anwendung zu langsam reagieren. Diesem Problem kann ich mittels Skalierung entgegenwirken, in dem ich die Anwendung mehrfach bereit stelle und auf mehrere Server verteile. Greift nun ein Besucher auf die Webseite zu, antwortet eine Anwendung, die genug Ressourcen zur Verfügung hat, um die Abfrage möglichst schnell zu beantworten.
Verwaltung
Meine Anwendung wird von k8s gestartet, gestoppt und überwacht. Fällt meine Anwendung in einen unbenutzbaren Zustand, ist k8s in der Lage, die Anwendung automatisch neu zu starten und das Problem damit möglicherweise automatisch zu lösen.
Durch diese Funktionen sind wir heute in der Lage, komplexe Softwareprodukte wie MAX auf hochgradig automatisierte Weise zur Verfügung zu stellen und eine hohe Verfügbarkeit zu gewährleisten.
Ursprünglich von Google entwickelt und anschließend an die Cloud-Native-Computing-Foundation als Open-Source Projekt übergeben, übernimmt Kubernetes den Part der Orchestrierung, indem es sich um die Bereitstellung, die Skalierung und die Verwaltung der Services kümmert. Dabei ist das Ziel der Bereitstellung auch die Verteilung auf mehrere Server, um Ausfallsicherheiten zu gewährleisten.
Kubernetes selbst wird momentan von allen großen Cloud-Anbietern genutzt, wie z.B. Microsoft Azure, Amazon AWSoder Google Cloud Platform und wird bereits seit November 2017 im ThoughtWorks Technology Radar als zu übernehmende Technologie gelistet.