5 Tipps, wie Sie Ihre Symfony-Anwendung sicher am Laufen halten

  • Administrator Administrator
  • 27.06.2022

5 Tipps für Ihre Symfony Updates

Digitalisierung ist ein kontinuierlicher Prozess des Fortschritts. Die unterschiedlichen verwendeten Technologien werden ständig weiterentwickelt. So auch die verwendeten Programmiersprachen wie PHP und deren Frameworks wie Symfony oder Laravel. Um all die verwendeten Systeme und Frameworks auf dem Laufenden zu halten, benötigt man viel Zeit und Muße für kontinuierliche Updates und Upgrades.

Auch wir als Internetagentur verwenden viele unterschiedliche Frameworks und müssen diese stetig aktualisieren und auf dem Laufenden halten. Wir aktualisieren unterschiedlichste Technologien entsprechend seit über 20 Jahre. Das kann manchmal überaus “nervig” sein, trotzdem ist es absolut notwendig. Daher hat sich in diesem Bereich auch ein ordentlicher Know-How-Pool mit funktionierenden Workflows in unserer Digitalagentur aufgebaut. Unserer Erfahrung nach sind kontinuierliche Updates von System ein großes Thema und einige Webseitenbetreiber hinken mit Ihrer Versionen deutlich hinterher. Daher möchten wir mit Ihnen einige Strategien und Techniken, wie Sie Ihre Systeme auf einem aktuellen Stand halten können, teilen.

TIPP NR. 1: VORGEHEN MIT JAHRES PLAN

Sie müssen sich nicht genau an die Release-Zyklen Ihres Frameworks halten. Symfony hat beispielsweise einen sehr entwicklerfreundlichen, festgelegten Release-Zyklus: Minor Updates erfolgen alle sechs Monate und Major Updates alle zwei Jahre. Da aber meistens noch andere Frameworks und Technologien im Einsatz sind, die ebenfalls auf den neuesten Stand gebracht werden wollen, sollten Sie sich alle 6 Monate ein festes Zeitfenster einplanen, in dem Sie Ihre Systeme überarbeiten und upgraden können. Es bietet sich beispielsweise an, PHP zeitnah mit Symfony zu aktualisieren.

TIPP NR. 2: ÜBERBLICK BEHALTEN

Dokumentieren Sie die Versionen Ihrer Technologien in Ihren unterschiedlichen Projekten, damit Sie immer den Überblick über die Aktualität Ihrer Sprachen, Frameworks und Systeme haben. Verwalten Sie alles am besten an einem Ort zum Beispiel in einer Tabelle. Hier sollten Sie auch den End of Life der jeweiligen Version dokumentieren, damit Sie entsprechende Fristen auf einem Blick haben.

TIPP NR. 3 AKTUALITÄT ÜBERPRÜFEN

Schauen Sie regelmäßig auf den Anbieterseiten Ihrer verwendeten Technologien nach und erkundigen Sie sich über Lebensdauer, Versionen und Supportzeiten. Versuchen Sie, Ihre Systeme auf dem neuesten Stand zu halten. In der Regel reicht hierfür ein sechsmonatiger Update-Zyklus aus. Patches und kleine Updates benötigen, wenn überhaupt, nur einen kurzen Review und sollten regelmäßig und nicht erst nach einem halben Jahr erfolgen. Von einer Automatisierung raten wir ab, da man sich dann häufig zu abhängig macht und wichtige Änderungen ggf. nicht rechtzeitig mitbekommen. Der Fall Color.js & faker.js hat beispielsweise durch ein solches Vorgehen bei einigen für viele schlaflose Nächte gesorgt.

Für PHP finden Sie diese Informationen auf: https://www.php.net/supported-versions.php Die Symfony Release-Zyklen können Sie hier einsehen: https://symfony.com/releases

Sie können aber auch direkt über Ihre Konsole den aktuellen Stand Ihrer Technologien abfragen.

