Containerisierung einfach erklärt
In der Softwarebereitstellung bedeutet Containerisierung, Anwendungen in sogenannten Containern zu isolieren. Die in Images verpackten Anwendungen umfassen alles, was für das Ausführen der Anwendung erforderlich ist: Software-Code, Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Das Besondere ist, dass sie vom restlichen Betriebssystem getrennt sind und ihre eigene Umgebung haben. Dadurch sind sie auf verschiedenen Computern oder Servern ohne Kompatibilitätsprobleme lauffähig - ganz gleich, ob diese auf MacOS, Windows oder Linux-OS laufen.
Einsatzgebiete
Die Containerisierung wird vor allem bei Cloud-Anwendungen eingesetzt. Dank der einfachen Skalierbarkeit der Anwendungen und der effizienten Ressourcennutzung wird sie von kleinen Start-ups bis hin zu großen Unternehmen gerne eingesetzt. Besonders nützlich ist Containerisierung jedoch bei der Entwicklung von Microservices, bei denen Anwendungen in kleinere, unabhängige Teile aufgeteilt werden.
Sie ist aber nicht nur Bestandteil in der Softwarebereitstellung (also das hosten im Internet), sondern auch Teil des Entwicklungsprozesses. Entwickler-Teams setzen auf Container, um sicherzustellen, dass Apps auf jedem Computer gleich ausgeführt werden. Wenn Entwickler A auf einem MacBook mit MacOS arbeitet, Entwickler B aber auf einem Windows-PC, werden so Kompatibilitätsprobleme automatisch eliminiert. Das ist wichtig zur Fehlervermeidung, da sichergestellt wird, dass jeder Programmierer den gleichen Zustand einer Anwendung wiederfindet und ausführt.
Technologien hinter der Containerisierung
Die wohl bekannteste und am weitesten verbreitete Technologie im Bereich der Containerisierung ist Docker. Schaut man sich das Logo der Firma an, wird auch schnell klar, weshalb wir hier von Containerisierung sprechen:
Aber viel mehr zeigt es, dass diese Container gemeinsam "geshipped" werden - also ausgeliefert bzw. bereitgestellt. Umgangssprachlich sprechen Entwickler deshalb auch von shippen, wenn sie etwas released haben.
Die Docker-Plattform bietet das Erstellen, Verteilen und Ausführen von Containern und damit einen Standard für Containerformate und -operationen gesetzt.
Kubernetes: Orchestrierung von Containern
Für komplexere Anwendungen, die aus mehreren Containern bestehen, kommt oft Kubernetes zum Einsatz. Kubernetes ist API-basiert und stellt mit seinem System eine automatisierte Bereitstellung, Skalierung und Verwaltung von Containeranwendungen zur Verfügung. Die Containerorchestrierung sorgt z.B. dafür, dass Anwendungen auch bei hohem Besucheraufkommen zuverlässig laufen.
Kubernetes, oder auch nur K8s, wird hauptsächlich zum Cloud-Hosting genutzt. 2014 ursprünglich von Google entwickelt, wird es von verschiedenen Anbietern angeboten, darunter Amazon mit AWS, Google mit seiner Google Cloud Platform selbst, sowie Microsoft mit Azure und zahlreiche Weitere.
Containerisierung vs. traditionelle Virtualisierung
Im Vergleich zur traditionellen Virtualisierung hat Containerisierung einige signifikante Vorteile: Während Virtualisierung auf der Simulation einer kompletten Hardware durch einen Hypervisor basiert, arbeitet Containerisierung auf Betriebssystemebene. Container starten außerdem schneller und benötigen weniger (physische) Ressourcen als virtuelle Maschinen.
Praktische Anwendungsfälle
Durch den Einsatz von Containern können ein SaaS-Plattformen und Unternehmen Anwendung in einer kontrollierten, konsistenten Umgebung entwickeln, testen und bereitstellen. Abläufe werden fließender und wiederkehrende Fehler werden eliminiert.
Empfehlenswert ist die Anwendung von Containerisierung unserer Meinung nach immer. Denn so oder so arbeiten die meisten Entwickler, wie auch wir, mit Containern. Es bietet sich deshalb an, das Ökosystem auch weiter auf Staging- und Produktivsysteme der Zielumgebung auszubauen.
Denn der Zusatzaufwand ist nicht groß: Die meisten Entwickler haben bereits Vorlagen, sogenannte Dockerfiles, für gängige Frameworks und Software, um auch bestehende Anwendungen schnell zu containerisieren. Falls nicht, kann eine solche Konfigurationsdatei erstellt werden. Einmal erstellt, muss sie im Projektverlauf nur noch selten angepasst werden.
Vorteile der Containerisierung
Mit ihrer Effizienz, Portabilität und Konsistenz sind Container unschlagbar, wenn es um Softwareentwicklung und -bereitstellung geht. Durch die Isolation der Anwendungen in Containern werden Konflikte zwischen verschiedenen Softwareumgebungen vermieden.
Die dadurch erlangte Zuverlässigkeit und Agilität vereinfacht die Softwareentwicklung sowie das Deployment (Bereitstellung) erheblich.
Weitere Begriffe.
Begriffe aus der Softwareentwicklung verständlich erklärt.