Reprendre une plateforme financière Symfony sans jamais l'arrêter

Étude de cas — plateforme métier, secteur financier

Une société de gestion de fonds. Une plateforme déjà passée entre deux mains avant les miennes. Des clients dessus. Et une date de lancement qui n’attendait pas.

Parlons de votre projet

Ce que cette page ne montre pas.

Le client n’est pas nommé. Il n’y a aucune capture d’écran. Les schémas qui suivent sont des représentations simplifiées : ni le découpage réel des modules, ni les traitements métier, ni les prestataires externes n’y figurent.

C’est une plateforme privée qui gère les données financières de ses utilisateurs. Je ne montre pas l’intérieur de ce système — pour la même raison que je ne montrerai pas le vôtre. Le nom, les références et une mise en relation, je les donne dans le cadre d’un échange.

En résumé

En août 2025, une société de gestion de fonds me confie une plateforme Symfony de plus de 400 utilisateurs, déjà passée entre les mains de deux prestataires. Elle est en production, elle dysfonctionne, et un nouveau service doit sortir à date fixe. J’écarte la réécriture complète : elle aurait dépassé la date tout en laissant les clients sur la version défaillante. Je stabilise l’existant tout en développant le nouveau service dessus. Résultat : toutes les échéances tenues, service jamais interrompu, 900 fichiers et 122 679 lignes de code applicatif touchés, 31 003 lignes retirées. Un an plus tard, la mission continue : je suis le partenaire technique de la plateforme, avec 40 heures de disponibilité garantie chaque mois.

Ce que j’ai repris

Le client est une société de gestion de fonds. Toute son activité passe par une plateforme privée, accessible sur identifiants, utilisée par plus de 400 personnes. Elle tourne sous Symfony, le framework PHP que j’utilise pour les plateformes sur mesure.

En août 2025, son dirigeant me la confie. Elle est déjà passée entre les mains de deux prestataires avant moi. Voici ce que j’ai trouvé en ouvrant le projet.

118
Entités dans le
modèle de données
12
Rôles applicatifs
et leurs droits
4
Espaces applicatifs
séparés
67
Dépendances
externes
2 344
Commits d’historique
antérieurs
CE QUE COUVRE LA PLATEFORMEAdministrationAPIEspace clientEspace membreCONTRÔLE D'ACCÈS12 rôles applicatifs · double authentification · règles d'autorisation par actionDOMAINE MÉTIER118 entités · comptes et portefeuilles · transactions · contrats et documents · reportingTRAITEMENTS DIFFÉRÉSfile de messages · tâches planifiées · envois d'e-mails · exports tabulaires et PDFINTÉGRATIONS EXTERNESPaiementVérification d'identitéConformité réglementaireDonnées financières
Quatre espaces applicatifs distincts passent par un même contrôle d'accès avant d'atteindre le domaine métier. Les traitements longs sont sortis du cycle de la requête. Schéma simplifié et anonymisé : il donne l'ampleur du système, pas son fonctionnement.

Ce que trois prestataires laissent derrière eux

Une plateforme reprise, ce n’est pas une liste de bugs. C’est un empilement.

Chaque intervenant a apporté ses conventions, ses outils et ses habitudes. Personne n’a retiré ceux du précédent. Dans la base de données, les tables portaient des noms dans trois langues différentes selon la période où elles avaient été créées.

Mais le symptôme le plus net n’était pas dans le code métier. Il était dans les dépendances. Pour générer un simple document PDF, la plateforme embarquait quatre bibliothèques différentes. Quatre outils pour une seule fonction, installés par trois personnes qui ne se sont jamais parlé.

TROIS INTERVENANTS SUR LA MÊME BASEPrestataire 1vocabulaire APrestataire 2vocabulaire BOWL Conceptaoût 2025UN SEUL BESOIN, QUATRE RÉPONSES EMPILÉESbibliothèque 1bibliothèque 2bibliothèque 3bibliothèque 4générer un document PDFquatre fois la surface de maintenance, quatre fois les failles à suivre, pour une seule fonction
Ce n'est pas une négligence individuelle. C'est ce qui arrive quand personne n'a la responsabilité de l'ensemble sur la durée. La même sédimentation se retrouvait ailleurs : des fichiers rangés au mauvais endroit, des tables de sauvegarde devenues du code, des vues numérotées v2 puis v3.

Le vrai problème n’était pas technique

Construire une plateforme financière de zéro, c’est déjà difficile. En reprendre une écrite par d’autres, c’est pire : il faut comprendre des décisions qu’on n’a pas prises, pour des raisons qu’on ne connaît pas.

Trois contraintes se sont additionnées dès le premier jour.

  • La plateforme tournait, avec des clients dessus. Rien ne pouvait s’arrêter. Il fallait réparer un système vivant.
  • Un nouveau service devait sortir, et la date était fixée. Donc pas seulement réparer : faire évoluer en parallèle pour accueillir un produit qui n’existait pas encore.
  • La donnée financière n’est pas mon métier. Je sais construire un système. Je ne suis pas gestionnaire de fonds. Les calculs devaient être justes, et la seule façon d’y arriver, c’était de travailler serré avec le client plutôt que d’interpréter des spécifications tout seul dans mon coin.

