Container IT – Wie Container und Cluster die IT-Infrastruktur revolutionieren
Für Unternehmen wird eine zukunftsfähige IT-Infrastruktur immer mehr zum entscheidenden Wettbewerbsfaktor. Denn die Erwartungshaltung der Kunden an Apps und Websites steigt stetig. Die Dienste müssen nicht nur 24/7 erreichbar sein, sondern auch in regelmäßigen Abständen neue Funktionen und Updates anbieten. Und das ohne den Service für den Kunden in irgendeiner Form zu beeinträchtigen. Die Kulanz bei wartungs- oder störungsbedingten Ausfällen oder Einschränkungen tendiert zunehmend gegen null. Um reibungslose Abläufe und uneingeschränkte Funktionalität zu allen Zeiten zu gewährleisten, brauchen Unternehmen Instrumente, die Geschwindigkeit, Stabilität und Skalierbarkeit sicherstellen.
Hier stößt die traditionelle IT-Infrastruktur in Unternehmen oft an ihre Grenzen, zum Beispiel wenn es im Onlinehandel an Weihnachten zu Auftragsspitzen kommt oder die Zugriffszahlen für einen begrenzten Zeitraum massiv in die Höhe schnellen. Aus diesem Grund setzen viele IT-Vorreiter wie Otto und eBay auf Cloud-Native-Technologien. Cloud-Native-Technologien ermöglichen eine kontinuierliche Verlagerung der Software-Infrastruktur und damit maximale Flexibilität und Anpassungsfähigkeit.
Ursprung der Container-Technologie
Einer breiteren Öffentlichkeit wurde der Begriff „Container“ durch das 2013 gegründete Open-Source-Docker-Projekt, mit dem man Applikationen isolieren kann. Mithilfe der Isolierung lassen sich die Applikationen problemlos transportieren und implementieren. Die Container sind in sich abgeschlossen und besitzen keine Verweise auf andere Container, sodass es keine Abhängigkeiten und unzähligen Referenzen untereinander gibt.
Was ist ein Container?
Container sind Umschreibungen für Virtualisierungstechniken. Ein Container besitzt Ähnlichkeiten zu einer virtuellen Maschine; nur mit dem gravierenden Unterschied, dass diese über kein eigenes Betriebssystem verfügt und deswegen auch eine im Vergleich geringere Größe aufweisen. Ein Container „lagert“ eine Anwendung samt ihrer Konfigurationen und Referenzen.
Warum eigentlich Container?
Ein großes Problem beim Ausrollen von Applikationen bestand in der Softwareentwicklung darin, dass diese Abhängigkeiten und Referenzen zu anderen Modulen wie Konfigurationen oder Bibliotheken aufwiesen. So kam es oft zu Vorfällen, wo auf der Staging die Applikationen reibungslos funktionierten, aber beim Deploy auf die Live-Umgebung aufgrund anderer Settings und Konfigurationen nicht mehr gingen. Hierbei sollen nun Container Abhilfe schaffen. In dem eine Applikation samt ihrer Einstellungen und Verweise sich in einem Container befinden, kann ein Transport auf ein anderes System leichter vonstattengehen und das Risiko für Komplikationen beim Deploy werden minimiert.
Vorteile von Containern und Clusterlösungen
Für den Aufbau und das Management einer solchen cloud-basierten IT-Infrastruktur gelten Container- und Clusterlösungen unter Experten als besonders vielversprechend. Container stellen isolierte Umgebungen für das Ausführen von Prozessen zur Verfügung. Dabei teilen sich mehrere Container ein gemeinsames Betriebssystem, das sogenannte „Shared Operating System“, das ein vergleichsweise einfaches und nutzerfreundliches Management der Container über Clusterstrukturen ermöglicht. Für Unternehmen bringt der Einsatz von IT-Containern erhebliche Vorteile mit sich:
Verpackung
Durch die Isolation von Anwendungen werden bislang typische Abhängigkeiten aufgelöst, so dass beispielsweise Betriebssystem- oder Hardware-Funktionalitäten nahezu vollständig von der Anwendung entkoppelt werden können.
Effizienz
Durch die Entkopplung von Hard- und Software werden Ressourcen wesentlich effizienter genutzt, so dass die IT-Infrastruktur von Unternehmen schlank gehalten wird. Dadurch können Unternehmen Kosten sparen und gleichzeitig die Flexibilität ihrer IT massiv erhöhen.
Portabilität
Einheiten können wesentlich einfacher als bisher über verschiedene Umgebungen, wie verschiedene Betriebssysteme oder Cluster, transportiert werden. Dadurch können sich zum einen verschiedene Abteilungen und Einheiten des Unternehmens wesentlich besser austauschen als bislang. Zum anderen trägt das ebenfalls zu Effizienz und einer besseren Ressourcenauslastung bei. Außerdem können Unternehmen so in Zukunft das sogenannte Vendor-Lock-in, also eine fortgesetzte Abhängigkeit von einem Anbieter, umgehen.
Trends rund um Docker, Kubernetes und Rocket
Obwohl mit Docker, Kubernetes oder Rocket bereits viele Open-Source-Lösungen für den Aufbau und die Orchestrierung von Container- und Cluster-Systemen verfügbar sind, steht die Technologie derzeit am Anfang einer spannenden Reise hin zum breiten Einsatz in Unternehmen. Auf dem Weg dorthin lassen sich derzeit folgende richtungsweisende Entwicklungen ausmachen:
Steigender Konkurrenzdruck und technologisches Wettrüsten
Zwar ist Docker nach wie vor der Platzhirsch unter den Container-Engines, doch mit dem zunehmenden Trend zur Containerisierung steigt auch der Konkurrenzdruck. So bevorzugen inzwischen viele Unternehmen die CoreOS-Engine Rocket. Damit hat sich CoreOS, lange Zeit wichtigster Partner von Docker, inzwischen zum ernstzunehmenden Rivalen entwickelt. Auch technologisch versuchen sich die verschiedenen Anbieter stetig zu übertreffen, wobei vor allem Skalierbarkeit, Sicherheit, Interoperabilität, Leichtgewichtigkeit, Laufzeitstabilität und Nutzerfreundlichkeit wichtige Wettbewerbsfaktoren sind. So hat Google erst im Mai verkündet, dass die Google Container Engine ab sofort auch heterogene Cluster unterstützen kann. Angesichts des großen Potentials der Technologie möchte jeder zum Industriestandard und damit zum führenden Anbieter werden. Daher ist für die kommende Zeit mit einer extrem hohen Innovationsgeschwindigkeit im Bereich Container zu rechnen, wohingegen eine Einigung für einen gemeinsamen Standard in weite Ferne rückt.
Online-Handel als Vorreiterbranche
Neben den üblichen IT-Innovatoren wie Google oder IBM setzen derzeit vor allem zukunftsorientierte und technologie-affine Online-Händler wie eBay auf Container-Technologien. Gerade in der sehr prozesslastigen Interaktion mit dem Kunden bieten Container zahlreiche Vorteile, von der besseren Bewältigung von Auftragsspitzen hin zu immensen Kosteneinsparungen durch verringerte Anforderungen an die eigene Infrastruktur. Damit dürften sich Container im Onlinehandel wesentlich schneller als in anderen Bereichen als führende Standard-Technologie durchsetzen.
Zunehmendes Wachstum in Europa
Nachdem es in den Vereinigten Staaten schon seit geraumer Zeit einen Trend hin zu Containerisierung und Cloud-Native-Lösungen gibt, nimmt die Bewegung in Europa und Deutschland zunehmend an Fahrt auf. Mit Zalando, Otto oder Sixt stellen immer mehr deutsche Unternehmen ihre IT auf Containersysteme um. Damit einher geht eine zunehmende Professionalisierung und Ausweitung der Branche.
Interview mit Damien Plard
Damien Plard ist Systemingenieur bei Neofonie und einer der führenden Entwickler.
Hier spricht er über einige der Herausforderungen von Microservices.
Woran arbeitest du zurzeit?
Ich arbeite eng mit meinen Kollegen für einen unserer Kunden zusammen, der an einem „Monolith-Syndrom“, wie ich es nenne, leidet. Im vergangenen Jahr haben wir mit dem Aufbau eines Proof-of-Concept begonnen, um auf eine Full-Stack-Microservice-Architektur umzustellen. Innerhalb von drei Wochen erstellten wir unsere erste API und veröffentlichten sie im Internet. Schritt für Schritt entfernen wir Stücke aus unseren Monolithen und implementieren stattdessen neue Funktionen als Microservices.
Warum verwendet ihr Microservices?
Wir wollten neue Technologien nutzen. Mit der alten Infrastruktur war das nicht möglich. Das Ziel war also nicht, wieder eine neue Lösung zu schaffen, sondern unsere letzte aufzubauen. Das ist nicht einfach. Nun, das ist unmöglich. Also beschlossen wir, eine Plattform zu bauen, die sich ständig verändern kann.
Das bedeutet, dass wir einfache und entkoppelte Komponenten benötigen. Darüber hinaus wollten wir die von der Plattform ausgehenden Zwänge minimieren und in der Lage sein, je nach den Anwendungsfällen die besten Werkzeuge auszuwählen. Also implementierten wir Full-Stack-Microservices.
Wie habt ihr Continuous Deployments integriert?
Es war ganz einfach, da wir es von Anfang an implementiert haben: Unser MVP ist um die kontinuierliche Bereitstellung (CD) herum aufgebaut. Jetzt ist es eine Einschränkung der Plattform: Wenn wir eine neue Komponente hinzufügen müssen, muss sie mit CD kompatibel sein. Während unseres Tagesgeschäfts haben wir durchschnittlich 15 Minuten zwischen einem „Git-Push“ (einer Änderung des Codes) und der endgültigen Bereitstellung.
Die Continuous Deployments haben uns wirklich geholfen, uns auf die Erstellung von Software zu konzentrieren, ohne zwischen den Aufgaben wechseln oder auf die nächste Version warten zu müssen.
Was war die größte Herausforderung?
Wir haben eine Menge gelernt. Unser Motto ist es, die besten Werkzeuge für das zu wählen, was wir produzieren wollen. Die Wahl der zu verwendenden Technologie liegt in den Händen der für die Dienste verantwortlichen Teams. Wir haben mit Diensten begonnen, die in Java geschrieben wurden, und jetzt haben wir andere in golang und Node.js geschrieben. Wir haben auch mit MongoDB begonnen, aber ein neuer Dienst ist geplant, der Kassandra implementieren wird.
Wir haben es uns zur Priorität gemacht, bei allen Pull-Anfragen Code-Reviews durchzuführen, und in Fällen, in denen ein brandneues Tool oder eine neue Technologie implementiert werden soll, setzen wir die Pair-Programmierung ein. Das Gute am Microservice-Ansatz ist, dass wir die Komplexität gering halten. Selbst wenn wir einen Fehler machen, ist er lokal und leicht zu beheben.
Auf nicht-technischer Ebene mussten wir ein Team in einer entwicklungs-/agilen Weise strukturieren, da die Architektur der Microservices eine funktionsübergreifende und transparente Umgebung erfordert. Da wir außerdem das Motto „You build it, you run it“ anwenden, haben wir auch unsere Support-Ressourcen geändert.
Wie reagieren andere Entwickler auf Microservices?
Wie wir bei der Entwicklung und Produktion auf Consul und Docker setzen, haben wir auf den DevOpsDays 2015 in Berlin und auf dem DevOps-Meetup in Berlin 2016 vorgestellt. Die Reaktionen waren großartig. Für andere Software-Ingenieure sind die beiden größten Änderungen die kontinuierliche Bereitstellung und unsere Full-Stack-Microservice-Architektur. Alles, was nicht reine Entwicklung ist, wird automatisiert, und sie können die besten Sprachen oder Werkzeuge für die jeweilige Situation wählen (Java, golang, Node.js, MongoDB, Cassandra,…). Wir haben auch anderen Kunden die Vorteile von Microservices demonstriert und positive Rückmeldungen erhalten.
An welcher Art von Technologien und Themen bist du interessiert?
Bis jetzt habe ich mich sehr auf die Vereinfachung von Infrastrukturen und die Automatisierung konzentriert. Jetzt konzentriere ich mich darauf, unsere Instrumente zu verbessern, um die Arbeitsbelastung für meine Kollegen weiter zu reduzieren. Ich bin zuversichtlich, dass wir bald in der Lage sein werden, einen neuen Microservice in weniger als 20 Minuten zu implementieren.
Veröffentlichung am 15. Juni 2016, aktualisiert am 17. Oktober 2020