Canada · Livré en production

Une plateforme métier passée de Symfony 3.4 à Symfony 7.

Collection Souvenir produit des souvenirs commémoratifs pour les maisons funéraires au Canada. La vitrine publique existait déjà. J’ai migré la plateforme métier — commandes, atelier, opérateurs — de Symfony 3.4 vers Symfony 7, livrée en production.

CadreCanada
RôleMigration legacy → Symfony 7
StatutLivré · production

Héritage

Symfony 3.4

Monolithe bundles (Backend / Frontend), PHP d’époque 5.5+, Doctrine 2, AppKernel. Point de départ de la migration, aujourd’hui remplacé.

Production

Symfony 7

PHP 8.3, Doctrine ORM 3, Security, Messenger, Mailer, Twig, Stimulus / Turbo. Même métier, autre socle — livré en production.

SurfacesAtelier · clients · API
StackPHP 8.3 · Symfony 7.1 · Doctrine 3
QualitéPHPStan · Rector · CI

Problème métier

Une application critique d’atelier ne se jette pas. Symfony 3.4 n’est plus maintenu : recrutement, sécurité, dépendances et évolutions deviennent coûteux. Il faut porter commandes, jobs de production, opérateurs, catalogue et espaces clients sur un Symfony actuel, tout en gardant le comportement métier de l’existant.

Architecture

Le legacy était découpé en deux bundles Symfony 3. La production reprend les mêmes surfaces, avec une couche Application (managers de jobs, opérateurs, produits, commandes) au-dessus des entités Doctrine, plus une API pour les partenaires. Ce n’est pas un greenfield : le schéma et les parcours existants ont contraint chaque module.

  1. LegacySymfony 3.4 · bundles Backend / Frontend · Doctrine 2 · PHP historique
  2. MétierJobs de production · opérateurs · catalogue · commandes · clients / salons · rapports
  3. ProductionPHP 8.3 · Symfony 7.1 · Doctrine 3 · Messenger · Mailer · monitoring
  4. UIBack-office atelier · espace frontend · API · Twig + Stimulus / Turbo

Points forts

Lire le legacy avant de le remplacer

Comprendre les bundles, les jobs d’atelier et les parcours clients, puis les reporter module par module — pas une réécriture à l’aveugle.

Saut de génération, pas un lift cosmétique

De Symfony 3.4 / PHP 5.5+ à PHP 8.3 / Symfony 7 / Doctrine 3. Rector, PHPStan et PHP CS Fixer tiennent la barre pendant le portage.

Trois surfaces, un domaine

Atelier (opérateurs, jobs, production), espace clients / maisons funéraires, API de commandes. Le métier reste bilingue FR/EN.

Qualité dès la migration

CI GitHub Actions (PHP 8.3, PHPStan, CS-Fixer), monitoring applicatif, Messenger et Mailer sur le nouveau socle — là où le 3.4 n’avait plus d’avenir.

Mon rôle

Analyse du code legacy, portage vers Symfony 7, modèle de données, back-office, frontend métier, API et qualité (PHPStan, Rector, CI).

Livrables et résultats

Public et vérifiable

Réalisé dans le cadre de ma mission

  • Migration livrée : PHP 8.3, Symfony 7.1, Doctrine 3 en production.
  • CI : PHPStan et PHP CS Fixer sur PHP 8.3.

Stack

Legacy

  • PHP 5.5+
  • Symfony 3.4
  • Doctrine 2
  • Bundles SF3

Production

  • PHP 8.3
  • Symfony 7.1
  • Doctrine ORM 3
  • Messenger
  • Twig
  • Stimulus
  • Turbo

Qualité

  • PHPStan
  • PHP CS Fixer
  • Rector
  • PHPUnit
  • GitHub Actions

Autres études de cas