C’est la deuxième qui commandait tout : la date. Sans elle, j’aurais pris une autre décision.

Je ne travaille pas pour mes clients. Je travaille avec eux. Sur un système financier, ce n’est pas une posture — c’est la seule façon d’avoir les bons chiffres.

La décision, et ce que j’ai écarté

J’ai posé moi-même la question de la réécriture complète, dès le début. C’était la solution la plus confortable pour moi : repartir propre, avec mes conventions, sans hériter des choix de personne.

Je l’ai écartée en quelques jours, pour trois raisons qui n’ont rien de technique.

  • Trop long et trop cher pour tenir la date du nouveau produit.
  • Des clients étaient déjà sur la plateforme. Il fallait corriger les blocages de toute façon — réécriture ou pas, ce travail-là devait être fait.
  • Payer deux fois le même système pour arriver plus tard au même endroit, ça ne se défend pas.

J’ai donc stabilisé l’existant tout en développant le nouveau service dessus. C’est moins gratifiant à raconter qu’une réécriture. C’est nettement plus utile au client. C’est aussi ce que décrit ma méthode de travail : comprendre avant d’agir, structurer avant de produire.

DATE DE LANCEMENTDU NOUVEAU SERVICEOPTION ÉCARTÉERéécriture complètereconstruction de la plateforme — dépasse la dateles clients existants restent sur la version défaillante pendant tout ce tempsOPTION RETENUEStabiliser et faire évoluer en parallèlecorrection des blocagesdéveloppement du nouveau servicela plateforme redevient utilisable dès les premières semaines, et le nouveau service sort à la date prévue
Le même travail de correction devait être fait dans les deux cas. La réécriture y ajoutait la reconstruction de tout ce qui fonctionnait déjà, pour une livraison postérieure à la date.

Ce que ça a donné

Le pari tenait sur une seule promesse : livrer à temps sans jamais couper le service. Un an plus tard, c’est le résultat que je retiens.

Toutes les livraisons à la date prévue
Depuis le début de la mission, chaque échéance a été tenue. Y compris le lancement du nouveau service, sur une plateforme héritée et en production.
Service jamais interrompu
La plateforme est restée accessible à ses plus de 400 utilisateurs pendant toute la reprise et toute la phase de correction.
Sauvegardes automatisées
Des sauvegardes nocturnes de la base de données ont été mises en place en correction prioritaire, dès les premières semaines.
Partenariat toujours actif
La mission a démarré en août 2025 et se poursuit aujourd’hui, avec une disponibilité garantie de 40 heures.

Le volume de travail, mesuré honnêtement

Depuis mon premier commit sur le projet :

900
Fichiers
touchés
122 679
Lignes
ajoutées
31 003
Lignes
retirées

Ces chiffres portent sur le code applicatif seul : logique métier, gabarits, configuration, migrations. Les bibliothèques tierces, les assets compilés et les fichiers générés en sont exclus. Ils ajoutaient 443 000 lignes qui n’ont rien à voir avec le travail réalisé, et les compter aurait multiplié le chiffre par cinq sans rien dire de vrai.

Les 31 000 lignes retirées comptent autant que celles ajoutées. Sur une plateforme héritée, retirer du code pendant qu’on lui ajoute des fonctionnalités, c’est ce qui distingue la stabilisation de l’empilement.

Ce que la mise en production est devenue

Ce qui a changé, ce n’est pas qui appuie sur le bouton. C’est tout ce qu’il y a autour.

Un modèle de branches Git qui permet de fusionner librement, de ne rien perdre et de revenir vite sur la branche principale en cas de correction urgente. Et un fichier Makefile qui regroupe en une seule commande les opérations serveur qui revenaient à chaque mise en ligne.

AVANTcorrectifcommandes serveur tapées une par uneproductionune étape oubliée, et le retour en arrière se cherche à la mainAPRÈScorrectifbranches cadréesmake — une commandeproductionretour immédiat sur la branche principaledéclenchement toujours manuel, volontairement —le contenu de la commande, lui, ne s'improvise plus
Ce qui a été supprimé, ce n'est pas l'intervention humaine. C'est l'improvisation à chaque mise en ligne, et l'absence de chemin de retour.

Un an plus tard, la mission continue

Une mission de sauvetage s’arrête quand l’incendie est éteint. Celle-ci ne s’est pas arrêtée.

Le mandat initial était clair : réparer ce qui bloquait, et livrer le nouveau service à la date prévue. Les deux ont été faits. Ce qui a suivi n’était pas prévu au départ — je suis depuis le partenaire technique de la plateforme. Je la fais évoluer, je la maintiens, et je reste disponible pour les décisions techniques qui engagent l’entreprise, avec une réserve de 40 heures garantie chaque mois.

