Beitrag von Thomas Wirtz, Pre-sales Director Germany
CIOs stehen heute vor großen Herausforderungen: Einerseits sollen sie Kosten einsparen, andererseits aber auch immer mehr Services auf unterschiedlichen IT-Plattformen bereitstellen und betreuen. Nur mit automatisierten Abläufen wird es möglich, diese Herausforderung zu meistern – denn die IT-Umgebungen insbesondere großer Unternehmen wachsen beständig und die manuelle Verwaltung nimmt zu viel Zeit in Anspruch und verursacht gleichzeitig zu hohe Kosten. An dieser Stelle spielen immer häufiger Cluster Manager, wie beispielsweise Kubernetes, eine wichtige Rolle. Oftmals als Datacenter oder Cloud Betriebssystem bezeichnet, vereinheitlichen sie heterogene Infrastrukturen, darunter selbstverständlich auch Public Clouds. Doch davor steht die Entwicklung von neuer Software, die dann für unterschiedliche Betriebssysteme und in Abhängigkeit von Datenbanken und Systemen getestet werden muss. Container-Technologie und Docker vereinfachen Entwicklern diese Schritte enorm.
Wie arbeiten Entwickler?
Entwickler nutzen in erster Linie Docker-Umgebungen, um Software als Container zu starten und später zu verteilen. Dabei können Anwendungen und komplexe Stacks schnell und trotz unterschiedlicher Betriebssysteme ausgeführt werden, da Docker eine Abstraktionsebene über das Betriebssystem und den darunterliegenden Host legt. So wird es möglich, dass Entwickler beispielsweise eine Linux-Datenbank auf einem Mac- oder Windows-Rechner ausführen können. Konkret bedeutet das, dass ein Entwickler Source Code schreibt und diesen mithilfe einer Beschreibung („Dockerfile“) in ein Docker-Image packt und zentral ablegt („Docker Registry“). Anschließend wird lediglich der Name der Anwendung weitergegeben. Andere Entwickler können dann über Docker das Programm auf ihren jeweiligen Rechnern ausführen – unabhängig vom Betriebssystem. Ein weiterer Vorteil ist, dass alle Abhängigkeiten und die Zielumgebung in dem Docker-Image beschrieben sind, sodass im Betrieb ein vollständiges Paket vorhanden ist und nicht alle einzelnen Abhängigkeiten zusammengestellt werden müssen.
Die Anwendungsentwicklung findet typischerweise zunächst lokal statt – anschließend wird der neue Code getestet und ausgerollt. Aus Gründen der Ausfallsicherheit wird in der Produktion natürlich nicht nur ein Docker-Host, sondern gleich mehrere betrieben – und natürlich werden zeitgleich unüberschaubar viele Docker-Images verschickt und ausgeführt. Um all diese Hosts und Images zu verwalten, benötigen Unternehmen einen Container Cluster Manager. Aktuell gibt es drei prominente Cluster Manager mit flexiblen Deployments (eigenes RZ und/ oder Public Cloud): Docker Swarm, Kubernetes und Mesos. Bei VMware setzen wir aktuell vor allem auf Kubernetes, da hier von unserer Community aus die größte Nachfrage herrscht.
Was hat Vereinssport mit Kubernetes zu tun?
Ein Cluster Manager simuliert einen Verbund aus mehreren Docker-Hosts und sorgt für die richtige Verteilung der Aufgaben (beispielsweise Docker Images). Zu den wichtigsten Aufgaben des Container Cluster Managers gehören neben intelligenter Orchestrierung auch Scheduling (Zuweisen von Ressourcen, beispielsweise von Docker Images zu Cluster Nodes respektive Docker Hosts) und Skalierung (bei einem Ausfall eines Docker-Hosts wird ein neuer automatisch gestartet, bei steigender Last müssen automatisch neue Hosts gestartet werden). Das bedeutet, dass der Cluster Manager sich um die alltäglichen Betriebsaufgaben kümmert, die aktuell noch oftmals manuell von IT-Administratoren übernommen werden. Er gleicht einem Trainer, der seine Spieler anweist, koordiniert und auf Fehler hinweist. An dieser Stelle tut sich ein weiterer Knackpunkt auf: Einerseits schafft der Cluster Manager erstmal eine neue Rolle, da es sich um ein sehr komplexes System handelt, um das sich jemand kümmern muss. Andererseits jedoch fallen durch die Automatisierung auch Routineaufgaben und klassische Administratorenrollen weg.
Eine kleine Kubernetes-Geschichte
Die Blaupause von Kubernetes, genannt Borg, wurde ursprünglich von Google entwickelt. In vielen Fällen hat Google die Probleme, mit denen Unternehmen heute zu kämpfen haben, bereits vor Jahren gelöst. Google experimentierte bereits vor mehr als 10 Jahren mit Container-Technologien, da das Unternehmen damals vor der großen Herausforderung stand, dass Anwendungen für mehrere Millionen Server ausgerollt und effizient betrieben werden mussten – eine manuelle Herangehensweise hätte die Kapazitäten von Google deutlich überstiegen. 2015 veröffentlichte Google schließlich ein Paper, in dem Borg der Öffentlichkeit vorgestellt wurde.
Ein sehr gutes Beispiel für den erfolgreichen Einsatz von Automatisierung und Standardisierung mittels eines Cluster Managers ist Facebook: Dank dieses Ansatzes ist ein einzelner Administrator für die Betreuung von rund 20.000 Servern zuständig. Ein weiteres aktuelles Problem, vor dem CIOs stehen, ist die Auslastung der Server in ihrem Rechenzentrum. Netflix zählte beispielsweise zu den Early Adoptern von AWS. Doch schon bald stellte sich heraus, dass die virtuellen Maschinen lediglich zu 20 Prozent ausgelastet waren – je nach Umgebungsgröße ist das ein enormer Kostenfaktor! Durch einen Cluster Manager kann die Auslastung erhöht werden, sodass Server typischerweise einen Auslastungsgrad von 80 bis 90 Prozent erreichen und somit direkt Kosten gespart werden können.
Lutz Andre Barroso von Google hat die moderne Vorgehensweise kompakt zusammengefasst: “We must treat the datacenter itself as one massive warehouse-scale computer.“ Und ganz genau darum geht es letztendlich: Das Rechenzentrum nicht als mehrere Tausend Server zu sehen, sondern als eine Einheit, die sich mittels Automatisierung und der richtigen Tools sehr viel einfacher verwalten lässt.
Sie haben Fragen zu agiler Softwareentwicklung und Cloud-native Apps? Auf Twitter können Sie gerne direkt mit mir in Kontakt treten und meine News rund um #CrossCloud verfolgen!