Zurück zur Übersicht

Wissen, 14. Juli 2022

Legacy-Software ändern: Messen und Gegensteuern

Messen und Gegensteuern beschreibt ein grundlegendes Muster zum Ändern von Legacy-Software. Das Prinzip basiert auf der Annahme, dass ein Legacy-System stabil läuft, solange es nicht geändert wird.

Bugs, geänderte Anforderungen oder neue Funktionen erzwingen in der Praxis jedoch das regelmäßige Ändern der Software. Das Messen und Gegensteuern-Prinzip definiert den Status Quo als ein funktionierendes System, das im Großen und Ganzen das tut, was es soll. Jede diesen Zustand zerbrechende Änderung ist schlechter als der Status Quo. Passiert dies dennoch, gilt es schnellstmöglich, zum Status Quo zurückzukehren.


Rollback: Was schief gehen kann geht auch schief

Rollback bezeichnet den Prozess des Wiederherstellens des Status Quo und übernimmt den Gegensteuern-Part des Musters. Ein Rollback muss schnell, wiederholbar und automatisiert sein. Der einfachste Rollback ist das Auschecken, Bauen und Deployen einer funktionierenden Vorgängerversion. Dieses Vorgehen setzt die Nutzung einer Versionskontrolle sowie ein Releasemanagement voraus. Der Einsatz von Docker und die Archivierung von Vorgänger-Images macht diese Rollback-Strategie noch sicherer.

Rollback-Strategien sind in der Praxis selten einfach. Abgesehen davon, dass Legacy-Systeme immer komplex sind und es mit dem Neustart eines einzelnen Prozesses selten getan ist, laufen Legacy-Systeme immer in einem dynamischen Kontext. Ändern sich z.B. Schnittstellen zu Kontextsystemen, muss zuvor genau überlegt werden, welche Kontextsysteme in den Rollback mit einbezogen werden müssen. Ein anderer wichtiger Rollback-Aspekt sind Daten. So ist es denkbar, dass eine neue Version eines Legacy-Systems Daten schreibt, die im Falle eines Rollbacks nicht mehr mit dem Vorgänger-Release kompatibel sind. In solch einem Fall muss nicht nur über das Zurückmigrieren der Datenbank nachgedacht werden, sondern zudem für eine Strategie gegen den Verlust der neu geschriebenen Daten gesorgt werden. Rollback-Strategien sind komplex und stark von der jeweiligen Situation abhängig. Egal wie kompliziert die Strategie erscheinen mag, wichtig ist, dass es ohne nicht geht, d.h. die Mühe lohnt sich.


Unerwünschte Nebenwirkungen erkennen

Die zweite Voraussetzung für das Durchführen von Änderungen ist das Erkennen von Seiteneffekten. Die erste Art Seiteneffekt ist gewünscht, wie z.B. die in der 2. Jahreshälfte 2020 in vielen Systemen implementierte Reduzierung der Mehrwertsteuer von 19% auf 16%. Die zweite Art von Seiteneffekten ist unerwünscht. Dies sind Regressionen, die sich durch eine Änderung in komplexen Systemen einschleichen und im schlechtesten Fall erst nach dem Rollout erkannt werden.

Das Erkennen von unerwünschten Seiteneffekten nennen wir Messen. Messen bezeichnet das „Erspüren“ von unerwünschtem Verhalten und ist etwas anders als Testen. Während Unit-Tests gewünschtes Verhalten explizit sicher stellen, ist Messen sehr viel unschärfer. Messen beschreibt die kontinuierliche Überprüfung, ob das System im Kern das tut, was es soll. Statt auf technische Aspekte beziehen wir uns auf die fachlichen Aspekte des betroffenen Systems. Dabei wird das System von außen betrachtet, indem messbare Merkmale (Key Performance Indicators = KPIs) definiert werden, die das System fachlich auszeichnen. Beispiele sind die über den Warenkorb eines E-Commerce-Systems laufenden Geldbeträge oder die in ein Job-Portal durchschnittlich eingestellten Stellenanzeigen. Für identifizierte Merkmale werden Monitore installiert, die das Systemverhalten kontinuierlich messen und mit den Erwartungen abgleichen. Der Vorteil von Monitoren ist, dass sie externes Verhalten messen und dadurch relativ einfach an bestehende Systeme anschließbar sind. So lassen sich Geldbeträge, Job-Postings oder Anzahl Überweisungen relativ einfach über die Datenbank oder die Log-Dateien der Anwendung abgreifen, ohne dass dafür das Bestandssystem geändert werden muss.


Fazit: Sicheres Ändern von Legacy-Software ist möglich

Messen und Gegensteuern implementiert ein Muster zum sicheren Durchführen von Änderungen in unsicheren Umgebungen. Der Gegensteuern-Part wird durch eine Rollback-Strategie implementiert, die sowohl Sicherheit als auch Zeit zur Behebung des eigentlichen Problems verschafft. Der Messen-Part wird von KPI-Monitoren übernommen, die erwartetes Verhalten kontinuierlich messen und bei Abweichungen darüber informieren. Konsequent angewendet entsteht über die Zeit ein zunehmend engmaschiger werdendes Netzwerk von KPI-Monitoren, ähnlich dem eines Unit-Test-Netzwerks.

Autor:

Ralf Wirdemann
Software-Entwickler
  • Schwerpunkt Go und Java

  • Software-Architektur und -Modernisierung

  • Autor und Vortragender

Auch spannend