Retour au blog
PHP

Migration Symfony de 2.8 à 6.4

14 Apr 2024 12 min
Symfony Migration PHP

Migrer Symfony sans interruption de service

La migration d'une application Symfony de la version 2.8 à 6.4 est un défi majeur. Chez Keytchens, nous avons réalisé cette migration sur une plateforme en production gérant des commandes en temps réel, sans aucune interruption de service.

Stratégie de migration progressive

Plutôt qu'une réécriture complète, nous avons opté pour une migration incrémentale :

  • Phase 1 : Symfony 2.8 → 3.4 (compatibilité ascendante)
  • Phase 2 : Symfony 3.4 → 4.4 (migration vers la structure Flex)
  • Phase 3 : Symfony 4.4 → 5.4 (suppression des dépréciations)
  • Phase 4 : Symfony 5.4 → 6.4 (adoption PHP 8.1+)

Outils indispensables

# Détecter les dépréciations
composer require symfony/phpunit-bridge
PHPUnit_SYMFONY_DEPRECATIONS_HELPER=max[total]=0 php bin/phpunit

# Rectifier automatiquement
composer require rector/rector
vendor/bin/rector process src --set symfony54

Points critiques

# Migration des services (avant - services.yml)
services:
    app.manager.order:
        class: App\Manager\OrderManager
        arguments: ['@doctrine.orm.entity_manager']

# Après - services.yaml avec autowiring
services:
    _defaults:
        autowire: true
        autoconfigure: true
    App\:
        resource: '../src/'

Gestion du zero-downtime

Pour maintenir le service pendant la migration :

  • Déploiement blue-green avec Docker
  • Feature flags pour activer progressivement les nouvelles fonctionnalités
  • Tests de régression automatisés couvrant 85% du code
  • Rollback automatique en cas de détection d'erreurs

Cette migration a permis d'améliorer les performances de 40% et de réduire la dette technique de manière significative.