Refonte SaaS legacy Symfony
Modernisez votre SaaS Symfony vieillissant sans tout réécrire. Migration progressive par Strangler Pattern, automatisation Rector, montée de version PHP et Symfony LTS, production préservée, dette technique éliminée.
Pourquoi refondre un SaaS legacy Symfony ?
Vous éditez un SaaS B2B en production depuis 5, 8 ou 12 ans. Le produit tourne, vos clients paient, mais chaque évolution devient un combat. Les déploiements vous stressent, les montées de version PHP sont repoussées d'année en année, et votre Symfony 3, 4 ou 5 accumule une dette technique qui pèse sur vos marges. La question n'est plus de savoir si vous devez refondre, mais comment le faire sans casser la production.
Une refonte SaaS legacy Symfony ne consiste pas à tout réécrire depuis zéro. C'est une démarche progressive, qui consolide l'existant tout en migrant pièce par pièce vers une stack moderne (Symfony en version LTS, Doctrine ORM 3, Twig 3, AssetMapper). L'objectif : retrouver de la vélocité de développement, sécuriser le produit face aux vulnérabilités OWASP Top 10, et préparer le SaaS aux 10 prochaines années sans interrompre l'activité commerciale.
Je vous accompagne sur ce type de chantier en tant que développeur Symfony solo, depuis les Ardennes. Pas d'équipe offshore, pas de turn-over consultant, un interlocuteur unique qui comprend votre code legacy et garde la maintenance opérationnelle pendant toute la durée de la refonte de votre application SaaS sur-mesure.
Les signaux qui indiquent qu'il faut refondre votre SaaS legacy
Une refonte n'est jamais un caprice technique. Elle se décide quand plusieurs signaux convergent et menacent la pérennité du produit ou la sécurité des données clients.
Version PHP ou Symfony non maintenue
Vous tournez encore sur PHP 7.x ou Symfony 3 / 4 / 5 ? Ces versions ne reçoivent plus de correctifs de sécurité. Chaque mois passé augmente votre exposition aux failles connues et bloque l'adoption de bibliothèques modernes.
Deprecations Doctrine accumulées
Les logs débordent de deprecation notice Doctrine, Twig ou Symfony. Le code marche encore, mais chaque montée mineure devient un champ de mines. La dette technique se paie en heures de debug.
Webpack Encore figé
Votre front est verrouillé sur une vieille version de Webpack Encore, avec des dépendances npm obsolètes. Le passage à AssetMapper (la voie recommandée par Symfony depuis la 6.3) est repoussé indéfiniment.
Tests inexistants ou cassés
Pas de couverture PHPUnit, ou une suite qui n'a pas tourné depuis 2 ans. Chaque livraison repose sur de la recette manuelle. Vos développeurs n'osent plus toucher au cœur métier.
Time-to-market dégradé
Une fonctionnalité qui prenait 3 jours en prend désormais 3 semaines. Les bugs collatéraux explosent. Vos équipes produit s'agacent, vos commerciaux perdent des deals faute de roadmap tenable.
Performance en chute libre
Les pages mettent 4 à 8 secondes à se charger, les requêtes SQL explosent en N+1, et les Core Web Vitals de votre SaaS Symfony sont au rouge. Vos utilisateurs partent en silence.
Notre méthode : Strangler Pattern + Rector
Refondre un SaaS legacy en mode big bang (tout réécrire, basculer en une nuit) est la pire des stratégies. Ce schéma a tué plus de projets qu'il n'en a sauvé. Chez ARDNTECH, j'applique le Strangler Pattern popularisé par Martin Fowler : on enveloppe l'existant, on extrait progressivement les modules, et on retire le code legacy au fur et à mesure.
1. Audit technique et cartographie de la dette
La première étape consiste à mesurer l'existant : version PHP/Symfony, qualité du code via PHPStan, dépendances obsolètes via composer outdated, points chauds de performance, couverture de tests. Cet audit livre une carte précise de la dette et un plan de migration par paliers.
2. Sécurisation du socle (tests, CI, monitoring)
Avant de toucher au code legacy, on met en place le filet de sécurité : tests caractérisation sur les parcours critiques, pipeline CI GitLab ou GitHub Actions, monitoring infrastructure. Sans ce socle, toute refonte avance à l'aveugle.
3. Migration automatisée avec Rector
Rector applique des règles de transformation de code (montée de version PHP, deprecations Doctrine, modernisation Symfony) sur l'ensemble du projet en quelques heures, là où une équipe mettrait des semaines à la main. Couplé à PHPStan niveau 8 et au CS Fixer, c'est l'outil qui transforme une refonte risquée en chantier industrialisable.
4. Extraction des modules par bounded context
Les briques métier identifiées comme prioritaires sont réécrites dans le périmètre cible (Symfony LTS, Doctrine 3, MariaDB ou PostgreSQL), puis branchées en parallèle de l'ancien code via un routeur applicatif. Quand le nouveau module est stable, l'ancien est supprimé. Production jamais interrompue.
5. Migration des données et bascule
Les schémas Doctrine évoluent via migrations versionnées, les données sont rétro-compatibles le temps de la coexistence des deux modèles. La bascule finale d'un module se fait sur un feature flag, réversible en 10 secondes en cas de souci.
Cas concret : migration Symfony 6 vers 7 chez un éditeur SaaS B2B
Un éditeur SaaS B2B du secteur télécom (facturation et gestion de parc opérateurs) m'a contacté avec une application Symfony 6 stable mais figée. La promesse d'évolution était bloquée : le passage à Symfony 7 traînait depuis 18 mois, faute de temps pour s'y mettre proprement.
Le diagnostic a révélé les points classiques de ce type de migration : annotations Doctrine non migrées en attributs PHP 8, services configurés en autowire: false, contrôleurs étendant un BaseController maison à refactorer, dépendances Webpack Encore à basculer vers AssetMapper, et plusieurs bundles abandonnés à remplacer.
La méthode appliquée :
| Palier | Action | Durée |
|---|---|---|
| 1 | Audit PHPStan niveau 5, cartographie deprecations, mise en place CI | 1 semaine |
| 2 | Migration annotations vers attributs PHP 8 via Rector | 3 jours |
| 3 | Montée Symfony 6.4 LTS, résolution deprecations | 1 semaine |
| 4 | Bascule Webpack Encore vers AssetMapper | 4 jours |
| 5 | Montée Symfony 7, ajustements finaux, PHPStan niveau 8 | 1 semaine |
| 6 | Recette client, déploiement progressif avec feature flags | 1 semaine |
Bilan : Symfony 7 en production, build front divisé par deux en temps de compilation, suite PHPUnit passée de 12 % à 64 % de couverture sur les modules critiques, et surtout, équipe interne autonome pour poursuivre l'effort. La production n'a jamais été coupée plus de 2 minutes (fenêtre de bascule planifiée le dimanche soir).
Pourquoi un solo expert Symfony plutôt qu'une agence ?
Une refonte SaaS legacy demande de la continuité, de la rigueur méthodologique et une connaissance fine du framework. C'est précisément ce qu'une agence à turn-over élevé peine à offrir, et ce qu'un solo expert garantit par construction.
| Critère | Agence classique | Solo expert ARDNTECH |
|---|---|---|
| Interlocuteur | Chef de projet + 2 à 4 développeurs rotatifs | Un seul, du devis à la mise en production |
| Connaissance du legacy | Onboarding répété à chaque turn-over | Capitalisée sur toute la durée du chantier |
| Coût indirect | Marge agence, frais de structure, refacturation | Pas de marge intermédiaire |
| Réactivité | Cycle ticket, validation hiérarchique | Décision et action dans la même demi-journée |
| Maintenance pendant la refonte | Équipe séparée, friction de coordination | Même personne, même contexte |
Pour aller plus loin sur les choix d'architecture cible, consultez le guide architecture multi-tenant SaaS : isolation et mutualisation, ainsi que la trame de cahier des charges SaaS sur-mesure pour cadrer le périmètre de refonte. Côté sécurité, l'audit cybersécurité TPE sert souvent de point d'entrée avant le chantier de refonte.
Chaque chantier de refonte est dimensionné après un échange initial gratuit de 30 minutes pour comprendre votre stack actuelle, vos contraintes business et vos priorités. Le scope et le planning sont ensuite formalisés en devis personnalisé, sans engagement.
Notre approche
Analyse de vos besoins
Nous prenons le temps de vous connaître et de comprendre vos besoins pour vous offrir la meilleure solution à votre projet
Développement
Nous travaillons en étroite collaboration avec vous pour concevoir et développer votre projet en respectant les normes et les meilleurs standards de qualité
Livraison et suivi
Nous assurons la livraison et le suivi de votre projet pour garantir votre satisfaction et votre réussite sur le long terme
Nos engagements
Développer du logiciel sur-mesure, c'est bien. Le faire avec un impact positif sur la planète et une relation équitable avec nos clients, c'est notre raison d'être.
Hébergement écoresponsable, tarification transparente co-construite avec vous, code optimisé pour durer : nous refusons de choisir entre performance technique et responsabilité. Chez ARDNTECH, les deux vont de pair.
Nos autres services
Votre projet mérite un hébergement à la hauteur : serveurs éco-énergétiques, monitoring continu et maintenance proactive.
Découvrez notre service de développementVotre projet SaaS mérite un hébergement à la hauteur : serveurs éco-énergétiques, monitoring continu et maintenance proactive.
Découvrez notre service d'hébergementNos témoignages
Incroyable entreprise, service optimale. je recommande fortement.
Mathis • Developer Full Stack Voir le projetAdrien a permis à TeleSoft de faire face à des situations parmi les plus extrêmes, telles que l'incendie dans le datacenter d'OVH.
Benoît • Account Manager Voir le projetFaire appel à Adrien, c'est synonyme d'une garantie de résultat, d'un travail sérieux, d'une bonne organisation et d'un accompagnement personnalisé.
David • Account Manager Voir le projetFAQ Refonte SaaS legacy Symfony
Vos questions sur la refonte d'un SaaS Symfony existant, la méthode Strangler Pattern et les outils utilisés.
Une refonte SaaS legacy Symfony consiste à moderniser progressivement une application web vieillissante (Symfony 3, 4, 5 ou 6) sans interrompre la production. L'objectif n'est pas de tout réécrire, mais de remplacer pièce par pièce les composants obsolètes : montée de version PHP, migration Doctrine, bascule Webpack Encore vers AssetMapper, modernisation Twig, suppression des deprecations. Le résultat est une application alignée sur la version LTS de Symfony, sécurisée et maintenable pour les 5 à 10 prochaines années.
Repartir de zéro semble séduisant, mais c'est statistiquement la voie la plus risquée. Une réécriture complète prend 2 à 3 fois plus de temps que prévu, gèle la roadmap produit pendant des mois, et perd la connaissance métier accumulée dans le code legacy. Une refonte progressive via le Strangler Pattern préserve la production, conserve les fonctionnalités éprouvées et permet de financer le chantier sur la durée. Vos clients ne voient quasiment rien, mais votre dette technique fond mois après mois.
Plusieurs indicateurs convergents justifient une refonte :
- Version PHP ou Symfony non maintenue (PHP 7.x, Symfony 3 / 4 / 5)
- Deprecations Doctrine, Twig ou Symfony qui s'accumulent dans les logs
- Couverture de tests inexistante ou suite PHPUnit cassée
- Temps de développement multiplié par 3 ou 4 sur des fonctionnalités simples
- Bugs collatéraux à chaque livraison
- Performance dégradée, requêtes N+1, Core Web Vitals au rouge
- Bundles abandonnés ou non compatibles avec la version cible
Si vous cochez 3 cases ou plus, le chantier devient prioritaire.
Le Strangler Pattern se déroule en 5 phases :
- Audit et cartographie de la dette technique via PHPStan, Rector, analyse des dépendances
- Sécurisation du socle : tests caractérisation sur les parcours critiques, mise en place CI/CD, monitoring
- Migration automatisée avec Rector pour les transformations massives (annotations vers attributs, modernisations Symfony)
- Extraction module par module : réécriture dans le périmètre cible, branchement en parallèle, retrait progressif du code legacy
- Migration des données et bascule sous feature flags, réversible en quelques secondes
Chaque palier livre une valeur tangible et reste rollback-able. Aucune big bang night.
Non. C'est précisément l'intérêt du Strangler Pattern : la production tourne en continu pendant toute la durée du chantier. Les nouveaux modules sont déployés en parallèle des anciens, branchés via un routeur applicatif ou des feature flags. Les bascules finales se font sur des fenêtres planifiées (souvent un dimanche soir) et restent réversibles en moins d'une minute. La maintenance de sécurité du legacy continue en parallèle de la refonte, gérée par le même interlocuteur.
La durée dépend entièrement de l'ampleur du chantier : taille de la base de code, écart entre la version actuelle et la version cible, qualité des tests existants, complexité du modèle de données. Une migration Symfony 6 vers 7 propre se boucle généralement en 4 à 8 semaines. Une remontée Symfony 3 ou 4 vers Symfony LTS sur une application volumineuse peut s'étaler sur 4 à 9 mois, en paliers fonctionnels. Le périmètre et le planning sont formalisés en devis personnalisé après un échange initial gratuit de 30 minutes.
La stack cible recommandée chez ARDNTECH s'aligne sur les standards éprouvés de l'écosystème Symfony :
- Symfony en version LTS (support longue durée, sécurité garantie 4 ans)
- PHP 8.3 ou 8.4 selon le calendrier de support
- Doctrine ORM 3 avec attributs PHP 8
- MariaDB par défaut, ou PostgreSQL selon les contraintes du projet
- AssetMapper ou Webpack Encore selon le besoin front
- Twig 3 et composants Twig pour les interfaces
- Hébergement souverain en France ou en Suisse (Scaleway, OVH, Infomaniak ou Proxmox auto-hébergé)
Le chantier s'appuie sur un outillage open source éprouvé :
- Rector pour les transformations de code automatisées (montées de version PHP, deprecations Symfony et Doctrine)
- PHPStan niveau 5 à 8 pour la détection statique des erreurs
- PHP CS Fixer pour l'homogénéisation du style de code
- PHPUnit pour les tests unitaires et fonctionnels
- Composer Outdated pour le suivi des dépendances
- GitLab CI ou GitHub Actions pour l'intégration continue
- Symfony Profiler et Blackfire pour la performance applicative
Chaque outil est branché dans le pipeline CI dès la phase de sécurisation du socle, pour que le chantier de refonte avance avec un filet de sécurité permanent.
Votre SaaS legacy mérite une refonte progressive maîtrisée
Parlons de votre projet
Demander un devis personnalisé