Legacy Systeme

So bringen Sie Legacy-Anwendungen in die Cloud

02.07.2021
Von  , und
Dr. Karsten Ballüder ist Director bei der Deloitte Consutling GmbH


Sophia-Luise Pietsch ist Consultant bei der Deloitte Consulting GmbH


Björn Langmack ist Managing Director bei Deloitte Consulting LLP, US
Alte Mainframe-Anwendungen mit ihren monolithischen Architekturen sind oft noch das Rückgrat, über das die meisten Transaktionen abgewickelt werden. In einem Umfeld, das auf agile Entwicklung, Microservices und Cloud-Deployments setzt, stehen sie der Digitalisierung im Weg.
Viele IT-Abteilungen schleppen ein schweres Erbe mit sich herum: Alte Mainframe-Anwendungen, die immer noch gebraucht werden und nun mit in die Zukunft genommen werden müssen. Fragt sich nur wie?
Viele IT-Abteilungen schleppen ein schweres Erbe mit sich herum: Alte Mainframe-Anwendungen, die immer noch gebraucht werden und nun mit in die Zukunft genommen werden müssen. Fragt sich nur wie?
Foto: Fred Mantel - shutterstock.com

Es gibt viele Möglichkeiten, Legacy-Anwendungen in moderne Architekturen zu integrieren. Der gängigste Ansatz ist die Verbindung über APIs und Konnektoren. Das Grundproblem bleibt aber die fehlende Agilität bei der Weiterentwicklung monolithischer Mainframe-Anwendungen und deren zugrundeliegenden Datenbanken, die hohen Kosten und das zunehmende Fehlen von Experten. Um zu einer modernen Anwendungslandschaft zu kommen, die Vorteile von Cloud-Ansätzen nutzen zu können und die Kostenziele des Managements zu erreichen, sind neue Modernisierungsstrategien notwendig.

Wurden die IT-Ziele in den letzten Jahr(zehnt)en häufig durch Outsourcing oder harte Verhandlungen mit externen Providern und Herstellern erreicht, ist nun ein anderes Vorgehen nötig. Ein häufig zu beobachtender Lösungsweg ist dabei, die Ziele durch eine Transformation des Sourcecodes zu erreichen, besonders wenn der Einsatz von Standardsoftware als Ersatz nicht in Frage kommt.

Viele Tools für Codeanpassung verfügbar

Doch auch die Transformation der Mainframe-Anwendungen und damit die Restrukturierung des Codes ist eine Herausforderung. Glücklicherweise ist in den letzten Jahren viel in diesem Bereich passiert, so dass Werkzeuge und Methoden zur Verfügung stehen, mit denen das Problem effizient und risikoarm gelöst werden kann.

Bei der Migrationsstrategie für das Anwendungsportfolio gilt es abzuwägen: Einerseits möchten die Verantwortlichen auf der Basis der individuellen Applikationen über den sinnvollsten und strategisch besten Modernisierungsansatz entscheiden. Zum anderen gilt es, zu viele unterschiedliche Ansätze zu vermeiden, um effizient zu bleiben und die Chance auf Skaleneffekte nicht einzubüßen.

Sie interessieren sich für Legacy-Modernisierung? Dann lesen Sie auch:

Der Schlüssel zum Erfolg besteht darin, sinnvolle Anwendungs-Cluster zu definieren, die jeweils mit einem einheitlichen Ansatz modernisiert werden können. Mit Blick auf das Applikationsportfolio hat sich eine Sortierung in folgende vier Cluster bewährt:

  • Retire - obsolete Anwendungen, die nicht weiter betrieben werden sollten oder müssen;

  • Retain - Anwendungen die in ihrer derzeitigen Form sinnvoll weiter betrieben werden können;

  • Replace - Anwendungen mit weiterhin sinnvoller Funktionalität, die aber durch andere Anwendungen (vorhandene oder neue) ersetzt werden sollten; häufig unter Einsatz von Standardlösungen und

  • Rework - Anwendungen mit weiterhin sinnvoller Funktionalität, die zum weiteren Betrieb und zur Weiterentwicklung auf eine neue Plattform gebracht werden sollten und dort tiefgreifend modernisiert werden können.

Die Zuordnung der Anwendungen zu diesen Clustern erfolgt anhand von Kriterien, die sowohl technische Aspekte (Wartbarkeit, Skalierbarkeit, Nutzung von Framework-Effizienzen) als auch Business-Case- Betrachtungen (Betriebskosten, funktionale Kritikalität, Kosten/Nutzen) berücksichtigen.

