Wie man eine alte Website oder ein Legacy-Geschäftssystem modernisiert | POLPROG Skip to content

Wissen

Wie man eine alte Website oder ein Legacy-Geschäftssystem modernisiert

Veröffentlicht: 10 Min. Lesezeit POLPROG Modernisation
Platine, die den Übergang von Legacy- zu moderner Technologie darstellt

Legacy-Systeme werden häufiger schlecht ersetzt, als dass sie ersetzt werden. Der Unterschied liegt selten in der Technologie, sondern darin, ob das Team in kleinen, kontinuierlichen Schritten modernisiert oder versucht hat, alles auf einmal zu erledigen.

Alte Systeme haben zwei Dinge gemeinsam: Sie funktionieren, und sie machen alle nervös. Sie funktionieren, weil jahrelange Nutzung in der Praxis sie um das tatsächliche Geschäft herum geformt hat. Sie machen Menschen nervös, weil niemand sie anfassen will, die Dokumentation dünn ist und einer der ursprünglichen Entwickler vor drei Stellen gegangen ist.

Was tatsächlich als "Legacy" gilt

Nicht jedes alte System ist Legacy. Eine 10 Jahre alte Anwendung, die auf einem unterstützten Stack läuft, gut getestet ist und aktiv gepflegt wird, ist schlicht ausgereift. Legacy bedeutet typischerweise:

  • Plattform- oder Framework-Versionen, die keine Sicherheitsupdates mehr erhalten.
  • Wissen, das sich auf ein oder zwei Personen konzentriert.
  • Angst, Dinge zu ändern, weil kleine Änderungen entfernte Funktionen kaputtmachen.
  • Manuelle Deployments, manuelle Tests, alles manuell.
  • Eine wachsende Kluft zwischen dem, was das Geschäft braucht, und dem, was das System kann.

Die zwei scheiternden Ansätze

  • Nichts tun. Das Risiko verstärkt sich. Irgendwann bricht etwas Kritisches zu einem schlechten Zeitpunkt.
  • Von Grund auf neu schreiben. Ein Big-Bang-Neuschreiben dauert fast immer länger als geplant, entdeckt versteckte Anforderungen zu spät und läuft so lange parallel zum alten System, dass das Team aufgibt.

Die Ansätze, die tatsächlich funktionieren, liegen zwischen diesen beiden Extremen.

Strategie 1: Das alte System erdrosseln

Halten Sie das Legacy-System am Laufen, leiten Sie aber neue Funktionalität nach und nach durch eine neue Schicht. Mit der Zeit leben immer mehr Funktionen im neuen System; das alte wird kleiner, bis es schließlich abgeschaltet wird.

Das funktioniert für Websites (Seite für Seite verschieben), interne Tools (Modul für Modul verschieben) und Integrationen (ein neues API-Gateway einführen und Aufrufer dann dorthin umleiten).

Strategie 2: An Ort und Stelle modernisieren

Manchmal ist die Architektur in Ordnung, aber der Stack ist zu alt. In diesem Fall aktualisieren Sie eine Schicht nach der anderen: Sprache/Laufzeit, dann Bibliotheken, dann Framework, dann Deployment. Fügen Sie unterwegs automatisierte Tests hinzu, damit jeder Schritt überprüfbar ist. Nicht glamourös, aber sehr wirksam.

Strategie 3: Aufteilen, dann modernisieren

Große monolithische Systeme lassen sich oft leichter Stück für Stück modernisieren, sobald die Nahtstellen klar sind. Das bedeutet, zuerst Grenzen innerhalb des bestehenden Systems zu definieren (Module, Bounded Contexts) und dann Module unabhängig zu ersetzen. Die Grenzen zählen mehr als die Technologiewahl.

Was vor dem Schreiben von Code zu tun ist

  • Schreiben Sie auf, was das System heute tatsächlich tut, nicht, was es tun sollte.
  • Identifizieren Sie die Funktionen, auf die sich Menschen täglich verlassen, diese müssen den Übergang über funktionieren.
  • Identifizieren Sie tote Funktionen, sie machen oft einen bedeutenden Anteil des Codes aus und sollten still stillgelegt werden.
  • Erfassen Sie Daten, Integrationen, Berechtigungen und Exporte. Hier geraten Modernisierungsprojekte meist in Schwierigkeiten.
  • Legen Sie in messbaren Begriffen fest, was "fertig" bedeutet.

Risikokontrollen, die einen echten Unterschied machen

  • Backups und getestete Wiederherstellungen, vor jeder Änderung.
  • Automatisierte Tests für das Verhalten, das Ihnen wichtig ist, schrittweise eingeführt.
  • Feature-Flags, damit Änderungen in der Produktion ohne Deploy zurückgerollt werden können.
  • Observability, Logs, Error-Tracking, zentrale Geschäftskennzahlen, damit Sie schnell merken, wenn sich etwas verschlechtert.
  • Ein gestaffeltes Rollout: Neuer Code läuft zuerst für interne Nutzer, dann für einen kleinen Prozentsatz echter Nutzer, dann für alle.

