Die Vorteile, die die Digitalisierung der Unternehmens-IT mit sich bringt, sind nicht von der Hand zu weisen, aber der Weg dorthin ist nicht immer einfach. Container-as-a-Service ist in diesem Zusammenhang einer der Trends, die man im Auge behalten sollte.
Text: David Zimmerli, erstmals erschienen im Swiss IT Magazine im Oktober 2019,
Zwar gibt es in der Schweiz generell noch eher wenig produktiven Workload auf CaaS-Lösungen, aber für die meisten Firmen ist das Thema von grossem Interesse.
Mit dem Start von Containern in der Cloud beginnt auch die Symphonie der Unternehmens-IT. Daten werden heute in einem Ausmass produziert, welche jegliches Vorstellungsvermögen der Unternehmen von vor zehn Jahren gesprengt hätte. Daten verändern das Wissen um Produktionswege, Userverhalten und sogar ganze Business-Prozesse. Sie entstehen an unterschiedlichsten Orten, in diversen Applikationen und Schnittstellen. Aufgabe der Unternehmens-IT ist es, diese Daten zusammenzuführen und sinnvoll für die Verarbeitung zu speichern.
Deshalb ist der Weg in die Cloud für Unternehmen, welche zukünftigen Möglichkeiten von Big Data, Analysetools und neuen Geschäftsmodellen die Türe nicht verschliessen wollen, unumgänglich.
Die Container-Technologie leistet einen wichtigen Beitrag, wenn es darum geht, klassische Unternehmensapplikationen und die darin gewonnenen Daten in die Cloud zu verlagern, denn nicht jede Applikation wurde initial Cloud native erstellt. Container-Lösungen können auf dem Weg in die Cloud helfen.
Wenn sich ein Unternehmen auf die Reise in die Cloud begibt, dann geht es häufig einen hybriden Weg: Einerseits soll zwar die gesamte IT in der Cloud funktionieren, andererseits muss der Umgang mit Legacy-IT geregelt werden. Fakt ist: Nicht jede Applikation eignet sich, in die Cloud bewegt zu werden und häufig ist es unumgänglich, ein hybrides Modell zu definieren.
Wenn man die IT eines Unternehmens betrachtet, könnte man eine klassisch angestammte, monolithische Applikation mit einer Ein-Mann-Band vergleichen. Eine Person spielt alle Instrumente, fix an einem Ort. So singt der Strassenmusiker, während er gleichzeitig Gitarre spielt und auf dem Rücken noch ein Rhythmusinstrument in Bewegung versetzt. Er hat jederzeit alles selber im Griff, kann über Einsatz und Koordination entscheiden, erreicht aber in der Regel nur ein überschaubares Publikum im direkten Umkreis im Moment des Spielens.
In die IT übersetzt bedeutet das eine in sich geschlossene Applikation, die komplett auf einem Betriebssystem installiert wird und fix dort läuft. Und zwar nur dort, auf diesem einen – vielleicht gesicherten – Server. Dies funktioniert zwar in der Praxis meist, ist aber nicht praktisch und die starren, unflexiblen Strukturen sind in der heutigen, schnelllebigen Welt nicht genügend agil, um mit der Entwicklung Schritt zu halten.
Was also tun? Der erste Schritt ist, die Ein-Mann-Band mobil zu machen. Der Musiker kann nun überall spielen, nicht nur auf seinem angestammten Platz an der Strassenecke. Er kann umhergehen und – wenn es sein muss – sogar im Zug spielen. Er erreicht damit ein grösseres Publikum und somit auch mehr Wirkung.
Genau dies ermöglicht die Container- Technologie: Sie ist ein Schritt in die Virtualisierung. Applikationen werden mit allem Zubehör in transportable Pakete geschnürt und in die Cloud übertragen. Die gesamte Anwendung wird dabei inklusive aller benötigten Libraries, weiterer Komponenten in einen so genannten Container – zum Teil aufgeteilt nach Sandbox oder anderen Test- und Entwicklungsszenarien – geschoben. Es bestehen keine externen Abhängigkeiten mehr, die Anwendung läuft innerhalb des Containers autonom. Durch das Aufheben dieser externen Abhängigkeiten lassen sich Applikationen über unterschiedliche Systeme hinwegbewegen. Dies erhöht den Portabilitätsgrad und die Flexibilität der Anwendung.
Im Gegensatz zu Virtuellen Maschinen (VMs) haben Container zudem keinen hohen Overhead und ermöglichen so eine effizientere Nutzung des zugrunde liegenden Systems sowie der Ressourcen. Dies entspricht einem ersten Schritt hin zur Modernisierung der Workflows sowie der Unterscheidung zwischen Entwicklung und produktiver Umgebung. Zudem können beliebig Releases und Testings durchgeführt werden. Die organisatorische Reise in Richtung moderner DevOps kann beginnen.
So weit so gut, doch ein Mann kann nicht alles leisten, denn noch immer hängt alles von seiner Performance ab. Es braucht weitere Musiker im Orchester und vor allem einen guten Dirigenten für den grossen Erfolg.
Hier setzt zum Beispiel der Container-Orchestrator Kubernetes (k8s) an, der ursprünglich von Google entwickelt wurde und heute eine Open-Source- Lösung ist. Dieses Tool ermöglicht es, Container zu replizieren und zu orchestrieren, deren Ausführung zu planen, Integrität zu gewährleisten und die Überwachung sicherzustellen.
Um ein gutes Konzert zu spielen, braucht der Dirigent zudem die richtigen Noten. Das heisst, die Einführung eines sogenannten deklarativen Zustandes, zum Beispiel mit einer YAML-Datei, ist von grossem Vorteil (YAML steht für Yet Another Markup Language, ist eine vereinfachte Auszeichnungssprache und stellt assoziierte Daten dar). Sie ist – um bei der Musikanalogie zu bleiben – die Partitur, die angibt, was und wie gespielt werden soll.
Die Container-Lösung besteht also aus einem Master, der die Partitur interpretiert und alles tut, was notwendig ist, damit die Container wie gewünscht funktionieren.
In einem letzten Schritt können sich die Musiker des Orchesters nun noch spezialisieren: Sie spielen zwar nur noch ein Instrument, dieses aber perfekt. Zudem können die Musiker auch einzeln nach Instrument verstärkt werden, nicht mehr nur als Ganzes.
In die IT übersetzt bedeutet dies, dass die monolithische Anwendung in Microservices aufgeteilt wird. Teile der Applikation werden freigegeben und als separate Container definiert, wodurch Mikrodienste entstehen, die einer einzelnen Aktivität gewidmet sind. Man spricht hier von horizontaler Elastizität, auch Scale-out genannt. Dies ermöglicht mehr Flexibilität in der Entwicklung, denn jeder Microservice wird unabhängig entwickelt und lässt so eine wesentlich schnellere Reaktionszeit zu.
Ein weiterer Vorteil ist die Möglichkeit, jederzeit neue Microservices hinzuzufügen, ohne alles andere zu beeinträchtigen, denn alle laufen autonom in einem eigenen Container. So lassen sich nun auch Daten besser nutzen, denn bisher hatte eine monolithische Applikation eine spezifische Aufgabe von A bis Z zu vollbringen.
Nun kann man darüber nachdenken, durch die Applikation gewonnene Daten anders bereitzustellen und neu zu nutzen. Die Applikation, aufgeteilt und beliebig ergänzt mit weiteren Microservices, ist vielmehr ein Service-Netz als lediglich die Aufgabenerledigung von A bis Z. In einem solchen Service-Netz kann es beliebig viele Fäden in umliegende Netzwerke geben und Daten werden für weitere – oder eben neue – Geschäftsprozesse bereitgestellt und genutzt.
Über kurz oder lang: Container machen die Entwicklung und Bereitstellung von Software in der Cloud agiler und effizienter. Mit Container-as-a-Service erhalten Unternehmen einen regelrechten Digitalisierungs-Booster. Entwickler können so ihre Projekte zum Beispiel viel schneller und einfacher vorantreiben, ihre Anwendungen rascher bereitstellen und Ressourcen optimieren.
Container-Lösungen helfen der Unternehmens-IT in diversen Bereichen, einen grossen Schritt in Richtung Digitalisierung zu unternehmen. Einerseits können Betriebsteams die Betreuung vereinfachen, die Aufgabe von Entwicklern konzentriert sich auf das Kernbusiness und lässt Infrastruktur- und Performance-Sorgen in den Hintergrund treten. Für das Business ist nun ein schnelleres Go-to-Market und eine klare Skalierung nach Kundenbedürfnissen möglich – sehr zur Freude von Kunden und Nutzern der Applikationen.
Langfristig sollten sich Unternehmen aber trotzdem um die Modernisierung ihrer Anwendungen kümmern. Die Containerisierung ist zwar ein erster Schritt in die richtige Richtung, aber hat auch Grenzen. Es ist wichtig zu verstehen, dass Containerisierung nicht die direkte Aufsplittung in Microservices ist – dazu muss eine Applikation erst ausgelegt und meist neu codiert werden.
Fazit: Unternehmen beginnen jetzt mit der Containerisierung und initialisieren so den Prozess der Anwendungsmodernisierung. Container-Dienste bieten Mittel zur Unterstützung von DevOps-Modellen. Die organisatorischen Entwicklungschancen müssen daher mitbedacht werden, denn Container ermöglichen eine schnellere Bereitstellung und optimale Nutzung der Ressourcen.
Nicht zu vergessen ist zudem die Softwarebereitstellung von Drittanbietern: Sie sind die eigentlichen Treiber in der Container-Entwicklung, denn sie bieten ihre Software bereits heute am liebsten – und zuverlässigsten – aus Containern heraus an. Damit werden Container Services zur zentralen IT-Drehscheibe. Als «Symphonie der Clouddienste» erfüllen sie die vielen Anforderungen der beteiligten Interessengruppen.
Andere Leser interessierte auch: