0:03
„Herzlich willkommen zum Webinar „Deine Individual Software up-to-date halten? So geht’s!“ Wenn ihr an ein Software-Update denkt, kommt euch vermutlich zuerst das angenehme Erlebnis in den Sinn – wie bei einem Smartphone-Update, das im Hintergrund abläuft, ohne dass ihr viel davon mitbekommt. Im Gegensatz dazu ist das Update eurer Individual Software oft ein sehr mühsamer Prozess. Genau hier setzen wir an: Wir möchten das Updaten in Zukunft automatisieren und dabei eine coole User Experience für unsere Kunden schaffen.“
1:03
„Ich bin Christoph Kofler, euer Bergführer für Software-Modernisierung, und ich habe Christoph Ruhsam, unseren Software-Update-Experten, mit dabei. Er wird euch gleich live zeigen, wie ein automatisches Update eurer Individual Software funktionieren kann.“
1:25
„Bevor wir ins Thema starten: gepardec wurde 2014 von Erhard Siegel und Günter Pirklbauer gegründet und unterhält Standorte in Wien und Linz. Wir sind aktuell rund 50 Mitarbeiter und konzentrieren uns auf Software-Modernisierung. Als Red Hat Premier Business Partner – dem höchsten Partnerlevel – nutzen wir insbesondere Technologien wie JBoss und Red Hat.“
2:15
„Unsere Arbeit dreht sich rund um die Individual-Software-Entwicklung auf Java-Enterprise-Basis. Das aktuelle Leitthema ist die Software-Modernisierung, um das Update von bestehenden Systemen zu erleichtern. Daneben befassen wir uns mit weiteren spannenden Themen wie Kubernetes, OpenShift, WildFly, JBoss, Observability und CI/CD. Dabei sind alle Rollen von Requirements Engineering über Projektleitung und User-Experience-Design bis hin zu Softwareentwicklung vertreten.“
3:21
„Das Up-to-date-Halten von Individual Software ist eine echte Herausforderung. Irgendwann besteht kein Herstellersupport mehr – und ohne diesen kann die Applikation im schlimmsten Fall gar nicht mehr betrieben werden. Im Notfall bekommt man gar keine Updates mehr, bis man manuell interveniert. Ein weiterer großer Aspekt ist Compliance und Security: Ohne regelmäßige Updates steigt das Sicherheitsrisiko erheblich.“
4:02
„Ein häufiges Problem: Viele Entwickler sind Experten für neue Features, aber niemand ist ein Update-Experte. Oft wird Individual Software entwickelt, ohne dass ausreichend Budget oder personelle Ressourcen für die laufende Wartung und Aktualisierung eingeplant sind. Zudem mag kaum ein Entwickler manuelle Updates vornehmen, da am Ende alles genauso funktionieren soll wie vorher – auch wenn im Hintergrund ein erheblicher Aufwand steckt.“
6:01
„Schauen wir uns an, wie ein klassisches Software-Update abläuft:
Du hast eine Java-Applikation mit diversen Dependencies und Libraries. Du überprüfst zunächst, welche Java-Version aktuell verwendet wird – sagen wir Java X – und welche neue Version verfügbar ist. Dann startest du das Update. Meistens folgt prompt ein Kompilierungsfehler, den du beheben musst. Anschließend kompiliert die Anwendung wieder, während du Dokumentationen und Release Notes durchforstest, bis das Update endlich erfolgreich abgeschlossen ist.“
7:00
„In der Realität wird es oft noch komplizierter: Aktualisierst du eine Library, fordert dir die nächste dann möglicherweise ein Upgrade auf Java 17 oder eine Aktualisierung des Frameworks. Es entsteht ein sogenanntes „Rabbit Hole“ – der Versionssprung wird so groß, dass auch Komponenten wie der Datenbanktreiber oder die Datenbankversion nicht mehr übereinstimmen. Je größer der Versionssprung, desto mühsamer wird der Update-Prozess.“
7:51
„Deshalb möchten wir euch heute einen neuen Weg vorstellen: den gepardec’s Auto-Update Service. Dieser Service arbeitet automatisch für euch – er kombiniert den Einsatz verschiedener Tools und bildet als kompletter Service eine durchgängige Lösung. Für alle, die technisch interessiert sind: In unserer Live-Demo zeigt Christoph Ruhsam, wie das System im Hintergrund funktioniert.“
8:30
„Lasst uns direkt in den technischen Teil einsteigen. In der Demo seht ihr, wie unser Auto Update Service in der Praxis funktioniert.“
9:00
„Wir nehmen als Beispiel eine Applikation (die sogenannte Quarkus-Applikation), die aktualisiert werden soll. Das Prinzip funktioniert gleichermaßen für Spring-Boot-Anwendungen, Python-Skripte oder grundsätzlich alles, was unser Tool unterstützt. In diesem Fall läuft aktuell noch eine alte Version (z. B. Version 2.16); die neue Version liegt bei etwa 3.1 3.15 oder so. Zur Automatisierung des Updates setzen wir das Tool Renovate ein.“
9:51
„Renovate aktualisiert automatisch die Applikation und ihre Dependencies. Es prüft auch, ob hinter der Datenbank neuere Versionen verfügbar sind, und erstellt entsprechende Pull Requests. Wir haben Renovate so konfiguriert, dass es mit unserer ‚recommended Config‘ agiert – Änderungen erfolgen automatisch, ohne dass manuell eingegriffen werden muss.“
11:36
„Renovate führt zunächst das reine Versionsupgrade durch. Wenn dabei beispielsweise von Quarkus 2 auf Quarkus 3 gewechselt wird, sind oft Code-Anpassungen nötig (z. B. die Umstellung von Java X auf den Jakarta Namespace). Deshalb haben wir Renovate mit OpenRewrite kombiniert. Sobald Renovate das Upgrade abgeschlossen hat, übernimmt OpenRewrite die notwendigen Code-Änderungen im selben Pull Request, damit die Applikation reibungslos weiterläuft.“
12:54
„Sobald alle Schritte durchlaufen sind – inklusive eines absichtlich fehlschlagenden Falltests, um das Fehlerhandling zu prüfen – läuft die Build-Pipeline. Bei erfolgreichen Tests wird der Pull Request automatisch zum Merge freigegeben. Falls Fehler auftreten, wird ein Link zu unserem Tool Dev-Space in den Pull Request integriert. Damit bekommt der Entwickler alle nötigen Informationen und Tools, um das Problem schnell zu beheben, ohne die Applikation lokal neu aufsetzen zu müssen. So wird der korrekte Branch automatisch aktualisiert, und ihr könnt anschließend wie gewohnt mit Visual Studio Code arbeiten.“
14:59
„Unsere Umgebung umfasst mehrere Java-Versionen (alle wichtigen LTS-Versionen), sodass wir je nach Bedarf problemlos zwischen ihnen wechseln können. Beim Start von Dev Space werden automatisch vorbereitete Kommandos (z. B. ein Maven Clean Install) ausgeführt, sodass alle Dependencies sofort verfügbar sind. Dies spart dem Entwickler viel Wartezeit.“
17:35
„Im Hintergrund läuft Dev Space in einem OpenShift-Cluster. Dort wird die aktualisierte Applikation über einen entsprechenden Port und eingerichtete Routen auch von außen erreichbar gemacht – sodass beispielsweise Integrationstests mit Postman durchgeführt werden können.“
18:04
„Unsere laufende Quarkus-Applikation beinhaltet einen REST-Endpunkt („/ Hello“), der einwandfrei funktioniert. Sobald Codeänderungen gespeichert werden, wird die Anwendung automatisch neu geladen. Der gesamte Prozess – vom Commit über die Build-Pipeline bis zum Merge – läuft automatisiert ab. So ist der Service immer auf dem neuesten Stand.“
18:58
„Was bringt das dem Entwickler? Er muss nicht täglich manuell nach Updates suchen oder jede Dependency prüfen. Renovate erledigt das automatisch. Auch falls zusätzliche Codeanpassungen nötig sind (wie beim Quarkus-Upgrade), werden diese automatisch durchgeführt. Falls es zu Verzögerungen kommt, stellt unser System automatisch eine komplette Umgebung bereit (mit Tools wie Maven, Postman etc.), sodass der Entwickler direkt mit der Fehlersuche beginnen kann – ohne manuelles Setup.“
20:10
„Zurück im Studio: Bevor wir fortfahren, gibt es technische Fragen zur Demo oder zu den verwendeten Tools?“
Eine Frage aus dem Chat:
„Es ist cool, dass auch Codeänderungen (z. B. vom Java X- auf den Jakarta-Update) automatisch erfolgen. Aber was, wenn man ein Projekt mit zehntausend Codezeilen hat – werden dann die Pull Requests nicht gigantisch und fehleranfällig? Wie hoch ist das Vertrauen in diese automatisierten Mechanismen?“
Antwort:
„Bei größeren Services entsteht zwar eine Vielzahl von Pull Requests, aber wir haben einen definierten Prozess: Wir mergen nicht täglich jeden PR, sondern führen alle zwei Wochen einen Release durch. Wichtig ist hier vor allem eine solide Testabdeckung. Wenn die automatisierten Tests robust sind, können wir mit hoher Konfidenz sagen, dass die Änderungen korrekt sind. Der Prozess gliedert sich in zwei Phasen: Zuerst ein großer Versionssprung, danach kontinuierliche, kleinere Updates – das macht den Ablauf gerade bei umfangreichen Codebasen sicherer und effizienter.“
24:21
„Wie gelangt man zu diesem automatisierten Update-Status? Der Prozess startet mit einer detaillierten Analyse eurer Applikation:
• Welche Frameworks und Versionen werden genutzt?
• Welche Dependencies und Libraries sind im Einsatz?
• Gibt es bekannte Sicherheitslücken?
• Wie kommunizieren beispielsweise mehrere Microservices miteinander?
Anschließend erfolgt der große Versionssprung (z. B. von JBoss 7 auf JBoss 8 oder von Quarkus 2 auf Quarkus 3). Ist das System einmal auf dem neuesten Stand, sorgt das integrierte Tooling (Renovate, OpenRewrite etc.) dafür, dass es kontinuierlich aktuell bleibt – und das wird in die CI/CD-Pipeline des Kunden integriert.“
27:07
„Zusammengefasst: Unser Ziel ist es, dass ihr euch in Zukunft nicht mehr um das mühsame manuelle Update eurer Applikationen kümmern müsst. Stattdessen übernimmt unser Auto Update Service den technischen Basisbetrieb, während ihr euch voll auf die Entwicklung neuer Features konzentrieren könnt. Wir setzen hierfür auf umfangreiche Analysen, automatisierte Tools und einen klar definierten Prozess – von der Erstaufnahme bis zu regelmäßigen Releases.“
9:06
„Ein Teilnehmer berichtet, dass viele seiner Kunden (z. B. der ORF mit seinem Presseportal oder langjährige Enterprise-Kunden) bereits von solchen automatisierten Update-Lösungen profitieren. Beispiele:
• Beim ORF aktualisieren wir das Keycloak-System monatlich, um Sicherheit und reibungslosen Betrieb zu gewährleisten.
• Ein anderer Kunde nutzt unseren Service für über 30 Microservices, was ihm feste Budgets und Planungssicherheit ermöglicht.
Auch in komplexen Umgebungen mit Millionen von Codezeilen und umfangreichen Schnittstellen hat sich der automatisierte Prozess bewährt – das spart nicht nur Zeit, sondern reduziert auch das Risiko manueller Fehler erheblich.“
35:07
„Damit schließe ich unsere Vorstellung des Auto Update Services. Für Fragen, Anregungen oder weitere Details stehe ich jetzt selbstverständlich zur Verfügung. Vielen Dank für eure Aufmerksamkeit!“