Zdenk Kluka - stock.adobe.com
Cloud-Anwendungen auf die Migration in Container vorbereiten
Der Umzug von Anwendungen in Container erfordert teilweise gravierende Änderungen an der Architektur der Applikationen. Welche Punkte sollten Unternehmen dabei besonders beachten?
Die Verwendung von Containern wird eine immer beliebtere Variante beim Hosting von Enterprise-Anwendungen. Bevor Sie ihre Applikationen jedoch umziehen, sollten Ihre Entwicklungs-Teams sie erst vorbereiten. Das trifft auch auf Ihre Anwendungen zu, die sich bereits in der Cloud befinden. Nur auf diese Weise können Sie auch wirklich alle Vorteile von Containern nutzen.
Im Vergleich zu vollwertigen VMs (virtuellen Maschinen), sind Container weit leichtgewichtiger. Sie verursachen weniger Overhead und benötigen zudem weniger Platz auf den Festplatten. Das sorgt dafür, dass Container auf einer Plattform weit effizienter laufen, als es mit VMs möglich wäre.
Um von diesen Vorteilen jedoch profitieren zu können, sollten sich Unternehmen von der bisher meist vorherrschenden monolithischen Architektur ihrer Anwendungen verabschieden und sich auf ein serviceorientiertes Modell ausrichten. So müssen etwa bereits in der Cloud genutzte Anwendungen modularer und mit niedrigeren Ansprüchen teilweise neu aufgebaut werden. Dabei sollten Abhängigkeiten reduziert oder isoliert, alter Code entfernt und Flaschenhälse bei der Verarbeitung von Daten identifiziert und entfernt werden. Das trifft insbesondere dann zu, wenn sie eine parallele Ausführung von Prozessen verhindern.
Eine servicebasierte Architektur macht es zudem leichter, Container mehrfach zu verwenden und eine Anwendung nur dann zu skalieren, wenn es auch wirklich nötig ist. Das Load Balancing für eine eng miteinander verknüpfte, monolithische Anwendung ist nämlich weit aufwändiger, als wenn Sie auf einen ansteigenden Traffic mit weiteren Containern reagieren können. In diesem Fall müssen Sie Prozesse, die momentan keine zusätzliche Belastung erfahren, auch nicht nach oben skalieren.
Erstellung von Code-basierten Manifesten
Die meisten Entwicklungsteams konfigurieren Container in der Regel mit Manifesten auf Basis des verwendeten Codes. In ihnen steht, welche Pakete ein bestimmter Container benötigt und welchen Code er nutzen soll. Die Manifeste für die Container lassen sich etwa mit einem System zur Versionskontrolle verwalten. Dadurch können sie mit inkrementellen Updates genau an die jeweiligen aktuellen Bedürfnisse und Anforderungen angepasst werden. Der Aufwand und die Kosten für diesen Prozess sind im Vergleich zu dem Aufwand bei Legacy-Anwendungen minimal.
Wenn ein Unternehmen eine Migration von Cloud-basierten Anwendungen in Container plant, sollte es ein Manifest vorbereiten, das seine bisherige Hosting-Architektur so gut wie möglich abbildet. Auf diese Weise erhält es eine belastbare Plattform für künftige Änderungen.
Das Management von Containern in der Cloud versus On-Premises
Obwohl es in diesem Artikel vor allem darum geht, wie Cloud-basierte Anwendungen auf Container vorbereitet werden können, gibt es noch einen weiteren wichtigen Punkt, der zu beachten ist: Die Verwaltung von Containern in der Cloud und On-Premises unterscheidet sich. So bieten viele Cloud-Provider bereits vorkonfigurierte Funktionen für zum Beispiel die Orchestrierung von Containern, für das Load Balancing und für den Object Storage. On-Premises sieht das in der Regel anders aus. Hier müssen Unternehmen viele Einstellungen selbst vornehmen. Auf der anderen Seite kann es mehr Aufwand bedeuten, wenn ein Unternehmen Cloud-basierte Anwendungen für die Nutzung in Containern vorbereiten will und dabei mehrere von anderen vorkonfigurierte Funktionen beachtet werden müssen. In einer On-Premises-Umgebung haben die Entwickler dagegen mehr Möglichkeiten zur Kontrolle der Funktionen und können zum Beispiel verschiedene Workarounds nutzen.
Die Einführung von Manifesten auf Code-Basis hat jedoch Auswirkungen auf die Zusammenarbeit zwischen Entwicklern und Mitarbeitern, die für den täglichen Betrieb verantwortlich sind. So ist es zwar möglich, lokale Entwicklungsumgebungen einzurichten, die nahezu identisch mit den Produktivsystemen sind. Die Entwickler erhalten dadurch aber auch die Möglichkeit, teilweise erhebliche Änderungen an der Konfiguration der einzelnen Container vorzunehmen, in denen eine Anwendung läuft. Dieser Punkt muss kein Problem darstellen, kann aber in der Praxis zu Schwierigkeiten bei der Ausführung der Container führen.
Kurzfristige Planungen
Allgemein gesehen sollte die Konfiguration von Containern eher auf kurzfristige Ziele ausgerichtet sein. Das sorgt dann dafür, dass sich die Container jederzeit stoppen, verwerfen oder neu anlegen lassen, ohne dass gleich jedes Mal umfangreiche Konfigurationsänderungen vorgenommen werden müssen. Moderne Dateisysteme machen dieses Vorgehen jedoch teilweise nicht leicht. So werden vorher angelegte Dateien automatisch gelöscht, wenn ein Container neu erstellt wird. Dadurch können insbesondere beim Bereitstellen von Dateien für den Download oder bei in Containern untergebrachten Datenbankservern Probleme entstehen.
Um die Probleme mit Datenbankservern in Containern zu beheben, ist es jedoch möglich, ein lokales Verzeichnis auf dem Host mit dem laufenden Container zu teilen. Leichter zu verwalten wäre jedoch eine externe Datenbank, die sich in der Cloud befindet und die dann eingebunden wird. Dasselbe gilt für einen Cloud-basierten Object Storage. Auch das ist ein verlässlicherer und leichter skalierbarer Weg als ein geteiltes gemeinsames Verzeichnis, um den Download von Dateien anzubieten.
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!