Eine sich immer schneller verändernde Business-Welt hat auch Auswirkungen auf die zugehörige IT-Landschaft und den dazugehörigen Anforderungen. Es ist notwendig, dass die IT-Landschaft zügig den Anforderungen aus dem Business gerecht zu werden, sodass kein Nachteil am Markt entsteht.
Schnelleres Deployment
Durch eine Containerumgebung ist es möglich, das Deployment zu beschleunigen. Das setzt voraus, dass man auf eine Microservice-Architektur zurückgreifen kann, was häufig dazu führt, dass die prozessualen und funktionalen Abhängigkeiten sowie Verantwortlichkeiten innerhalb eines Unternehmens geändert werden sollten. Microservices sind für eine bestimmte Aufgabe geschaffen und kleinteilig, weshalb sie sich sehr gut für Container eignen. Außerdem beinhaltet ein Container all seine Abhängigkeiten, wodurch weitreichende Überprüfungen auf Kompatibilität hinfällig werden.
Durch die Zusammenarbeit zwischen einer CI-/CD-Pipe, einer automatisierten Bereitstellungskette und flexiblen Microservices, verpackt in Containern, ist ein kürzerer Release-Zyklus bei gleichbleibender oder sogar verbesserter Qualität möglich.
Aus der Kleinteiligkeit ergibt sich, dass Container schneller deployed werden können.
Skalierbarkeit
Container können hinsichtlich der Skalierbarkeit eine wichtige Rolle spielen. Denn wie bereits oben beschrieben, sind diese wesentlich kleinteiliger und flexibler im Gegensatz zu großen komplexen Anwendungsarchitekturen. Da kleinteilige Container beliebig oft auf einem Betriebssystem lauffähig sind, eignen sie sich besonders für Systeme, welche flexibel hinsichtlich ihrer Skalierbarkeit sein sollen. Aus dem kleinen Format der Container ergeben sich des Weiteren schnelle Boot-Zeiten – innerhalb kürzester Zeit ist ein Container einsatzfähig. Das können im Vergleich zu Containern nur wenige virtuelle Systeme.
So können z. B. während Stoßzeiten mehrere identische Container gestartet werden, um die Last abzufangen und die Antwortzeiten performant zu halten.
Selbst große Container-Setups können problemlos mit Orchestrierungssystemen wie Docker Swarm, Apache Mesos oder Google Kubernetes verwaltet werden. Diese Systeme verteilen die Container auf Grundlage vorgegebener Regeln über die vorhandene Hardware und überwachen diese.
Kostenersparnis
Mit dem Vorteil der Skalierbarkeit geht außerdem eine Kostenersparnis hervor. Dadurch, dass man bedarfsgerecht und schnell Container hochfahren kann, spart man sich die Kosten, die sich sonst durch den Dauerbetrieb mehrerer virtuellen Maschinen ergeben. Diese sind aber häufig nicht voll ausgelastet und verursachen daher unnötig kosten. Umgekehrt können unausgelastete Container einfach heruntergefahren werden.
Gerade bei eCommerce-Online-Plattformen stellt sich dieser Vorteil heraus. Abends, wenn die Kund:innen zuhause sind, steigt die Last auf die Systeme durch Browsen im Shop und daraus resultierenden Bestellungen. Dabei können einfach weitere Container hochgefahren werden, sodass die Antwortzeiten gering bleiben und somit das Einkaufserlebnis positiv bleibt.
Verfügbarkeit und Ausfallsicherheit
Hinsichtlich der Verfügbarkeit und Ausfallsicherheit sind Container im Vorteil gegenüber komplexen Anwendungsarchitekturen. Sobald die darunterliegende Infrastruktur, auf dem der Container läuft, abstürzt oder nicht länger verfügbar ist, kann sofort ein neuer Container auf einem anderen Host oder Betriebssystem hochgefahren werden und dorthin geroutet werden. Somit kann man eine, basierend auf Container designte Applikation als hochverfügbar bezeichnen, vorausgesetzt eine hochverfügbare Anwendungsarchitektur berücksichtigt wurde. Im Vergleich dazu würde ein komplexe Anwendungsarchitektur bei einem Ausfall mehrere Minuten benötigen, um einsatzfähig zu sein bzw. einen Neustart hervorzurufen.
Ein Stromausfall oder ein Hochwasser kann dazu führen, dass ein Rechenzentrum eines eCommerce-Online-Plattformanbieters ausfällt. Die Services des Rechenzentrums sollen aber dennoch verfügbar bleiben, weshalb häufig auf ein anderes Rechenzentrum ausgewichen wird. Dort kann die Last, welche auf dem ausgefallenen Rechenzentrum ist, abgefangen werden, indem dort neue Container hochgefahren werden und der Datenverkehr an dieses Rechenzentrum umgeleitet wird. Container bieten dabei eine wesentlich schnellere Reaktionszeit.
Kompatibilität
Die Container Engine ist auf jedem Computer lauffähig. Zudem beinhalten die Container alle nötigen Abhängigkeiten, um gestartet werden zu können. Dadurch, dass diese Unabhängigkeit besteht und Container in völlig identischer Form auf verschiedenen Engines laufen können, sind Aussagen, dass es aber auf dem anderen System funktioniert hat, hinfällig.
Im Vergleich dazu sind komplexe Anwendungsarchitekturen meist für einzelne Betriebssysteme zugeschnitten, um auf deren Technologien zurückgreifen zu können.
Voraussetzungen
Trotz aller Vorzüge bringen Container gewisse Voraussetzungen mit sich. Nicht jede Anwendung ist von Grund auf für Container geeignet, bzw. kann die Vorteile der Container ausschöpfen. Darunter fällt zum einen die Anwendungsarchitektur, welche häufig in von einer Großarchitektur in eine Microservice-Architektur überführt werden sollte.
Um Testaufwände der kleinteiligen Container zu optimieren, sollte man eine CI-/CD-Pipeline im Unternehmen etablieren.
Für ein Unternehmen stellt sich damit auch die Herausforderung, das Wissen im Unternehmen aufzubauen und zu etablieren, um einen sicheren und zuverlässigen Betrieb zu gewährleisten.
Technisch gesehen, muss zudem gewährleistet sein, dass sich Container im Laufe eines Gesamtprozesses die gleichen Systembibliotheken und den gleichen Kernel teilen, da es sonst zu Kompatibilitätsproblemen kommen kann. Aus Sicht der Sicherheit oder von Softwarefehlern können Container auch problematisch sein, weil die gleichen Container aus demselben (fehlerhaften) Image erzeugt werden.