
Monolithische Architekturen und Legacy-Anwendungen erschweren Innovationen und beeinträchtigen die Entwicklerproduktivität. Immer mehr Unternehmen setzen deshalb auf die Containerisierung der Monolithen. Die Migration einer monolithischen Anwendung auf eine cloudfähige, containerisierte Architektur erfolgt dabei in vielen Fällen sukzessive, und zwar in den Schritten Rehosting, Replatforming und Refactoring.
Unternehmen und Entwickler stehen mehr denn je vor der Aufgabe, Innovationen schnell voranzutreiben und die Time-to-Market durch die Nutzung produktiverer Technologien zu erhöhen. Die Ziele lauten höhere Effizienz, Agilität und Geschwindigkeit, um die Wettbewerbsfähigkeit zu stärken.
Diese Ziele sind mit monolithischen Architekturen prinzipbedingt kaum zu erreichen. Monolithen und Legacy-Anwendungen sind zu gross und zu komplex, starten langsam und sind bei Updates aufwendig zu testen. Bereits ein Fehler kann die Verfügbarkeit der Anwendung beeinträchtigen und bei der Skalierung können Konflikte zwischen Modulen entstehen. Durch diese Merkmale können sie auch ein Hindernis für die Einführung neuer Technologien darstellen.
Im Gegensatz zu monolithischen Architekturen bieten Container-Plattformen und Microservices das Potenzial, Innovationen schnell und kostenoptimiert voranzutreiben. Container sind im Prinzip Technologien, mit denen Anwendungen mit allen benötigten Komponenten und Konfigurationsangaben und der gesamten Runtime-Umgebung – das heisst mit allen für den Betrieb notwendigen Dateien – paketiert, gekapselt und isoliert werden können. Container sind die Schlüsseltechnologie für die Einführung von Microservices, die den Aufbau modularer, lose gekoppelter Anwendungen ermöglichen. Unternehmen können damit die Anwendungserstellung entscheidend beschleunigen. Die Services werden über leichtgewichtige, Technologie-agnostische APIs bereitgestellt, die die Flexibilität beim Deployment sowie bei der Skalierung und Wartung erhöhen. Durch DevOps-Prozesse und -Methoden ist es zudem möglich, Qualitätstests in jedem Prozessschritt zu automatisieren, sodass sich der Zeit- und Arbeitsaufwand für Entwickler deutlich verringert.
Immer mehr Unternehmen schlagen bei der Anwendungsmodernisierung deshalb den Weg einer Migration von Monolithen auf Container-Plattformen und Microservices ein. Das heisst, sie gehen weg von monolithischen Systemen, in denen alle Funktionen der Anwendung als einzelnes grosses Paket programmiert und getestet werden. Ihr Ziel ist der Wechsel auf eine containerisierte Umgebung, in der jede einzelne Funktion in ihrem eigenen Container bereitgestellt und unabhängig skaliert werden kann.
Im Prinzip gibt es für die Migration drei Möglichkeiten: das Rehosting, das Replatforming und das Refactoring.
Beim Rehosting beziehungsweise Lift-and-Shift-Verfahren verpacken Entwickler vorhandene Applikationen und Workloads – ohne weitere Modernisierung – mit so wenig Änderungen wie möglich in einen Container, migrieren sie in die Cloud und betreiben sie dort als Platform-as-a-Service (PaaS).
Auf diese Weise kann zum Beispiel ein Content-Management-System (CMS), das auf Java basiert und auf virtuellen Maschinen läuft, in einem Set von Containern neu verpackt und in einem PaaS bereitgestellt werden. Zusätzlich zu den Vorteilen von Containern, die in einem PaaS laufen, profitieren Entwickler dann von benutzerfreundlichen Workflows wie Continuous Integration (CI) und Continuous Delivery (CD) Pipelines.
Die Anwendungsarchitektur bleibt beim Lift-and-Shift-Ansatz zunächst unverändert, kann aber anschliessend modernisiert werden. So ist es in diesem Beispiel möglich, die CMS-Komponenten als Microservices neu zu strukturieren und das gesamte CMS als API zu kapseln. Damit ist es für Mobil-, Cloud- und andere Anwendungen zugänglich, die Content-Management-Funktionen benötigen.
Auch beim Replatforming beziehungsweise Lift-and-Reshape-Verfahren bleibt die Architektur der bestehenden Anwendung unverändert. Entwickler ermitteln bei diesem Ansatz, welche Teile der Applikation von der Container-Technologie profitieren, überarbeiten diese durch eine Überführung in Microservices und bauen API-Layer zur Kommunikation ein. Durch die Erweiterung um neue Layer wird die vorhandene Anwendungsfunktionalität für neue Applikationen zugänglich gemacht, sodass Entwicklungszeiten und -kosten eingespart werden.
Das Replatforming kann etwa bei einer Business-Anwendung eingesetzt werden, die nicht von aktuellen Virtualisierungs- oder Container-Plattformen unterstützt wird und die über eine Standard-API erreichbar ist. Hier kann dann ein Adapter-Microservice geschrieben werden, der auf diese API zugreift. Dieser Microservice wiederum wird von neuen Anwendungen und anderen Microservices verwendet, um auf die Funktionalität der Business-Anwendung zuzugreifen.
Beim Refactoring beziehungsweise Rewriting schliesslich erfolgt eine grundlegende Modifikation des Programmcodes einer Applikation auf Basis einer neuen Microservices-Architektur.
Das Rewriting einer Anwendung ist aber nicht gleichzusetzen mit der Neuentwicklung einer Anwendung von Grund auf; es ist der Prozess der Erstellung neuer Funktionen, um bestehende Anwendungen zu ersetzen und ausser Betrieb zu nehmen. Als Teil einer umfassenden Modernisierungsstrategie kann das Rewriting dem Rehosting und Replatforming folgen. Es ist zwar das zeitaufwendigste und kostenintensivste Verfahren, aber letztlich auch die umfassendste Möglichkeit für die Modernisierung der Anwendungsarchitektur.
Ausserdem gibt es Fälle, in denen das Rewriting die einzige Option ist, etwa wenn alte Anwendungen auf Betriebssystemen und Hardware laufen, die von den Herstellern nicht mehr unterstützt werden.
Die Wahl der Modernisierungs- und Migrationsstrategie hängt von mehreren Faktoren ab, zum Beispiel von der Applikation, den Business-Anforderungen oder den kontextuellen Faktoren. Darüber hinaus muss ein Unternehmen berücksichtigen, dass die drei Varianten teilweise erhebliche Unterschiede in puncto Migrationsdauer und Kosten aufweisen.
Die drei Migrationspfade helfen Anwendungsarchitekten sowie Entwicklungs- und Betriebsteams, bestehende Applikationen zu modernisieren, ohne dass komplette Neuentwicklungen erforderlich sind. Und dabei ist vielfach das beste Migrationsverfahren die schrittweise Modernisierung vom Rehosting über das Replatforming bis hin zum Refactoring.