Die Modernisierung von Legacy-Anwendungen mit Quarkus
Lange Zeit waren die Java Enterprise Edition (später Jakarta EE) und Application Server wie JBoss oder WildFly für Unternehmen das Mittel der Wahl, um grosse und geschäftskritische Anwendungen zu betreiben. Zweifelsfrei bot diese Kombination Vorteile, die andere Lösungen vermissen liessen: ein umfangreiches Ökosystem ausgereifter Bibliotheken, stabile Programmierschnittstellen und eine verlässliche Weiterentwicklung.
Spätestens seit sich der cloud- und containerbasierte Betrieb von Software in den 2010er-Jahren durchgesetzt hat, werden ältere monolithische Anwendungen zunehmend zur Last und erschweren die Umsetzung einer modernen Cloud-Strategie. Der Hauptgrund liegt im traditionellen Betriebsmodell klassischer Jakarta EE Application Server. Diese Application Server laufen als schwergewichtige, eigenständige Prozesse innerhalb der Java Virtual Machine. Sie bündeln sämtliche Jakarta-EE-Funktionen in einer zentralen Laufzeitumgebung und hosten darin eine oder mehrere Anwendungen.
Besonders der grosse Ressourcenverbrauch und die langsame Startzeit eines Application Servers stellen im Cloud-Umfeld ein grosses Problem dar. Während im On-Premises-Betrieb die Ressourcen vorhanden sind und nach Bereitstellung der Hardware kaum zusätzliche Kosten verursachen, stellen sie im Cloud-Betrieb einen entscheidenden Kostenfaktor dar. Zudem verhindern der grosse Ressourcenverbrauch, die komplexe Konfiguration und ein Betriebsmodell, das nicht an Containern orientiert ist, eine effiziente horizontale Skalierung. Gerade diese wäre aber wichtig, um die Vorteile der Cloud realisieren zu können.
Modernisierung mit Quarkus statt Neuentwicklung
Aufgrund der beschriebenen Probleme stehen Unternehmen vor der Frage, wie sie mit den alten Anwendungen umgehen sollen. Die vollständige Neuentwicklung funktionierender und bewährter Anwendungen birgt erhebliche Risiken. Diese Anwendungen enthalten Wissen über Geschäftsprozesse und Optimierungen aus vielen Jahren. Die Rekonstruktion aller Lösungen und Entscheidungen, die in sie eingeflossen sind, verursacht einen nicht absehbaren Aufwand, und die Realisierung in einer Technologie, mit der die bisherigen Kernentwickler nicht vertraut sind, kann zu neuen Fehlern und problematischen Lösungen führen.
Statt der Neuentwicklung stellt die Modernisierung den wesentlich einfacheren Weg dar. Besonders gut geeignet für die Modernisierung von Jakarta-EE-Anwendungen ist Quarkus als modernes und leistungsstarkes Java Framework.
Quarkus-Stärken
Tatsächlich ist Quarkus mehr als ein reines Framework. Es versteht sich als Technologie-Stack für die Entwicklung cloudorientierter und performanter Anwendungen. Anders als beispielsweise Spring Boot setzt Quarkus dabei aber nicht auf vollkommen neue Technologien, sondern bedient weiterhin die bekannten und bewährten Schnittstellen der Jakarta EE, die auch schon die Grundlage von Anwendungen auf Application Server wie JBoss oder WildFly sind.
Diese Verwurzelung in «Best of Breed Libraries and Standards», wie es im Mission Statement von Quarkus heisst, ermöglicht die Weiterverwendung eines Grossteils des bestehenden Codes. Entwickler, die seit Jahren mit der Jakarta EE arbeiten, finden sich schnell im Quarkus-Ökosystem zurecht und können ihr erworbenes Wissen weiterhin verwenden.
Daneben bietet Quarkus viele Vorteile, was es perfekt geeignet für moderne Anwendungen macht:
- Quarkus verfolgt einen «Container First»-Ansatz, was eine besonders leichte Entwicklung für ein Cloud-Umfeld ermöglicht.
- Quarkus-Anwendungen zeichnen sich durch schnelle Startzeiten und einen geringen Ressourcenverbrauch zur Laufzeit aus. Die Kompilierung als native Anwendungen ermöglicht weitere Optimierung.
- Eine grosse Zahl von Erweiterungen, eine aktive Community und die Unterstützung von grossen Unternehmen wie Red Hat und IBM sorgen für die stetige Pflege und Weiterentwicklung.
- Weitreichende Unterstützung für Entwickler und die konsequente Orientierung am Ziel der Developer Joy sorgen für Zufriedenheit und hohe Produktivität der Entwickler. Schnelle Entwicklungsiterationen und sinnvolle Tools helfen, neue Features schnell zur Produktionsreife zu bringen.
Herausforderungen einer Migration
Bei allen Vorteilen, die Quarkus bietet, bringt jede Migration aber auch Herausforderungen mit sich. So realisiert Quarkus zwar wie die klassischen Application Server die Standards der Jakarta EE, allerdings nicht im selben Umfang. Bei der Migration von Enterprise Java Beans (EJB) zu den schlanken CDI-basierten Beans wartet hier der grösste Anpassungsbedarf.
Daneben stellt die Anbindung von Legacy-Umsystemen eine nicht zu vernachlässigende Herausforderung dar. Nicht alles, was im Application Server bisher kompliziert war und individuelle Lösungen erforderte, kann ohne weitere Anpassung nach Quarkus übernommen werden.
Grundsätzlich gilt: Je näher eine Anwendung bisher dem Jakarta-EE-Standard folgte und je stärker Best Practices bei der Umsetzung berücksichtigt wurden, umso einfacher ist die Migration. Umgekehrt gilt aber auch: Je mehr individuelle Lösungen oder Abweichungen vom Standard vorhanden sind, desto aufwendiger wird die Migration und desto häufiger sind Neuentwicklungen einzelner Anwendungsteile erforderlich.
Wie ti&m bei der Migration unterstützt
Bei ti&m unterstützen wir unsere Kunden bei der Modernisierung ihrer Software. Dabei bringen wir unsere langjährige Erfahrung in der Pflege klassischer Jakarta-EE-Anwendungen sowie in der Entwicklung moderner Cloud-Lösungen ein.
Am Anfang steht immer die Analyse der bestehenden Anwendung und ihrer Umsysteme. Wir ermitteln, welche Bestandteile mit lediglich geringen Anpassungen übernommen werden können, welche Bestandteile stärkere Modifikationen erfordern und welche nach neuen Lösungen verlangen.
Anschliessend entwerfen wir gemeinsam mit dem Kunden einen Plan für die Migration und gehen mit ihm und seinen Entwicklern gemeinsam in die Umsetzung. Dabei ist uns besonders wichtig, Big-Bang-Releases zu vermeiden und stattdessen in überschaubaren Iterationen von begrenztem Umfang und Risiko vorzugehen.
Parallel zu der eigentlichen Entwicklung schulen wir die Entwickler des Kunden. Unser Ziel ist, dass die Entwickler, die bisher an der Anwendung gearbeitet haben, sie auch in Zukunft betreuen können. Aufbauend auf ihrem bestehenden Wissen um die Anwendung und die Jakarta-EE-Standards vermitteln wir ihnen das notwendige Wissen für die Entwicklung mit Quarkus.
Das Ziel ist in jedem Fall eine Anwendung auf einer modernen Basis, die auch in Zukunft die geschäftskritischen Prozesse des Kunden zuverlässig unterstützt, sich mit wenig Aufwand weiterentwickeln lässt und einen reibungsarmen Betrieb in der Cloud möglich macht.