Strangler-Fig-Muster. Statt eines riskanten Big-Bang-Neuschreibens leiten Sie den Traffic durch eine dünne Fassade, die nach und nach immer mehr Anfragen an neue Dienste weiterleitet, während das Legacy-System den Rest weiter bearbeitet, bis es leer ist.

Beispiel: eine minimale Fassaden-Route

Ein kleines Gateway kann pro Route entscheiden, ob eine Anfrage an den Legacy-Monolithen oder an den neuen Dienst geht. Framework-neutral geschrieben:

app.use((req, res, next) => {
  if (req.path.startsWith('/api/v2/invoices')) {
    return proxy(req, res, NEW_SERVICE_URL);
  }
  return proxy(req, res, LEGACY_URL);
});

Jedes migrierte Modul verschiebt ein Präfix von LEGACY_URL zu NEW_SERVICE_URL. Nutzer sehen nie eine Big-Bang-Umstellung; das Team liefert kleine, umkehrbare Schritte.

Häufige Falle: das neue und das alte System so zu schreiben, als müssten sie am ersten Tag funktional gleichwertig sein. Müssen sie nicht. Beginnen Sie mit dem kleinsten Teil, der echten geschäftlichen Wert hat, beweisen Sie den Migrationsweg und wiederholen Sie ihn dann.

Häufige Fehler

  • Modernisierung zur Frage der Technologiewahl machen. Schicke neue Stacks helfen nicht, wenn das Datenmodell und die Integrationen weiterhin rätselhaft sind.
  • Auf ein komplettes Redesign warten, bevor man die sichtbaren Probleme behebt. Die Nutzer zahlen den Preis; die Dynamik stirbt.
  • Das alte System zu früh abschalten. Lassen Sie beide lange genug parallel laufen, um dem neuen zu vertrauen.
  • Institutionelles Wissen verlieren. Arbeiten Sie mit den Menschen zusammen, die das System kennen. Ihr Wissen ist das eigentliche Kapital.

Ein realistischer Zeitplan

  1. Stabilisieren: Backups, Monitoring, Sicherheits-Patches, minimale Tests.
  2. Kartieren: dokumentieren, was existiert und was tatsächlich genutzt wird.
  3. Priorisieren: das Teil wählen, das jetzt schmerzhaft und wertvoll zu modernisieren ist.
  4. Ersetzen: die neue Version dieses Teils neben dem alten bauen.
  5. Umschalten: Traffic umleiten, überwachen, Probleme beheben.
  6. Stilllegen: das alte Teil erst außer Betrieb nehmen, nachdem es eine Weile ruhig war.
  7. Für das nächste Teil wiederholen.

Modernisierung gelingt, wenn sie schrittweise, beobachtbar und an konkreten geschäftlichen Wert gebunden ist. Zuerst stabilisieren, kartieren, was existiert, jeweils ein bedeutsames Teil ersetzen und das Geschäft währenddessen am Laufen halten. Langweilig schlägt heldenhaft, und es ist der einzige Ansatz, der zuverlässig funktioniert.

Legacy Modernisation Refactoring

Häufig gestellte Fragen

Lohnt sich ein Neuschreiben von Grund auf jemals?

Gelegentlich, bei kleinen Systemen oder wenn die zugrunde liegende Plattform wirklich nicht mehr zu retten ist. Bei allem von echter Größe und echtem Alter ist die schrittweise Modernisierung, das Geschäft am Laufen zu halten, während Teile ersetzt werden, fast immer sicherer und günstiger.

Wie entscheiden wir, was zuerst modernisiert wird?

Wählen Sie die Schnittmenge aus heute schmerzhaft und wertvoll zu ändern. Ein Modul, das oft kaputtgeht, ein Geschäftsziel blockiert und von jemandem im Team gut verstanden wird, ist ein perfekter Kandidat. Vermeiden Sie es, mit dem komplexesten, am wenigsten verstandenen Bereich zu beginnen.

Was ist mit der Datenmigration?

Daten sind meist der schwierigste Teil. Planen Sie sie ausdrücklich ein: Exportformat, Mapping-Regeln, Validierung, ein Probelauf mit echten Daten und ein Rollback-Plan. Viele Modernisierungsprojekte geraten ins Stocken, weil Sonderfälle bei den Daten zu spät entdeckt wurden.

Können wir das ohne ein dediziertes Team schaffen?

Bei kleinen Systemen manchmal. Bei allem Geschäftskritischen nein, zumindest nicht schnell. Modernisierung braucht anhaltenden Fokus, nicht übrige Stunden. Deshalb funktionieren schrittweise Ansätze: Sie ermöglichen es einem kleinen Team, Wert zu liefern, ohne eine vollständige parallele Organisation zu brauchen.

War das hilfreich?

Neue Artikel per E-Mail erhalten

Eine kurze E-Mail pro neuem Wissens-Artikel. Kein Spam, Abmeldung mit einem Klick.

Wir nutzen Ihre E-Mail nur, um neue Artikel zu versenden. Keine Weitergabe an Dritte.

Zurück zu Wissen