Ansätze, die auf ein reines Replatforming abzielen und das Ausführen von Anwendungen in Legacy-Technologien in der Cloud ermöglichen, beispielsweise durch Emulationsansätze, haben sich hingegen nur eingeschränkt bewährt. Eines der Hauptprobleme, die mangelnde Verfügbarkeit von Experten für Legacy-Systeme, wird damit nicht behoben. Außerdem ist ein solches Vorgehen unter Aspekten des Urheberrechts bezüglich der Nachbildung von Mainframe-Technologien rechtlich problematisch.

Mehrere Strategien für Replace und Rework

Bei den Strategien Replace und Rework gibt es verschiedene Lösungsansätze. Im Allgemeinen unterscheiden wir zwischen den folgenden drei Strategien:

  • Standardsoftware: Sie ist immer dann vielversprechend, wenn die Geschäftsprozesse einfach auf die Anwendung übertragen werden können und die Differenz zwischen der angebotenen Funktionalität und den Anforderungen der Abteilung gering ist. Eine Gap-Analyse zur Ermittlung der Lücken ist deshalb unerlässlich.

  • Neuentwicklung: Bei Anwendungen, deren Funktionalität hochspezialisiert oder nicht frei am Markt verfügbar ist und wo auch andere bereits eingesetzte Anwendungen keinen Ersatz bieten, sollte eine Neuentwicklung erwogen werden. Dieser Ansatz ist kosten- und zeitaufwändig, er birgt das größte Risiko. Ebenso entstehen hier hohe Belastungen für die Fachabteilungen, die bei der Definition von Anforderungen mitwirken müssen. Sinnvoll erscheint dieser Ansatz, wenn sich ein Geschäftsmodell grundlegend ändern soll, beispielsweise weg von klassischen Versicherungspolicen und hin zu einem Insurance-on-Demand-Modell.

  • Code-Transformation: Dieser Ansatz basiert auf einer Tool-gestützten Transformation der Anwendung auf eine moderne Plattform (etwa Java oder .NET). Hierdurch kann die Logik und Funktionalität der Anwendung bewahrt und gleichzeitig der Weg für eine umfassende, Tool-gestützte Modernisierung bereitet werden. Auch ein Re-hosting auf günstigeren Plattformen wird dadurch ermöglicht. Diese Variante verhindert außerdem ungeplante Abschreibungen im Falle der Ablösung der Altanwendungen und lässt sich im Vergleich zur Einführung einer Standardsoftware oder einer Neuentwicklung deutlich schneller und kostengünstiger umsetzen.

Bislang wurde vor allem dort gehandelt, wo Legacy-Anwendungen durch Standardsoftware ersetzt werden konnten. Das, was heute noch auf Mainframe-Umgebungen läuft, lässt sich in der Regel nur über Neuentwicklung oder Transformation der Anwendung modernisieren. Im Abwägen zwischen diesen beiden Optionen zeigt die Praxis, dass meistens die Transformation den besseren Business Case liefert und auch eine schnellere Modernisierung hin zu einer Cloud-nativen Architektur ermöglicht.

Betrachtet man die Entwicklung der letzten Jahre, so zeigt sich insbesondere bei kritischen Kernanwendungen hoher Komplexität ein eindeutiger Trend: Einführungen von Standardsoftware oder Neuentwicklungen entwickeln sich häufig zu langjährigen, aufwändigen Großprojekten. Aufgrund sich weiterentwickelnder Anforderungen kämpfen sie mit hoher Komplexität und stellen oft eine andauernd hohe Belastung für Fachbereiche und IT dar.

Gleichzeitig hat sich der Reifegrad der Verfahren zur Code-Transformation und weiterführenden Modernisierung deutlich verbessert. Heute können verschiedene Anbieter Basisfunktionen zur Konvertierung von Legacy-Code in moderne Sprachen bereitstellen. Dazu kommen fortschrittliche Verfahren, die es erlauben, bestehende Anwendungen hocheffizient auf eine neue Technologie zu migrieren und sie dabei direkt zu modernisieren und in eine modulare, Services-basierte Struktur zu überführen. Diese ist langfristig wartbar und ermöglicht eine effiziente Nutzung moderner Cloud-IT. Unterstützt wird der Ansatz durch automatisiertes Testen, da es im ersten Schritt "nur" darum geht, identische Ergebnisse bei der Ausführung der Anwendung (online und Batch) zu erzielen.

Von der Transformation zur Cloud

Die Transformation von Legacy-Anwendungen zu einer modernen Programmiersprache ist die Grundlage für eine Migration in die Cloud. Auf Basis der transformierten Technologieplattform lässt sich die funktional unveränderte Legacy-Anwendung in der Cloud bereitstellen. Von einer solchen transformierten "Cloud-ready"-Anwendung ist der Schritt zu einer Cloud-native-Anwendung eher klein und evolutionär.

