Observability Tools helfen

Wie Sie besser mit Legacy Software umgehen

02.08.2022
Von 
Matt Asay ist Autor der US-Schwesterpublikation Infoworld.com.
Legacy Software ist nicht nur verstaubter Code, der auf Mainframes liegt. Auch was Sie vor ein paar Monaten oder Jahren programmiert haben, fällt darunter. Observability Tools und eine gute Dokumentation können Probleme finden und beheben.
Legacy Code heißt nicht notwendigerweise Cobol und Mainframe.
Legacy Code heißt nicht notwendigerweise Cobol und Mainframe.
Foto: BalanceFormCreative - shutterstock.com

Normalerweise denken wir beim Begriff "Legacy-Software" an Anwendungen, die in COBOL geschrieben wurden und irgendwo auf einem Mainframe liegen. Diese Denkweise führt dazu, dass Entwickler ihren Code erstellen ohne vorauszuschauen und daran zu denken, wer diesen später einmal lesen muss.

"In dem Moment, in dem Sie Code ausliefern, handelt es sich um Legacy-Software", meint Jean Yang, Gründerin und CEO von Akita Software. Stellt sich die Frage, wie ein intelligenterer Umgang mit Legacy Code aussehen kann.

Network Calls und Komplexität

Ein Problem mit Code: Er ist nie wirklich statisch. Oder wie es Charity Majors, Mitbegründerin und CTO von Honeycomb, ausdrückt: "Man kann nicht wirklich wissen , wie sich die Software verhalten wird, bis man sie in Produktion gibt." Erst in der Produktion offenbarten sich die Risse im "Legacy"-Code, so Majors: "Ein kleines Stück Code ist ein kompliziertes System, aber sobald es in Betrieb ist, Benutzer, Traffic-Muster und eine zugrundeliegende Infrastruktur hat, wird es komplex. Man kann nicht vorhersagen, was passieren wird, wenn man etwas ändert. Man muss beobachten und sehen, was in einer kontrollierten Umgebung passiert."

Menschliche statt Code-Probleme

"Einzelne Ingenieure können Software schreiben, aber nur Teams können Software liefern, ausliefern und warten. Die kleinste Einheit bei der Bereitstellung von Software ist das Team", unterstreicht die Honeycomb-Managerin.

Wir könnten uns vormachen, dass die Probleme (Bugs, Fehler usw.) technische Probleme mit unserer Anwendung sind, fügt ihre Gesprächspartnerin Yang hinzu. Das gehe jedoch am Kern vorbei, so die Managerin: "Es ist immer ein menschliches Problem. Man muss den Menschen immer vertrauen. Und ein Großteil der Tools hilft dabei, herauszufinden, was die Leute in der Vergangenheit getan haben, was sie in letzter Zeit getan haben und was diese Probleme verursacht hat. Es geht nur um Menschen."

Das bringt uns zurück zu Legacy - und Observability.

Legacy verstehen

"Je länger die Erstellung einer Software zurückliegt, desto mehr steigen die Kosten, wenn Probleme gefunden und behoben werden müssen", so Majors. Daher könnten Observability-Tools entscheidend dazu beitragen, Probleme innerhalb von Minuten zu beheben. Sie ließen den Code in der kontrollierten Produktion laufen und ermöglichten es so den Entwicklern, ihren Legacy-Code kurz nach dem Schreiben zu debuggen - anstatt ihn Monate, Jahre oder sogar Jahrzehnte später zu entschlüsseln.

Das ist auch der Grund, warum eine gute Dokumentation so wichtig ist. Die dient nämlich nicht nur dazu, dass Andere mit dem von uns entworfenen Code zurechtkommen. Simon Willison, Gründer von Datasette, erklärt, er schreibe die Dokumentation auch für sich selbst, da er sonst dazu neige, zu vergessen, warum er den Code auf eine bestimmte Weise geschrieben hat: "Wenn ich in zwei Monaten zu dem Projekt zurückkehre, funktioniert alles, und ich weiß, wo alles ist, weil eine ausführliche Dokumentation vorliegt. Diese hilft mir - und anderen - , sich wieder in den Code einzufinden."

"Ein Teil der Entwicklungsarbeit besteht darin, gute Dokumentationen, gute Unit-Tests und gute Observability zu gewährleisten", meint Majors. "Nur so können Sie sehen, wie sich der Code in Verbindung mit verschiedenen Systemen und Bedingungen verhält. In der IDE werden Sie den Code niemals verstehen - Sie müssen ihn ausführen und dann beobachten."

Und was ist mit denjenigen, die Jahre oder Jahrzehnte später mit Ihrem Code arbeiten wollen? Softwareentwicklungsexperte Avishai Ish-Shalom drückte es vor kurzem so aus: "Unsere 'moderne' Infrastruktur wie Linux, MySQL, PostgreSQL etc. ist Jahrzehnte alt - selbst 'moderne' Clouds sind inzwischen im mittleren Teenageralter. Noch besorgniserregender ist, dass sich diese Infrastruktur zwar als deutlich flexibler und stabiler erweist als unsere optimistischsten Vorhersagen - aber es zeigen sich Alterserscheinungen, was die Wartung und Entwicklung Jahr für Jahr schwieriger macht."

Wir alle leben in einer Legacy-Welt, sowohl im Hinblick auf neue als auch auf alte Legacy-Systeme. Wir gehen (manchmal) von Monolithen zu Microservices über, wechseln von Festplatten zu RAM und tun viele weitere Dinge, wenn wir an Hardware- oder Softwarebeschränkungen stoßen oder Möglichkeiten zur Nutzung neuer Fortschritte erkennen. Für diejenigen, die mit Systemen zu tun haben, die Jahre oder Jahrzehnte alt sind, wird es noch schlimmer, wie Yang ausführt: "Jedes System, das im letzten Jahr gebaut wurde, hat die gleichen Eigenschaften. Aber bei Systemen, die vor fünf oder zehn Jahren gebaut wurden sieht das anders aus. Jedes Legacy-System ist auf seine eigene Art und Weise veraltet." (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.