Was sie können, wo sie patzen

Container: Was wirklich hinter dem Buzzword steckt

Uhr

Wenn Unternehmen selbst Software entwickeln, stellt sich schnell die Frage nach dem Einsatz von Containern. Doch was bringt die Technologie eigentlich? Wo liegen ihre Stolpersteine? Wohin gehen aktuell die Trends? Antworten gibt es von Matthias Stürmer und Oscar Meier von der Forschungsstelle Digitale Nachhaltigkeit der Universität Bern.

Welche Rolle spielen Container heute in der Softwareentwicklung?

Matthias Stürmer: Container-Technologien wie die Open-Source-Lösungen Docker und Kubernetes spielen in der modernen Softwareentwicklung eine sehr wichtige Rolle. Heute werden Applikationen basierend auf vielen existierenden Programmbibliotheken entwickelt, die je nach Zeitpunkt der Anwendungsentwicklung in unterschiedlichen Versionen eingesetzt werden. Container ermöglichen eine Abkapselung der Applikationen durch die Einbindung der benötigten Bibliotheken, sogenannten Libraries. So sind die einzelnen Anwendungen technisch unabhängig voneinander lauffähig. Dies beschleunigt die Fehlerbehebung und vereinfacht die Weiterentwicklung der Anwendungen. Die Container-Technologien sind hardwareunabhängig und ermöglichen eine parallele Ausführung mehrerer isolierter und sicherer Applikationen.

 

In welchen Bereichen der IT kommt die Container-Virtualisierung zum Einsatz?

Stürmer: Der Einsatz von Containern ermöglicht eine unkomplizierte parallele Ausführung von mehreren isolierten und skalierbaren Anwendungen. Die Container können auf effiziente Art und Weise erstellt und konfiguriert werden, was eine agile Zusammenarbeit zwischen Softwareentwicklung und Systemadministration ermöglicht. Deshalb wird diese Technologie hauptsächlich für Applikationen eingesetzt, die gleichzeitig auf derselben Hardware gehostet, häufig aktualisiert oder dynamisch skaliert werden müssen. Die Technologie wird auch oftmals verwendet, um Prozesse mit vertraulichen Daten isoliert und abgekapselt vom Betriebssystem durchzuführen.

 

Virtuelle Maschinen (VMs) gibt es schon lange. Wie unterscheiden sich Container von klassischen VMs?

Oscar Meier: Virtuelle Maschinen und Container sind etwas grundsätzlich Unterschiedliches. VMs emulieren Hardware, sodass mehrere komplette Betriebssysteme auf einer Hardware­plattform laufen können. Wenn Anwendungen auf mehreren VMs verteilt werden, braucht jede dieser VMs ein eigenes Betriebssystem, was in gewissen Fällen sinnvoll ist, aber auch zu mehr Wartungsaufwand und höherer Beanspruchung von Speicherplatz und Arbeitsspeicher führt.

 

Und Container?

Meier: Container hingegen virtualisieren das Betriebssystem, sodass mehrere Applikationen den selben Kernel verwenden können. Die sogenannten Container-Images sind auf dem Betriebssystem des Host-Systems gespeichert und stellen alle nötigen Dateien zur Verfügung, um diese Prozesse auszuführen. Dies braucht weniger Speicherplatz und Arbeitsspeicher, sodass Container in Sekundenschnelle gestartet und gestoppt werden können. VMs und Container sind bewährte Konzepte in einer modernen IT-Landschaft, die oftmals auch gleichzeitig zur Anwendung kommen: Auf einer einzigen Server-Hardware-Umgebung können mehrere VMs betrieben werden, auf denen wiederum jeweils mehrere Container laufen.

 

Warum sollten sich Unternehmen mit dem Thema auseinandersetzen?

Stürmer: Container-Technologien sind global schon heute weit verbreitet im Einsatz. Techgiganten wie Google, Microsoft und auch Amazon beteiligen sich aktiv an der Entwicklung dieser Open-Source-Technologien und bieten selbst Container-Cloud-Lösungen an. Dies führt dazu, dass Applikationen des Öfteren direkt als Container-Images ausgeliefert werden, die wiederum über sogenannte Microservices und einheitliche Schnittstellen (APIs) miteinander kommunizieren. Unternehmen sollten deshalb selbst eigene Container-Infrastrukturen warten können und gleichzeitig auch die Option prüfen, was sie auf externen Platform-as-a-Service-Umgebungen betreiben wollen.

Software-Entwicklung mit Containern war ein Schwerpunkt der Netzwoche-Ausgabe Nr. 08/2019. Alle Artikel aus dem Heft finden Sie hier.

 

Welche Vorteile bringt der Einsatz von Containern dem Business?

Stürmer: Wenn Unternehmen agile, sichere und dynamisch skalierbare Webprojekte offerieren, jederzeit flexibel auf die Kundenbedürfnisse eingehen und eine standardisierte und nachhaltige Betriebslösung anbieten möchten, sind Container-Technologien nicht mehr wegzudenken.

 

Wo liegen die Herausforderungen bei der Arbeit mit Containern?

Stürmer: Container lösen nicht alle Probleme in der Softwareentwicklung. Man muss weiterhin sauber und gut programmieren, denn die Container bilden nur die Hülle der Applikationen. Auch ist das Zusammenspiel zwischen den verschiedenen Containern eine Herausforderung. Wenn eine Applikation in mehreren Containern betrieben wird, muss besonders auf die Datenkonsistenz geachtet werden, also dass die Informationen korrekt verarbeitet werden.

 

