LEGACY · MIGRATION
Legacy-PHP modernisieren
Der gewachsene Monolith ist selten schön — aber er verdient Geld. So modernisieren Sie Alt-PHP, ohne den laufenden Betrieb zu riskieren.
Fast jedes Unternehmen mit ein paar Jahren auf dem Buckel hat es: ein PHP-System, das über die Zeit gewachsen ist, geschäftskritisch läuft — und das niemand mehr gern anfasst. Alte PHP-Version, keine Tests, verflochtene Zuständigkeiten, Wissen in den Köpfen einzelner Personen. Der Reflex „einmal komplett neu bauen" ist verständlich. In der Praxis ist er meistens die teuerste und riskanteste Option.
Ich habe genau solche Systeme modernisiert — unter anderem als Lead-Entwickler bei ALDI Nord, wo ein gewachsener Monolith auf Symfony 6.4 überführt wurde. Dieser Artikel fasst zusammen, wie man dabei vorgeht, ohne den Betrieb zu gefährden.
Warum „einmal neu bauen" so oft scheitert
Der große Neubau (Big-Bang-Rewrite) klingt verlockend, hat aber drei strukturelle Probleme:
- Das Altsystem entwickelt sich weiter. Während Sie monatelang neu bauen, braucht das laufende Geschäft weiter Änderungen. Sie treffen ein bewegliches Ziel.
- Verstecktes Wissen geht verloren. In gewachsenem Code steckt jahrelange Fachlogik — Sonderfälle, die niemand dokumentiert hat. Ein Rewrite verliert genau diese unsichtbaren Regeln.
- Kein Wert vor dem großen Knall. Sie investieren lange, ohne etwas auszuliefern, und der Umstieg wird zu einem einzigen riskanten Moment.
Der bessere Weg: Strangler-Fig
Die bewährte Alternative ist das Strangler-Fig-Muster (nach der Würgefeige, die einen Baum langsam umwächst). Statt alles auf einmal zu ersetzen, wächst das neue System schrittweise um das alte herum — und übernimmt Stück für Stück Funktionen, bis das Altsystem irgendwann überflüssig ist.
Konkret heißt das:
- Ein modernes Framework (etwa Symfony) läuft parallel zum Altsystem.
- Ein Routing-Layer entscheidet pro Anfrage, ob das alte oder das neue System antwortet.
- Neue Features und sanierte Bereiche entstehen im neuen System; der Rest bleibt vorerst unangetastet.
- Mit jedem migrierten Teil schrumpft der Altbestand — bis er verschwindet.
So liefern Sie kontinuierlich Wert, halten das System jederzeit lauffähig und begrenzen das Risiko auf kleine, überschaubare Schritte.
Schritt 1: Sichtbarkeit schaffen
Bevor man an Altcode etwas ändert, braucht man ein Sicherheitsnetz. Ohne Tests ist jede Änderung ein Blindflug.
- Charakterisierungstests halten das aktuelle Verhalten fest — auch das fehlerhafte. Sie dokumentieren, was das System tatsächlich tut, bevor Sie es anfassen.
- Static Analysis (etwa PHPStan) deckt offensichtliche Risiken und tote Pfade auf.
- Monitoring zeigt, welche Teile überhaupt genutzt werden — oft kann man Toten Code einfach entfernen.
Schritt 2: Die richtige Reihenfolge
Nicht alles ist gleich dringend. Ich priorisiere nach zwei Achsen: geschäftlicher Wert und Änderungshäufigkeit. Bereiche, die oft angefasst werden und wichtig sind, werden zuerst saniert — dort zahlt sich saubere Struktur am schnellsten aus. Stabile, selten geänderte Teile können lange unangetastet bleiben.
Schritt 3: PHP-Version und Abhängigkeiten
Eine veraltete PHP-Version ist ein Sicherheits- und Kostenrisiko. Der Sprung von PHP 5.x oder frühem 7.x auf PHP 8 bringt spürbar bessere Performance, Typsicherheit und Wartbarkeit. Das gelingt am besten schrittweise: Abhängigkeiten aktualisieren, mit Werkzeugen wie Rector automatisiert modernisieren und jeden Schritt mit Tests absichern.
Schritt 4: Wissen aus den Köpfen holen
Das größte Risiko in Altsystemen ist nicht der Code, sondern das Bus-Faktor-Problem: Wenn nur eine Person weiß, wie etwas funktioniert, ist jede Änderung fragil. Modernisierung heißt deshalb auch, Wissen zu externalisieren — in Tests, in Dokumentation, in klare Strukturen, die für sich selbst sprechen.
Was das für Sie bedeutet
Legacy-Modernisierung ist kein Prestigeprojekt, sondern Risikomanagement. Richtig gemacht, senkt sie Wartungskosten, schließt Sicherheitslücken und macht Ihr System wieder änderbar — ohne dass Ihr Tagesgeschäft je stillsteht.
Der Schlüssel ist die schrittweise Vorgehensweise: sichtbar machen, absichern, in kleinen Schritten ersetzen. Kein Big-Bang, kein Blindflug.
Sie haben ein System, das niemand mehr gern anfasst? Ich sehe mir das gern an und sage Ihnen ehrlich, ob und wie sich eine Modernisierung lohnt. Sprechen wir darüber. Mehr zu meiner Arbeit finden Sie unter Symfony- & PHP-Entwicklung.
Lassen Sie uns bauen.
Erzählen Sie mir von Ihrem Projekt — ich melde mich persönlich.
Projekt anfragen