So erleichtern Container die Software-Entwicklung

Ein Blick hinter die Kulissen

Container bieten Entwicklern eine effiziente Methode, um in kurzer Zeit Applikationen zu erstellen und im Rechenzentrum vor Ort oder in Cloud-Umgebungen zu betreiben. Das Fundament für Container bildet das Linux-Betriebssystem, aber auch unter Windows und MacOS lassen sich Container nutzen.

Hand schiebt Theatervorhang zur Seite

Ein Blick hinter die Kulissen zeigt, wie die sogenannte "Containerisierung" von Anwendungen funktioniert.

Bei der Containerisierung paketieren Entwickler eine konfigurierte Applikation mit allen ihren Abhängigkeiten in einer kompakten, portablen und cloud-fähigen Sandbox. Eine „containerisierte“ Anwendung lässt sich, unter Beibehaltung der gesamten Funktionalität, zwischen Entwicklungs-, Test- und Produktionsumgebung verschieben. Die Containerisierung zeichnet sich durch zwei Aspekte aus: erstens durch ein Standardformat, das die Portabilität von Containern sicherstellt, und zweitens durch eine Standardmethode für den Betrieb von Applikationen.

Breite Auswahl an unterstützten Sprachen

Der Vorteil für Entwickler: Sie können die ihnen vertraute Entwicklungsumgebung und Programmiersprache verwenden, egal, ob Eclipse, C, C++, C#, Java oder andere weit verbreitete Sprachen. Die Vorteile dieser Wahlmöglichkeit zeigen sich bei der Kombination von Containern und dem Architekturmodell von Microservices, bei dem neue oder bereits vorhandene Applikationen in fachlich abgeschlossene Teile untergliedert werden. Darüber hinaus sind Container im Vergleich zu virtuellen Maschinen leichtgewichtig und kompakt. Sie sind damit hervorragend geeignet, eine Applikation inklusive Konfigurationseinstellungen und Abhängigkeiten von einer Entwicklungsumgebung über die verschiedenen Test- und Integrationsstationen schließlich in den produktiven Betrieb zu überführen. Optimal ausgestattet sind Entwickler, wenn sie diesen Prozess mit Praktiken wie Continuous Integration (CI) und Continuous Delivery (CD) automatisieren.

Im Unterschied zu virtuellen Maschinen sind Container „immutable“. Das heißt, die Entwickler müssen also nicht mit „unbemerkten“ Veränderungen durch Eingriffe von Administratoren im laufenden Betrieb rechnen. Vielmehr können sie davon ausgehen, dass eine bestimmte Version der Container, die in der Testumgebung erfolgreich überprüft wurde, auch genau so in der Produktivumgebung arbeitet. Zudem sind Entwickler mit Containern in der Lage, eine klare Trennung gegenüber der Infrastruktur, auf der die Container laufen, aufrechtzuerhalten. Für ein ordnungsgemäßes Funktionieren spielt es kein Rolle, ob die Container-Anwendung im Rechenzentrum vor Ort auf eigener Hardware oder in einer Public Cloud läuft. Unternehmen können sich frei entscheiden, in welcher Umgebung sie die Container einsetzen. Abhängig von den jeweiligen Anforderungen verschieben sie die Container-Anwendung vom eigenen Rechenzentrum in eine Public Cloud oder auch wieder zurück.

Die Container verwalten

Zur Orchestrierung und Verwaltung von Containern steht beispielsweise Kubernetes bereit. Entwickler und der IT-Betrieb nutzen die umfangreichen Funktionen des Tools für die Automatisierung der Implementierung, der Skalierung und der Verwaltung containerisierter Anwendungen. Der IT-Betrieb verwaltet damit Container über mehrere Hosts hinweg, er kann Hardware-Ressourcen, die für die Ausführung von Unternehmensanwendungen benötigt werden, effizienter zuweisen sowie die Aktualisierung und Provisionierung von Applikationen steuern und automatisieren. Zudem bietet Kubernetes Funktionen zur Skalierung von Containern und den zugehörigen Ressourcen. Dazu kommen Möglichkeiten zum Aufbauen von Storage und der Ausführung von Stateful-Applikationen.

In der Linux-Welt gibt es Container-Technologien schon seit vielen Jahren, allerdings führten sie lange Zeit eher ein Nischendasein. In den letzten Jahren haben sie sich zu einem Schlüsselfaktor für die Implementierung von Applikationen weiterentwickelt. Im Zentrum stehen dabei Linux-Container auf Basis des Open-Container-Initiative-Formats (OCI), das von allen bedeutenden IT-Unternehmen unterstützt wird. Als Weiterentwicklung des Docker-Formats hat sich das OCI-Container-Format heute als Industriestandard etabliert und steht unter Schirmherrschaft der Linux Foundation.

Optionen für die Containerisierung von Applikationen

Viele Unternehmen haben bereits erste Erfahrungen mit Containern gesammelt. Oft sind die IT-Abteilungen dabei den Weg gegangen, Container bei der Entwicklung einer neuen „stateless“ und nicht allzu komplexen Web-Applikation einzusetzen. In der nächsten Phase haben die Entwickler die Applikation für weitere Nutzergruppen im Unternehmen geöffnet und funktional erweitert. Wenn sich die Zahl der Container auf einige dutzend vergrößert, befassen sich die Entwickler zusätzlich mit CI und CD, dem automatischen Testen und dem Einsatz von Kubernetes.

In einigen Fällen gehen die Verantwortlichen strategisch vor und analysieren ihren aktuellen Bestand an Applikationen und die geplanten Neuentwicklungen. Bei einigen Kandidaten scheidet eine Containerisierung von vornherein aus: Wenn Anwendungen bald das Ende ihres Lebenszyklus erreichen und entfernt werden, wenn aktuelle Standardsoftware durch eine neue Version oder einen Software-as-a-Service ersetzt wird oder wenn Applikationen zu eng mit anderen Anwendungen verzahnt sind und die Entflechtung enorme Kosten verursachen würde.

Abgesehen von der Neuentwicklung, bei der in der Mehrzahl der Fälle Container gefordert sind, gibt es drei unterscheidbare Anwendungsszenarien für den Container-Einsatz: Bei „Lift and Shift“ (auch als Rehosting bezeichnet) verpacken Entwickler eine vorhandene Applikation – ohne weitere Modernisierung – mit so wenig Änderungen wie möglich in einen Container, migrieren sie beispielsweise in die Cloud und betreiben sie dort. Bei „Lift and Reshape“ (auch als Replatforming bezeichnet) ermitteln Entwickler, welche Teile der Applikation von der Container-Technologie profitieren, überarbeiten diese durch eine Überführung in Microservices und bauen einen API-Layer zur Kommunikation ein. Die meisten Ressourcen beansprucht eine grundlegende Modifikation des Programmcodes auf Basis einer neuen Microservices-Architektur – auch als Refactoring bezeichnet. Der Aufwand ist allerdings nur dann gerechtfertigt, wenn sich daraus ein sehr großer, nachhaltiger Nutzen ergibt.

* Der Autor Matthias Pfützner ist Senior Solution Architect, Account und Cloud (DACH) bei Red Hat.

Bildquelle: Getty Images Plus/iStock

©2019Alle Rechte bei MEDIENHAUS Verlag GmbH

Unsere Website verwendet Cookies, um Ihnen den bestmöglichen Service zu bieten. Durch die weitere Nutzung der Seite stimmen Sie der Verwendung zu. Weitere Infos finden Sie in unserer Datenschutzerklärung.

ok