Laravel

Reprendre une application que personne ne veut plus toucher

Comment nous abordons la reprise d'une application PHP ancienne : ce qu'il faut mesurer avant de décider, et pourquoi la réécriture complète est rarement le bon choix.

A Azetria Agence digitale 3 min de lecture
Les trois voies possibles face à une application ancienne : réécrire, reprendre en l'état, ou remplacer par morceaux
Les trois voies possibles face à une application ancienne : réécrire, reprendre en l'état, ou remplacer par morceaux
En bref
Face à une application ancienne, trois voies existent : la reprendre en l'état en la stabilisant, la remplacer progressivement module par module, ou la réécrire entièrement. La réécriture complète est la plus risquée des trois, parce qu'elle suppose de reproduire un comportement que personne ne documente entièrement. Le choix se fait après un inventaire du code, des données et des usages réels, pas avant.

Une application qui fonctionne mais que personne n’ose modifier n’est pas un actif : c’est une dette dont les intérêts se paient en délais. Chaque évolution demandée reçoit la même réponse — « c’est compliqué » — et le coût annoncé finit par dépasser celui d’un développement neuf.

La question posée est presque toujours la même : faut-il tout refaire ?

Ce qu’il faut mesurer avant de décider

Décider sans inventaire, c’est parier. Nous commençons donc par trois relevés.

Le code. Volume, dépendances et leur état de maintenance, version du langage, présence de tests, couplage entre les parties. Une application de 40 000 lignes sans test n’est pas comparable à une application de 200 000 lignes couverte à 60 %.

Les données. Souvent le vrai sujet. Un schéma sans contraintes d’intégrité, avec des colonnes qui contiennent trois formats différents selon l’année, coûte plus cher à reprendre que le code lui-même.

Les usages réels. Les journaux du serveur disent quelles fonctionnalités sont utilisées, par combien de personnes et à quelle fréquence. Il est fréquent d’y découvrir qu’un tiers des écrans n’a pas servi depuis deux ans. Ce tiers-là n’a pas à être migré, et cette découverte change souvent la décision à elle seule. C’est le premier livrable de notre audit technique.

Les trois voies

Stabiliser sans changer de socle

Mise à jour du langage et des dépendances, ajout de tests sur les parcours critiques, correction des failles connues. On ne touche pas à l’architecture.

C’est la voie la moins spectaculaire et la plus rentable quand l’application répond encore au besoin métier. Elle rend l’évolution possible sans engager de refonte.

Remplacer par morceaux

L’ancienne et la nouvelle application cohabitent derrière la même adresse. Un module à la fois est réécrit, et le routage bascule les URL correspondantes une fois le remplacement vérifié.

C’est la voie que nous recommandons le plus souvent pour une reprise d’application : chaque étape livre quelque chose d’utilisable, et chaque étape est réversible. Elle demande en contrepartie de faire fonctionner deux systèmes en parallèle, avec une authentification et des données partagées — c’est là que se situe la difficulté réelle.

Réécrire entièrement

Parfois inévitable : socle qui n’a plus de correctifs de sécurité, langage sans compétences disponibles sur le marché, modèle de données incompatible avec le besoin actuel.

C’est la voie la plus risquée, et la raison est rarement technique. Une application ancienne encode des années de règles métier que personne n’a écrites ailleurs. La réécriture les redécouvre une par une, en production, par les réclamations des utilisateurs.

Ce qui décide vraiment

Trois questions tranchent la plupart des situations.

L’application répond-elle encore au besoin ? Si oui, stabiliser. Une architecture démodée qui fait le travail vaut mieux qu’une architecture moderne qui ne le fait pas encore.

Y a-t-il une contrainte de sécurité ? Un socle sans correctifs n’est pas une préférence esthétique, c’est une exposition. Elle impose un calendrier.

L’équipe peut-elle absorber deux systèmes ? Le remplacement progressif suppose d’exploiter l’ancien et le nouveau en même temps, parfois pendant un an. Sans cette capacité, il vaut mieux stabiliser et attendre.

Ce que nous refusons

Un forfait de migration annoncé avant l’inventaire. Un chiffrage donné sur la seule description de l’existant, sans avoir lu le code, est un chiffre inventé — et l’écart se règle plus tard, en avenants ou en compromis sur la qualité.

Questions fréquentes

Dans la majorité des cas, reprendre puis remplacer par morceaux. Une réécriture complète immobilise l'équipe pendant des mois sans qu'aucune valeur ne soit livrée, et se heurte à des règles métier que seul le code d'origine connaît.

Oui, en faisant cohabiter l'ancienne et la nouvelle application derrière la même adresse, avec un routage progressif par URL. Chaque module basculé est vérifiable isolément, et réversible.

Sources

A

Azetria

Agence digitale

Publications collectives de l'équipe Azetria : notes de veille, retours d'expérience de projet et synthèses méthodologiques.

  • Laravel
  • SaaS
  • IA appliquée
  • SEO

La prestation associée

Pour les entreprises dont le site doit faire plus qu'exister

Création de site web sur mesure avec Laravel

À lire ensuite

La base contient ecommerce-01, l'administration le renomme boutique-01, et le seeder relancé réinsère ecommerce-01 en second — suivi des quatre parades : clé immuable, test de réconciliation, ne pas écraser, décider qui possède la donnée
Laravel 5 min de lecture

Le seeder qui recrée ce que vous avez renommé

`firstOrCreate` rend un seeder rejouable — tant que la clé de recherche ne bouge pas. Le jour où quelqu'un renomme depuis l'administration,...

A Azetria

Votre projet mérite mieux qu'un devis générique

Dites-nous ce que vous voulez obtenir. Nous vous répondons avec une analyse, une fourchette et les questions que personne d'autre ne vous aura posées.

Réponse sous 4 heures ouvrées · Aucun engagement · Vos données restent chez nous