Moderne Cloud-Plattformen bieten ein Ökosystem an Frameworks und Komponenten, das eingesetzt werden kann, um die Anwendung Schritt für Schritt zu erneuern und auf eine moderne Cloud-Architektur umzustellen. Selbst für das Modularisieren und Zerlegen der transformierten Anwendungen in (Micro-)Services sowie das umfassende Anpassen der zugrundeliegenden Datenbankstrukturen finden sich heute teilautomatisierte und gut skalierende Ansätze. Sie ermöglichen eine effiziente strukturelle Weiterentwicklung von "Cloud-ready" zu "Cloud-native".

Es hat sich bewehrt, dass zuerst die Teile der transformierten Anwendung modernisiert werden, die den größten Vorteil für das Business bringen. So lassen sich "Quick Wins" erzielen und Ressourcen optimal verwenden. Die Ergebnisse solcher Transformationen sind häufig überraschend. Wenn es die Rahmenbedingungen erlauben und die praktisch unbegrenzte Rechenleistung der Cloud-Plattformen durch Parallelisierung genutzt werden kann, lassen sich beispielsweise Batch-Laufzeiten drastisch reduzieren und gleichzeitig die Kosten senken.

Kontinuierliche Modernisierung

Als Methode empfiehlt sich das von Gartner als "kontinuierliche Modernisierung" bezeichnete Verfahren. Es kombiniert eine schnelle, risikoarme, vollautomatische Code- und Datenmigration mit der Möglichkeit ohne Unterbrechungen zu modernisieren, um die gewünschte Zielarchitektur zu erreichen.

Die Stärke des Ansatzes liegt darin, dass alle Komponenten immer in gewohnter Weise verfügbar bleiben. Gleichzeitig bringen die Migrationstools eine automatisierte Testsuite mit, die hilft, Regressionsfehler auch nach Abschluss des Projekts zu vermeiden. Im Rahmen der Modernisierung werden dabei von der Cloud-Plattform bereitgestellte Standardfunktionen eingebunden und die Entwicklung auf agiles Vorgehen unter Nutzung von DevOps-Methoden umgestellt.

Ein Vorteil dieser Lösung ist auch, dass die Modernisierung dort vorgenommen werden kann, wo sie den größten Nutzen bringt. Das ist wichtig, da in der Regel lediglich ein Drittel einer Anwendung regelmäßig genutzt und modifiziert werden. Dieses Vorgehen kann auch dazu eingesetzt werden, einzelne Komponenten einer Anwendung auszukoppeln und in die Cloud zu verlagern. So lassen sich Auslastungsspitzen der Altsysteme reduzieren. Entsprechend können ungenutzte Kapazitäten gekündigt und Betriebskosten gespart werden.

Mittlerweile können selbst komplexe Kernsysteme unter Nutzung von automatisierten Verfahren in unter 18 Monaten auf eine neue Technologieplattform gebracht werden, inklusive Etablierung moderner CI/CD Tools, DevOps-Verfahren und im Rahmen der Transformation etablierter automatisierter Regressionstest. Ausgehend von dieser grundlegend modernisierten Plattform, ist eine funktionale und strukturelle weitere Modernisierung, ein Zerlegen in Microservices oder Einführung Cloud-nativer Services mit hoher Effizienz nd Geschwindigkeit möglich.

Unser Fazit: Handlungsoptionen kombinieren

Der von uns aufgezeigte Weg, basierend auf einer Code-Transformation als erstem Schritt, hat sich bewährt. Das sieht man auch am in den letzten Jahren gestiegenen Aufkommen von Modernisierungsprojekten, die so vorgehen. Das von uns 2019 beschriebene vollautomatische Verfahren zur Unterstützung der kontinuierlichen Modernisierung ist heute etablierter Stand der Technik und wird mittlerweile durch leistungsstarke Ansätze für eine strukturelle Modernisierung ergänzt.

Unternehmen sollten auch im Backend die vorhandenen Assets, zu denen auch selbstgeschriebene Anwendungen gehören, sorgfältig bewerten und modernisieren. Risiken bestehen in unzureichenden Entwicklerressourcen, schlecht beschriebenen Prozessen sowie den üblichen Projektrisiken. Einen goldenen Weg zur Ablösung von über Jahrzehnte gewachsenen monolithischen Anwendungen gibt es nicht. Erfolgreiche Beispiele zeigen aber, dass die Tool-gestützte Modernisierung von Altsystemen die Grundlage für eine hochgradig agile und langfristig produktive Weiterentwicklung der Software schafft und in vielen Fällen der sicherste und effizienteste Weg zu einer modernen Cloud-Architektur ist. (hv)