Die Container-Technologie gewinnt immer stärker an Bedeutung. Obwohl die Container-Idee nicht neu ist, hat sie mit dem Aufkommen neuer Technologien zunehmend an Geltung gewonnen. Heute muss sich nahezu jeder größerer Softwarehersteller mit Container-Technologien befassen.
Zu den zentralen Merkmalen von Containern zählen die Isolierung der Laufzeitumgebung und die Ressourcenkontrolle. Mittlerweile gibt es das standardisierte Open-Container-Format. Vorbild dafür sind die seit den 1950er-Jahren gebräuchlichen Industrie-Container. Sie sind standardisiert und genormt und werden zum Gütertransport per Schiff oder Lkw genutzt. Dieser Ansatz hat sich heute auch in der Anwendungsentwicklung etabliert.
- Einbindung ins Rechenzentrum
Um ihre volle Wirkung entfalten zu können, muss es möglich sein, Container in die bestehende IT-Infrastruktur des Unternehmens mit ihren Services einzubetten - seien es beispielsweise Security-, Authentisierungs- oder Netzwerk-Dienste. - VM-Management statt Chaos
Die IT-Verantwortlichen müssen einen Weg finden, ihre virtuellen Maschinen (VM) übersichtlich zu verwalten und die Kunden trotzdem parallel mit den benötigten Services zu versorgen. - Skalierbarkeit
Die heutige, hochdynamische Unternehmens-IT macht es erforderlich, dass Unternehmen ihre Container-Technlogie und die Kapazitäten zur Bereitstellung an die Anwender programmatisch skalieren können. - Orchestrierung
Unternehmen müssen mehrere Container miteinander kombinieren, Container mit anderen Applikationen kombinieren und die Kommunikation zwischen Containern und anderen IT-Ressourcen ermöglichen. Um all das zu erreichen, müssen die Container auch in einer Umgebung entwickelt werden, die diesen Mix aus Technologien und Rechenkapazitäten abbildet. - Legacy-Systeme beachten
Container müssen nicht nur mit den neuesten Anwendungen und Systemen im Unternehmen harmonieren, sondern auch die Altsysteme berücksichtigen.
Die Stärke von Containern ist die Kapselung von Applikationslogik. Die nächste Entwicklungsstufe in Richtung Vereinfachung und Standardisierung zeichnet sich bereits ab. Im Laufe der Zeit werden sich Applikationen, die aus großen, komplexen Codeblöcken bestehen, in kleinere, unabhängig voneinander implementierbare Konstrukte - sogenannte Microservices - verwandeln. Container gelten weithin als Schlüsseltechnologie, die den Übergang zu Microservices ermöglichen.
Die Entwickler können sich mit Containern ihre virtuelle Server-Umgebung auf Basis von einfach zu erzeugenden Microservices selbst erstellen und sie sind dabei nicht mehr auf die Kollegen vom IT-Betrieb angewiesen. Damit wird eine vereinfachte Abstimmung zwischen der Applikationsentwicklung und dem IT-Betrieb möglich. Im Ergebnis führt dies zu kürzeren Testzyklen, einer höheren Softwarequalität und einem vereinfachten Applikations-Management. Container-Technologie schafft nach und nach die Voraussetzungen für eine schnellere Bereitstellung von Applikationen.
Gleichzeitig mit der Verbreitung der Container-Technologie in den Unternehmen erwarten IT-Administratoren eine Funktionalität, wie sie diese aus virtualisierten Umgebungen gewohnt sind. Eine der wichtigsten Anforderungen ist persistenter Storage. Lange Zeit gab es jedoch keine überzeugende Lösung, um Applikationsdaten über den gesamten Lebenszyklus eines Containers zu speichern.
Flüchtiger, lokaler Speicher reicht nicht aus. Zustandsbehaftete (stateful) Applikationen erfordern jedoch, dass Daten auch über den Lebenszyklus eines Containers hinaus verfügbar sind. Zwar erfüllen Cloud-Storage-APIs diese Anforderungen, aber nicht jeder will seine Anwendungen auf Cloud-APIs umschreiben und nicht jeder will oder darf seien Daten in der Cloud speichern.
Mit einer eingebauten Hardwareunabhängigkeit und Flexibilität wird Software Defined Storage (SDS) den Herausforderungen besser gerecht. Software Defined Storage lässt sich in physischen Umgebungen, virtualisiert und in der Cloud einsetzen und zwar wesentlich einfacher als traditionelles monolithisches Storage. Es unterstützt sowohl gängige Storage-APIs, wie zum Beispiel POSIX, als auch Block und Object Storage. Um persistente Daten für Applikation-Container bereitzustellen, lassen sich zwei Optionen unterscheiden: Shared Storage und Storage-Container.