PHP: 
$ php -v
PHP 8.1 (cli) (built: Nov 25 2021 13:25:48 ( NTS )
Copyright (c)  The PHP Group

Symfony:
Nutzen Sie ./bin/console --version um die aktuelle Version herauszufinden

$ ./bin/console --version
Symfony 5.3.6 (env: dev, debug: true)
´´´´

Wenn Sie die Version eines Composer-Paket erfahren möchten, können Sie folgenden Befehl verwenden:

´´´´
composer show symfony/flex
´´´´

Durch dieses Vorgehen erhalten Sie alle notwendigen Informationen, die Sie für die Versionierung benötigen. Je kleiner der Abstand zwischen den Versionen, desto leichter wird das Upgrade und desto weniger Anpassungen müssen Sie vornehmen. Wenn Sie also regelmäßig Minor Updates durchführen und gegebenenfalls auftauchende Deprecations direkt anpassen, ist der Aufwand geringer und leichter handelbar, als wenn Sie jedes Mal direkt die Major Updates durchführen.

TIPP NR. 4 UPDATES VORBEREITEN

Es ist endlich so weit. Laut dem Plan stehen demnächst wieder Updates an. Überprüfen Sie das aktuell verwendete System und seine grundlegenden Funktionen auf Fehler.

TIPP NR. 5 HILFREICHE HINWEISE ZUM SYMFONY UPDATE

Ist Ihr CLI Tool auf dem neuesten Stand? Vor dem Update sollten Sie Ihr CLI Tool aktualisieren. Indessen müssen Sie je nach Aktualität und Versionierungsprozess ein Patch-, Minor- oder Major-Upgrade durchführen. Wenn Sie eine Major Update machen müssen, ist Ihr Code eventuell veraltet. Es kommt darauf an, wie häufig Sie vorher Minor- und Patch-Updates durchgeführt und den als deprecated markierten Code angepasst haben. Haben Sie das getan, steht dem Major-Update nichts mehr im Wege.

Wenn nur kleinere Updates notwendig sind - z. B. ein Minor-Update, müssen Sie nur die Versionsnummer in composer.json aktualisieren und dann die neuen Versionen mit Composer installieren.

Damit Sie sich das nicht nur vorstellen müssen, zeigen wir Ihnen das oben beschriebe kurz anhand von folgenden Beispielen.

ALLGEMEIN

Aktualisieren Sie Ihre composer.json Datei und lassen Sie über die neu installierten Versionen Tests laufen. Wenn alle Tests erfolgreich abgeschlossen sind, können Sie die neueste Version committen. Checken Sie Ihre composer.lock Datei nach dem Update der Dependencies in Ihr Versionierungssystem ein. Das hilft Ihnen zum Beispiel bei der Fehlersuche. Sollte eine Funktion Ihres Codes auf einmal kaputt sein, können Sie so lange in in Ihrer History zurückgehen, bis Sie den Commit gefunden haben, bei dem die Funktion wieder funktioniert. Durch dieses Vorgehen können Sie herausfinden, welches Update/ Feature einen Fehler hervorgerufen hat und leichter entsprechende Anpassungen vornehmen. Verwenden Sie composer update nur für explizite Patches. Für eine Projektinstallation sollte immer composer install verwendet werden. Durch die Versionierung des Lock-Files werden somit immer die zum Code passenden Versionen der Abhängigkeiten installiert.

BEISPIEL FÜR EIN SYMFONY-PATCH-UPDATE:

Bsp. 5.3.9 auf 5.3.10 Patch Updates (letzte Zahl ändert sich) beinhalten meistens nur kleinere Bugfixes und sind am einfachsten durchzuführen.

Für ein Patch-Upgrade müssen Sie nur ein Composer Update durchführen. Mit dem folgenden Befehl werden die aktuellen Patches heruntergeladen und installiert.

´´´´ 1 | composer update ´´´´ Im gleiche Zug sollten Sie das Symfony Security Checker-Tool erneuern. ´´´´ 1 | symfony check:security ´´´´ Mehr Informationen: https://symfony.com/doc/current/setup/upgrade_patch.html

BEISPIEL FÜR EIN SYMFONY-MINOR-UPDATE:

Bsp. 5.3. auf 5.4

Bei Updates mit Minor-Versionen (mittlere Zahl ändert sich) besteht in der Regel weiterhin eine Abwärtskompatibilität, diese fällt erst mit Major-Updates weg. Folgende Schritte müssen Sie durchführen.

  • Aktualisieren Sie Ihre Symfony Library mit Composer
    • Aktualisierung der Versionsbeschränkungen
    • Aktualisierung des “extra” Blocks
    • Download der neuen Libraries

  • Aktualisieren Sie Ihren Code
    • Überprüfen Sie Ihren Code auf veraltete Funktionen, jede Symfony Version enthält eine UPGRADE Datei (z. B. UPGRADE -6.1.md). Diese ist im Symfony Verzeichnis enthalten und beschreibt die neuen Änderungen. Folgen Sie den Anweisungen und passen Sie Ihren Code entsprechend an. Es lohnt sich, Deprecations bereits in den Minor-Versionen anzupassen. Dann wird nichts vergessen und der Aufwand zur Anpassung von Deprecations in den Major-Updates verringert sich.

BEISPIEL FÜR EIN SYMFONY-MAJOR-UPDATE:

Bsp.: Update von 5.4 auf 6

Wer ein Major-Update durchführt, ändert entsprechend die erste Zahl seiner Symfony-Versionsnummer.

  • Behebung von Deprecations:
    • Ganz klar: wenn nicht vorher in den Minor-Updates geschehen, dann müssen Sie spätestens jetzt Deprecations beheben und den Code überprüfen. Normalerweise “überspringt” decprecated Code eine Major-Version und der als deprecated markierte Code funktioniert erst mit der übernächsten Version nicht mehr. Sie haben, wenn Sie planvoll vorgehen, also genügend Zeit, um den Code anzupassen. Mit PHPUnit-Bridge erhalten Sie am Ende eine top Zusammenfassung über alle Abwärtskompatibilitäts-Problematiken. Ebenso werden in der Regel für deprecated Code sinnvolle Alternativen angezeigt.

  • Aktualisierung von Libraries & Packages
    • Wenn alle Deprecations entfernt wurden, können Sie alle Libraries , die mit symfony/ beginnen erneuern. Ebenso sollten Sie die damit in Verbindung stehenden Abhängigkeiten und Packages erneuern.

  • Aktualisierung von Recipes
    • nutzen Sie Symfony Flex, um Ihre Recipes zu aktualisieren, sofern neue verfügbar sind.

Sie möchten Ihr System von 4.4 auf 5 oder von 5.4 auf 6 aktualisieren? Dabei helfen wir Ihnen natürlich gerne. Sollte Ihr System älter sein, dann natürlich auch :). Nehmen Sie gerne Kontakt mit uns auf.