Wie sieht es bei Kooperationen über Unternehmensgrenzen hinweg aus. Machen Container da Probleme? Oder sind sie hilfreich?

Meier: Container sind bezüglich Interoperabilität sehr vorteilhaft. "Dockerisierte" Applikationen können von unterschiedlichen Organisationen betrieben werden und über standardisierte Schnittstellen kommunizieren. Durch die Nutzung von Docker-Images können Prozesse einfach auf mehrere Organisationen verteilt werden. Wenn später einmal ein Wechsel ansteht, kann eine durch Docker virtualisierte Applikation relativ unkompliziert auf einen anderen Server migriert werden.

 

Welche Voraussetzungen bestehen auf Soft- und Hardwareseite?

Stürmer: Bezüglich Hardware ist Docker auf allen gängigen Servern einsetzbar. Softwareseitig braucht es eine der gängigen Linux-Distributionen. Theoretisch kann Docker auch auf Windows oder Mac betrieben werden, aber uns sind keine geschäftskritischen Systeme bekannt, die nicht auf Linux-Servern basieren. Sollen komplexe Applikationen mit vielen Docker-Anwendungen betrieben werden, braucht es eine Orchestrierung der Container, die etwa mit Kubernetes oder Openshift realisiert wird.

 

Container und DevOps gehen oft Hand in Hand. Warum ist das so?

Meier: Die einfache und ressourcenschonende Beschaffenheit der Container ermöglicht DevOps-Tools eine effiziente automatisierte Erstellung und Veröffentlichung dieser Container. Die Applikationen können in einem agilen Prozess schnell, sicher und flexibel auf eine neue Version aktualisiert werden. Die Container können isoliert und parallel auf dem Host ausgeführt werden, sodass die unterschiedlichen DevOps-Tasks der üblichen Pipeline (Testing, Staging, Production) voneinander unabhängig in eigenen Containern durchgeführt werden können. Die Pipeline erstellt dabei das Container-Image, lädt dieses versioniert auf die sogenannte Container-Registry und greift für die einzelnen Tasks auf dieses zurück. Über die Registry kann die veröffentlichte Version schnell und einfach zurückgesetzt werden, falls die Updates fehlerhaft sind. Das Prozessmanagement ist im Allgemeinen viel effizienter.

 

Wenn Sie Unternehmen, die auf Container setzen wollen, einen Rat geben müssten, wie würde dieser lauten?

Stürmer: Stellen Sie Personen ein, die sich entweder bereits gut mit Docker auskennen oder bilden Sie bestehende Mitarbeiter im Rahmen von Workshops und Weiterbildungen weiter, sodass sie sich die nötigen Skills aneignen. Denn Container-Technologien wie Docker und Kubernetes sind bereits heute und auch künftig die existenzielle IT-Infrastruktur für eine effiziente und professionelle Software­entwicklung.

 

Welche Entwicklungen prägen aktuell die Container-Welt?

Meier: Momentan ist die Open-Source-Container-Orchestrierung Kubernetes voll im Trend. Kubernetes überwacht die Konfigurationen und stellt sicher, dass die entsprechenden Container mit den Einstellungen in der definierten Anzahl ausgeführt werden. Eine schlanke Alternative zu Kubernetes bildet Dokku, eine Lightweight-Platform-as-a-Service-Lösung. Mit Dokku können Container direkt aus dem Source Code einer Applikation kreiert werden – ein sehr praktisches Tool, mit dem wir gute Erfahrungen an unserer Forschungsstelle gemacht haben.

 

Wie können die Entwickler davon profitieren?

Stürmer: Die Entwickler profitieren von einer intuitiven Schnittstelle zur Systemadministration. Sie können Aktualisierungen reibungslos und effizient auf den Server laden, ohne sich gross in diesem Bereich auskennen zu müssen: Der Inhalt der Container kann über ein einfaches Konfigurationsfile, das sogenannte Dockerfile, definiert werden. Die Entwickler können sich auf ihre Kernkompetenz, die Entwicklung, fokussieren und die Anwendungen und deren Updates mühelos online zugänglich machen.

 

Sind verschiedene Container-Lösungen untereinander kompatibel?

Meier: Heute wird primär die Open-Source-Plattform Docker verwendet, die auf Linux-Servern läuft. Die Docker-Images der Applikationen sind dabei mit allen Docker-Hosts kompatibel. Das ist sehr praktisch, weil dadurch der Betrieb von Applikationen einfach von einem Docker-Host auf einen anderen Docker-Betreiber verschoben werden kann.

 

Wie hängt die Architektur der Anwendung, zum Beispiel in Form von Microservices, mit dem Container-Prinzip zusammen?

Meier: Das Container-Prinzip begünstigt parallel laufende und isolierte Anwendungen. Aufgrund der vereinfachten automatisierten Systemadministration spielt es bezüglich Aufwand kaum mehr eine Rolle, ob die Applikation als eine Gesamtapplikation oder aufgeteilt in mehrere Microservices entwickelt wird. Letzteres reduziert die Komplexität und Fehleranfälligkeit der gesamten Anwendung und optimiert das Management. Dank Container-Technologien können solche Microservices und dazugehörige APIs effizient umgesetzt werden.

Webcode
DPF8_135994