Rien n’oblige un dirigeant à reconduire une collaboration. Elle se rejoue à chaque mission, à chaque devis, à chaque échéance tenue ou manquée. Celle-ci dure depuis août 2025 parce qu’elle continue d’être utile — c’est le seul type de relation qui m’intéresse, et c’est aussi la raison pour laquelle je ne prends que quelques projets de ce type à la fois.

C’est enfin ce que la décision de départ a rendu possible. Une plateforme stabilisée progressivement se fait évoluer ensuite, mois après mois. Une plateforme reconstruite dans l’urgence pour tenir une date, beaucoup moins.

L’outil est en place. Je ne le laisse pas décider.

Le déploiement automatisé existe sur ce projet. L’outillage est installé, configuré, prêt à pousser une version en production sans que personne n’intervienne. Je ne m’en sers pas en automatique.

Ce n’est pas un retard, c’est une décision. Une plateforme financière en production, avec des utilisateurs qui consultent leurs données au moment où vous déployez, ce n’est pas l’endroit où l’on découvre un incident quinze minutes après tout le monde. Je déclenche la mise en production, je la regarde se dérouler, et je suis là si quelque chose se passe mal.

Ce que j’ai automatisé, c’est le contenu de l’opération, pour qu’aucune étape ne soit oubliée. Pas la responsabilité de la lancer. Le jour où le rythme de livraison et la couverture de tests le justifieront, le déclenchement automatique s’activera en une ligne. Aujourd’hui, ce serait un risque pris pour un confort qui n’est que le mien.

Ce que ce projet a demandé de moi

La compétence qui a le plus servi ici n’est pas technique. C’est de poser les bonnes questions au bon moment.

Je ne suis pas gestionnaire de fonds. Quand un calcul m’échappait, je n’ai pas deviné : j’ai demandé. C’est ce qui évite les erreurs sur des chiffres qui engagent le client. Et c’est aussi ce qui fait gagner du temps — le temps d’un dirigeant est précieux, le mien aussi, et une question de deux minutes coûte toujours moins cher qu’une semaine passée dans la mauvaise direction.

Questions fréquentes sur la reprise d’un projet existant

Que devient la relation une fois le projet livré ?
K
L

Cela dépend du projet et du client. Sur une plateforme métier, la livraison n'est jamais une fin : le système continue d'évoluer, les besoins changent, et il faut quelqu'un qui connaisse déjà l'architecture pour décider vite. Sur ce projet, la mission a démarré en août 2025 sur un mandat de reprise et se poursuit aujourd'hui en accompagnement continu, avec une réserve d'heures garantie chaque mois. Je ne prends que quelques relations de ce type à la fois.

Peut-on reprendre une plateforme développée par quelqu'un d'autre ?
K
L

Oui, à condition de commencer par une analyse. Je ne modifie pas un système existant sans comprendre pourquoi il est structuré comme il l'est. Sur ce projet, la plateforme était passée entre deux mains avant les miennes : la première étape a été de cartographier l'existant avant d'écrire la moindre ligne de code.

Faut-il tout réécrire quand le code hérité est en mauvais état ?
K
L

Rarement. La réécriture complète coûte deux fois : une fois pour reconstruire ce qui fonctionnait déjà, une fois pour corriger ce qui ne fonctionnait pas, puisque les utilisateurs existants ne peuvent pas attendre. Elle se justifie quand la base technique empêche réellement toute évolution, pas quand elle est simplement désordonnée.

Peut-on faire évoluer une plateforme pendant qu'elle est utilisée en production ?
K
L

C'est même le cas le plus courant. Cela demande un modèle de branches qui permet de revenir en arrière rapidement, des sauvegardes automatisées, et des mises en production découpées en petites étapes vérifiables. Sur ce projet, le service n'a jamais été interrompu.

Que se passe-t-il si le prestataire précédent n'a rien documenté ?
K
L

C'est la situation normale, pas l'exception. La documentation se reconstruit en lisant le code et en interrogeant le client sur ses règles métier. C'est du temps d'analyse, et il vaut mieux le payer une fois au début que dix fois en corrections.

Comment garantir des calculs justes quand on ne connaît pas le métier du client ?
K
L

En posant les questions plutôt qu'en interprétant les spécifications. Sur des données financières, une hypothèse implicite devient une erreur comptable. Je préfère une question de deux minutes à une semaine de développement dans la mauvaise direction.

Travaillez-vous sous accord de confidentialité ?
K
L

Oui, quand le projet le demande. Sur les plateformes privées et dans les secteurs régulés, la confidentialité est une condition normale de travail. C'est aussi pour cette raison que certaines études de cas sont publiées sans nommer le client.

Quel est le délai pour reprendre un projet existant ?
K
L

La phase d'analyse dépend de la taille du système. Sur une plateforme de plus de cent entités et d'une douzaine de rôles, il faut compter plusieurs semaines avant de pouvoir s'engager sur un planning. Je ne donne pas de devis ferme sur un projet complexe avant cette phase.

Une plateforme qui doit tenir dans la durée ?

Décrivez-moi le contexte en quelques lignes. Un premier échange sans engagement permet de savoir si le projet est faisable, et si on est faits pour travailler ensemble.