Für größtmögliche Flexibilität, Stabilität und Performance werden Software-Anwendungen heute als plattformunabhängige, virtualisierte Container eingesetzt. So nutzt Auctores für seine Microservices-Architektur die Open-Source-Software Docker. Die größte Herausforderung dabei ist die – möglichst automatisierte – Verwaltung der Systeme: Wie können diese Container koordiniert und terminiert werden? Wie kommunizieren die einzelnen Container miteinander? Wie lassen sie sich an den jeweils aktuellen Leistungsbedarf anpassen? Die Lösung dafür heißt Kubernetes.
Kubernetes ist ein ursprünglich von Google entwickeltes Open-Source-System, mit dem sich Container-Anwendungen auf verteilten Systemen einspielen, skalieren und warten lassen. Auctores setzt für diese Container Orchestration auf Kubernetes, da es Docker unterstützt und gerade bei komplexen Anwendungen in großem und sehr großem Maßstab Vorteile gegenüber dem ähnlich funktionierenden Docker Swarm bietet.
Damit kann Auctores hochverfügbare, hochskalierbare und hochsichere Anwendungen in der Cloud betreiben. Dabei unterstützt Kubernetes einen Continuous-Integration- und Continuous-Delivery-Workflow, der Voraussetzung für maximale Umsetzungsgeschwindigkeit und Softwarequalität ist. Kubernetes ergänzt so die von Auctores eingesetzten Komponenten für die Software-Entwicklung ideal. Zuverlässigkeit und Flexibilität sind große Pluspunkte von Kubernetes.
Container und Clusterlösungen sind nicht nur die Grundlage für den Aufbau einer cloudbasierten Infrastruktur, sondern kommen auch den immer agiler werdenden Anforderungen an Entwicklung und Betrieb entgegen. In der modernen Software-Entwicklung sind Anwendungen keine monolithischen Programme mehr, sondern bestehen aus vielen miteinander verknüpften Komponenten, die in Containern enthalten sind.
Damit eine Anwendung funktioniert, ist also mehr erforderlich, als einfach einen Container zu starten oder stoppen. Es gilt auch, das Zusammenwirken aller benötigten Container zu steuern. Schon innerhalb eines einzelnen Netzes teilen sich Container Ressourcen wie etwa CPU und Arbeitsspeicher. Läuft eine Anwendung in der Cloud, erhöht sich die Komplexität beträchtlich. Diese Organisation der Komponenten erfolgt über Container Orchestration (auch: Container-Orchestrierung). Darüber hinaus umfasst die Orchestrierung Monitoring, Alerting und Versionsverwaltung.
Sobald damit eine große Zahl von Containern verwaltet wird, sind entsprechende Management-Tools nötig. Kubernetes ist dafür innerhalb eines eigenen Rechner-Netzwerkes ebenso wie in einer Unternehmens-Cloud oder auf Cloud-Diensten externer Anbieter einsetzbar. Dies erlaubt das schnelle Ausrollen von Software und Updates, erleichtert die Skalierung von Anwendungen und sorgt dafür, dass die Unterschiede zwischen Entwicklungs- und Produktiv-Umgebungen nicht zu groß werden und Anwendungen flächendeckend aktuell bleiben.
Kubernetes bietet sich für den Einsatz im Unternehmensumfeld aus einem weiteren Grund an: Auch wenn die Software Open Source ist, hat Google als Initiator einen scharfen Blick auf ihre Weiterentwicklung. Deshalb gibt es nicht nur eine klare Roadmap, sondern auch verlässliche Update- und Release-Zyklen und Bugfixes.
Für automatisches Deployment und Skalierung fasst Kubernetes Container in logische Teile zusammen, die innerhalb eines Kubernetes-Clusters über eine hierarchische Struktur verwaltet werden. Diese setzt sich zusammen aus:
Kubernetes ermöglicht es, dass sich Anwendungen gemeinsame Ressourcen teilen und dennoch von anderen Prozessen und dem Hostsystem isoliert sind, auf dem sie laufen. Die Network Policies gehen dabei über die Docker-immanente Separation hinaus. Role Based Access Control (RBAC) erlaubt die Isolation von Usern, Containern und Services und damit auch den Aufbau mandantenfähiger Cluster, in denen mehrere Kunden im gleichen System arbeiten können, ohne dass diese Einblick in Daten, Benutzerverwaltung etc. der anderen Kunden haben.
Für den erfolgreichen Aufbau einer mandantenfähigen Architektur und wartbarer und stabiler Applikationen müssen tragfähige Konzepte und entsprechende Pattern entwickelt werden. Nach einer ausführlichen Erprobungsphase ist Kubernetes inzwischen bei Kundenprojekten von Auctores im Einsatz.