Anwendersoftware wird seit vielen Jahren entweder auf "Bare-Metal-Systemen" oder auf einer virtuellen Maschine (VM) eingesetzt. Die erste Variante erfordert ein Betriebssystem, das die volle Kontrolle über die zugrundeliegende Hardware besitzt. Die zweite Möglichkeit benötigt ebenfalls ein Betriebssystem zur Steuerung der darunterliegenden Hardware, allerdings teilen sich hier mehrere Betriebssysteme die Hardware-Ressourcen.
Gravierende Nachteile der installierten Software auf dedizierten Computern mit einem festen Betriebssystem sind die mangelhafte Flexibilität - sie lässt sich nur sehr schwierig auf andere Systeme portieren - und die aufwendige Aktualisierung der Anwendungen inklusive der Laufzeitumgebungen. Diese zwei Einschränkungen machen es der IT schwer, flexibel auf Veränderungen der Geschäftsanforderungen zu reagieren.
Virtualisierung konsolidiert IT-Umgebungen
Mit der Virtualisierungstechnologie wird die starre monolithische IT-Struktur etwas aufgebrochen. Die Virtualisierungsplattformen, auch Hypervisoren genannt, ermöglichten es mehreren virtuellen Maschinen, sich ein einziges physisches System zu teilen. Dabei ahmt jede VM das Verhalten eines ganzen Systems mit eigenem Betriebssystem, Speicher und I/O isoliert nach. IT-Abteilungen können damit effektiver auf Änderungen der Geschäftsanforderungen reagieren, da sich VMs klonen, kopieren, migrieren und nach oben oder unten verschieben lassen, um den Leistungsbedarf der Anwendung beziehungsweise des Geschäftsprozesses zu decken oder entsprechend die Hardware- und Software-Ressourcen zu schonen.
Ein weiterer positiver Aspekt: Im Vergleich zur herkömmlichen IT-Infrastruktur reduzieren virtuelle Maschinen die IT-Kosten spürbar, da mehr VMs auf weniger physischen Maschinen konsolidiert werden können. Zudem lassen sich Legacy-Systeme, auf denen ältere Anwendungen laufen, in VMs umgewandelt und physisch außer Betrieb genommen werden, um die Kosten für die Wartung dieser Alt-IT zu sparen.
Allerdings stoßen auch virtuelle Maschinen an ihre Grenzen. VMs benötigen viel Systemspeicher (Gigabyte) und enthalten jeweils ein vollständiges Betriebssystem. Nur so können viele virtualisierte Anwendungen auf einem einzigen System konsolidiert werden. Die Bereitstellung einer VM dauert immer noch relativ lange - hat sich aber in den letzten Jahren ständig verbessert. Zudem ist die Portabilität von VMs eingeschränkt. Technologisch bedingt sind VMs ab einem bestimmten Punkt nicht mehr in der Lage, die Geschwindigkeit, Agilität und Einsparungen zu liefern, die schnelllebige Unternehmen verlangen.
So arbeitet ein Docker-Container
Container funktionieren ähnlich wie VMs, aber viel spezifischer und granularer. Sie isolieren eine einzelne Anwendung und ihre Abhängigkeiten - alle externen Softwarebibliotheken, die die Anwendung zum Ausführen benötigt - sowohl vom zugrunde liegenden Betriebssystem als auch von anderen Containern. Alle containerisierten Anwendungen teilen sich ein einziges, gemeinsames Betriebssystem, entweder Linux oder Windows, trotzdem sind sie voneinander und vom Gesamtsystem getrennt.
Das könnte Sie auch interessieren:
Container-Technologien vereinfachen das Testen verteilter IT-Systeme
Legacy-Anwendungen modernisieren – Docker in der Pole Position
Container versus Virtualisierung - Hypervisor-basierte Container - das Beste aus zwei Welten?
Die wichtigsten Vorteile von Docker und Containern
Docker ermöglicht eine effiziente Nutzung der Systemressourcen. Die Instanzen von containerisierten Anwendungen verbrauchen viel weniger Hauptspeicher als virtuelle Maschinen. Sie lassen sich schneller starten und stoppen und sie können viel dichter auf eine Host-Hardware gepackt werden. Das bedeutet eine hohe und effiziente Auslastung der Ressourcen und damit weniger Kosten auf der IT-Seite.
Zwar hängt die Kosteneinsparung von der Art der eingesetzten Apps und deren Ressourcenhunger ab, jedoch arbeiten Container im Gesamtkontext effizienter als virtuelle Maschinen. Darüber hinaus ist es möglich, Kosten für Softwarelizenzen zu reduzieren, da Container-Anwendungen in der Regel viel weniger Betriebssysteminstanzen benötigen, um den gleichen Workload abzudecken.
Schnelle Softwarelieferzyklen
Um dem steigenden Wettbewerb standzuhalten, müssen Unternehmen schnell auf veränderte Businessbedingungen reagieren. Dies betrifft auch ihre IT und insbesondere die Business-Software. So sollten die Anwendungen bedarfsgerecht skalierbar sein. Außerdem sollten sie sich jederzeit flexibel um neue Funktionen erweitern lassen.
Hier kann die Struktur der Docker-Container-Technologie helfen. Sie machen es einfach, neue Softwareversionen mit neuen Geschäftsfunktionen schnell zu implementieren und diese in die Produktion einfließen zu lassen. Zudem erlaubt sie in der Entwicklungsphase oder in kritischen Laufzeitumgebungen ein schnelles Fallback auf eine frühere Version. Die Technologie eignet sich daher besonders für die Umsetzung von Strategien wie Blue Green Deployments.
Portabilität von Anwendungen
Abhängig vom Einsatzort sind für eine Unternehmensanwendung zwei Faktoren essentiell: Wenn sie im nahen Unternehmensbereich sicher eingesetzt werden soll, muss sie hinter einer Firewall geschützt werden. Soll dagegen die Anwendung in einer Public Cloud verfügbar sein, muss sie über eine einfache öffentliche Zugriffsmöglichkeit verfügen und eine hohe Flexibilität in puncto Ressourcen besitzen.
Da Docker-Container alles, was ein Programm zum Ausführen benötigt, kapselt, können Anwendungen problemlos zwischen verschiedenen Umgebungen ausgetauscht werden. Jeder Host mit installierter Docker-Laufzeitumgebung, sei es ein Entwickler-Laptop oder eine Public-Cloud-Instanz, kann somit einen Docker-Container sicher ausführen.
Geeignet für Microservices-Architekturen
Die leichten, portablen und in sich geschlossenen Docker-Container erleichtern die Entwicklung jeglicher Art von Software. Ein entscheidender Vorteil dieser Technologie ist: Da es keine Legacy-Abhängigkeiten gibt, muss man nicht Anwendungen, die Probleme von morgen lösen sollen, mit den Entwicklungstools von gestern umsetzen.
Microservices ist eine Technologie, die quasi ein Entwurfsmuster für containerbasierte Anwendungen darstellt, da sie aus vielen lose gekoppelten Komponenten besteht. Durch die Zerlegung traditioneller, "monolithischer" Anwendungen in separate Dienste ermöglichen Microservices die Skalierung, Modifikation und Wartung der verschiedenen Teile dieser Anwendung - unabhängig von den Benutzern und vom Zeitpunkt. Das heißt, wer und wann zum Beispiel ein Software-Update bekommt, hängt einzig von den Anforderungen des Unternehmens ab.
Wichtig: Man benötigt keine Container, um Microservices zu implementieren, aber Container sind perfekt auf den Ansatz der Microservices und auf die agilen Entwicklungsprozesse abgestimmt.
Docker löst keine Sicherheitsprobleme
Wie bei jeder neuen Software-Technologie gilt auch für Docker-Container: Sie sind keine Wunderwaffe und können alleine nicht jedes Problem lösen. Zwar kann Software in einem Container standardmäßig sicherer sein als Software, die auf einem Bare-Metal-System läuft. Allerdings ist diese Sicherheit trügerisch, denn sie sagt nichts über die Sicherheitsstandards außerhalb des Docker-Containers, beziehungsweise dessen Umgebung aus. Selbstverständlich können Container einer Anwendung eine zusätzliche Sicherheitsebene hinzufügen, aber nur als Teil eines allgemeinen Konzeptes zur Sicherung einer Anwendung im Gesamtkontext.
- 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.
Docker verwandelt Anwendungen nicht in Microservices
Wenn man eine vorhandene Anwendung in einen Container packt, kann dies den Ressourcenverbrauch reduzieren und die Bereitstellung erleichtern. Aber diese Technologie ändert nicht die Struktur der Anwendung oder die Interaktion mit anderen Apps, wie es Microservices tun. Die Eigenschaft Anwendungen in Microservices umzuwandeln, muss zudem der Entwickler von Grund auf in die Wiege der Anwendung legen, sie lässt sich nicht einfach mittels Container-Technologie substituieren. Verschiebt man zum Beispiel eine monolithische oder SOA-ähnliche Anwendung in einen Container, erhält man eine gewöhnliche App mit identischem Funktionsumfang, nur in einem Container verpackt.
Kein Ersatz für virtuelle Maschinen
Ein hartnäckiger Mythos von Containern ist, dass sie virtuelle Maschinen obsolet machen. Viele Anwendungen, die früher in einer VM liefen, können in einen Container verschoben werden. Das bedeutet aber nicht automatisch, dass es immer sinnvoll ist. Wenn etwa ein Unternehmen eine Anwendung mit hohen regulatorischen Sicherheitsstandards nutzt, ist es nicht ohne weiteres möglich, die Anwendung von einer VM in einen Container zu migrieren, da VMs eine höhere Isolationssicherheit besitzen als Container.
Use-Case für Docker-Container
Die Unternehmens-IT wird oft als Hemmschuh gesehen, wenn es um Innovationen geht, da sie oft im Hintergrund arbeitet und nur langsam auf Veränderungen reagiert. Entwickler in den Fachabteilungen scheuen sich vor solchen Einschränkungen, die ihnen die IT auferlegt. Mit der Docker- und Container-Technologie erhalten die Entwickler mehr Freiheit. Zusätzlich bietet sie gleichzeitig Möglichkeiten, Business-Apps zu erstellen, die schnell auf sich ändernde Geschäftsbedingungen reagieren.
Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation InfoWorld.