Warum Container-Technologie?
Software existiert nicht in Isolation. Anwendungen benötigen nicht nur Computer, um zu laufen, sondern auch eine ganze Reihe anderer Dinge; zumindest lassen sie sich in zwei Worten zusammenfassen: Abhängigkeiten und Konfiguration.
Um eine Anwendung in der Produktion einzusetzen, muss also nicht nur der Quellcode installiert werden, sondern auch sichergestellt werden, dass eine Vielzahl von Komponenten, Bibliotheken, Frameworks, Sprachlaufzeiten, Konfigurationsdateien und viele andere Komponenten ordnungsgemäss installiert, konfiguriert und einsatzbereit sind. Diese Komplexität variiert von Programmiersprache zu Programmiersprache, aber selbst die kleinste Anwendung kann scheitern, wenn ihre Anforderungen nicht richtig erfüllt werden.
Die Komplexität der Einrichtung der richtigen Umgebungen für die Ausführung von Software, gepaart mit den zunehmenden Einsatzrhythmen unserer modernen Geschäftswelt, hat die Branche in den letzten 20 Jahren dazu veranlasst, innovative Lösungen zu entwickeln. Von Java-Archiven über Konfigurationsmanagementsysteme wie Puppet oder Ansible bis hin zu virtuellen Maschinen – Ingenieure haben immer wieder versucht, dieses Problem zu lösen.
Die neueste und wahrscheinlich bahnbrechendste dieser Innovationen ist die Containertechnologie.
Der Container-Durchbruch
In Anlehnung an die Idee der Schiffscontainer, die im 20. Jahrhundert erfunden wurden, um das Jahrtausende alte Problem des Gütertransports nach Übersee zu lösen, ermöglicht die Containertechnologie heute, dass Anwendungen nahtlos von einem Laptop auf einem Hyperscaler, von einem IoT-Gerät auf einem Grossrechner laufen, ohne Änderungen und ohne zusätzliche Komplexität. Ziehe einfach den Container aus seiner Registrierung und führe ihn aus.
Ein Container kapselt alles, was eine Anwendung zum Laufen braucht: ihre Binärdateien oder ihren Quellcode, aber auch ihre Abhängigkeiten und sogar ihre Konfiguration. All diese Informationen sind in einem einzigen Paket verschlüsselt, das vom grössten Cloud-Anbieter bis zum kleinsten Computer, den du dir vorstellen kannst, geteilt und ausgeführt werden kann.
Der Container-Vorteil
Die Containertechnologie bietet eine Umgebung der Wahl für die Ausführung von Anwendungen:
- Sie sind schnell, weil sie nicht den Overhead einer kompletten virtuellen Maschine benötigen, um zu laufen.
- Sie sind leichtgewichtig, weil sie nur eine einzige Anwendung und ihre Abhängigkeiten kapseln und sonst nichts.
- Sie können so konfiguriert werden, dass sie nur die benötigte Menge an Ressourcen des Host-Rechners in Anspruch nehmen, vom Festplattenspeicher über das Netzwerk und den Arbeitsspeicher bis hin zur CPU-Zeit.
- Sie bieten eine sichere Umgebung, aus der es praktisch unmöglich ist, zu entkommen, und verringern so die Angriffsfläche für kompromittierte Systeme.
Zusammenfassend lässt sich sagen, dass die Container-Technologie den perfekten Baustein für Microservice-Anwendungen darstellt, die auf Kubernetes laufen.