Paul Schell

Symfony-Upgrade ohne Big-Bang-Rewrite

Dein Projekt läuft noch auf Symfony 2, 3, 4 oder 5? Ich hebe es in kleinen, einzeln ausrollbaren Schritten auf eine aktuelle LTS-Version, ohne den laufenden Betrieb anzuhalten.

Woran du erkennst, dass ein Upgrade fällig ist

  • Die eingesetzte Symfony- oder PHP-Version bekommt keine Sicherheitsupdates mehr.
  • Composer-Abhängigkeiten lassen sich nicht mehr aktualisieren, weil sie neuere Versionen voraussetzen.
  • Neue PHP-Versionen oder Bibliotheken sind nicht nutzbar.
  • Bundles von Drittanbietern werden nicht mehr gepflegt.
  • Neue Entwickler finden sich im alten Aufbau kaum zurecht.

Welche Symfony-Versionen noch unterstützt werden, zeigt die offizielle Übersicht auf symfony.com/releases.

So gehe ich vor

  1. Bestandsaufnahme: Symfony- und PHP-Version, Abhängigkeiten, vorhandene Tests und Deprecations. Du bekommst eine kurze, priorisierte Übersicht.
  2. Absichern: Tests an den kritischen Stellen, statische Analyse und eine reproduzierbare Umgebung, bevor ich etwas umbaue.
  3. Deprecations abarbeiten: Veraltete Aufrufe werden innerhalb der aktuellen Version behoben. Jede erledigte Deprecation macht den nächsten Schritt kleiner.
  4. Von LTS zu LTS: Ich gehe die Versionen nacheinander durch, zum Beispiel 3.4, 4.4, 5.4, 6.4 und 7.4. Jede Etappe lässt sich ausrollen und bei Bedarf zurücknehmen.
  5. Aufräumen: Typen, Attribute statt Annotations, Services und Konfiguration auf den heutigen Stand bringen.

Ein Sprung über mehrere Hauptversionen auf einmal ist selten sinnvoll, weil sich Fehler dann kaum noch eingrenzen lassen.

Typische Stolpersteine

  • Services, die per $this->get() aus dem Container geholt werden
  • Alte Bundle-Struktur und altes Verzeichnislayout (app/ statt src/ und config/)
  • Umbau des Security-Systems auf Authenticatoren
  • Annotations, die durch PHP-Attribute ersetzt werden
  • Nicht mehr gepflegte Drittanbieter-Bundles
  • Eine PHP-Version, die für die nächste Symfony-Stufe zu alt ist

Was du am Ende hast

  • Eine Anwendung auf einer unterstützten LTS-Version, die weiterhin Updates erhält
  • Nachvollziehbare Änderungen in kleinen Commits oder Branches
  • Eine kurze Dokumentation dessen, was sich geändert hat und worauf man achten muss

Häufige Fragen

Wie lange dauert ein Symfony-Upgrade?

Das hängt von Größe, Testabdeckung und Zustand der Abhängigkeiten ab. Nach der Bestandsaufnahme nenne ich dir eine fundierte Einschätzung statt einer Pauschale.

Muss die Anwendung während des Upgrades offline gehen?

Nein. Das Ziel sind kleine Schritte, die jederzeit live gehen können. Die Anwendung bleibt in Betrieb.

Lohnt sich ein Upgrade oder besser ein Neubau?

Das entscheide ich nicht pauschal. In der Bestandsaufnahme prüfe ich, ob sich das Upgrade lohnt oder ob einzelne Teile ersetzt werden sollten. Ein kompletter Neubau ist die letzte Option.

Welche Versionen betreust du?

Ich arbeite mit Symfony 2 bis 7.

Aus dem Blog

Weitere Leistungen