On ne commence pas par réécrire. On commence par sécuriser: comprendre ce qui tourne, poser un filet de sécurité (tests, CI, staging), puis avancer par petits lots livrables.
C'est contre-intuitif quand le code fait peur, mais la réécriture complète est presque toujours la mauvaise réponse: elle coûte des mois sans rien livrer, et l'application « propre » rattrape rarement toutes les règles métier accumulées dans l'ancienne.
L'audit initial: une à deux journées
À la fin de l'audit, vous savez trois choses: ce qui est risqué, ce qui est urgent, et dans quel ordre traiter. C'est le livrable qui permet de chiffrer la suite sans promesse en l'air.
- Les versions: Ruby, Rails, et les gems critiques. Une application en Rails 5 ou 6 se met à niveau; c'est balisé, pas héroïque.
- Les tests: combien, lesquels passent encore, que couvrent-ils vraiment.
- Le déploiement: comment on met en production, en combien de temps, et ce qui se passe quand ça échoue.
- Les zones chaudes: git log en main, repérer les fichiers modifiés le plus souvent. C'est là que vivent le métier et les bugs.
Les trois premiers chantiers, toujours les mêmes
- Un environnement de staging fiable, copie proche de la production, pour tester sans peur.
- Une CI qui exécute les tests existants à chaque push, même s'il y en a peu. On grossit la couverture au fil des lots, en commençant par les zones chaudes.
- Le monitoring des erreurs (Sentry ou équivalent): on ne corrige bien que ce qu'on voit.
Ensuite: des petits lots, jamais un big-bang
Une fois le filet posé, chaque intervention devient un lot court: une montée de version, un module refactoré, une série de bugs. Chaque lot part en PR testée, relue, déployée. L'application s'améliore en continu et reste livrable à tout moment: c'est la différence fondamentale avec une réécriture, où tout est cassé jusqu'au jour hypothétique où tout remarche.
Combien de temps ça prend
Pour une application Rails de taille moyenne: 1 à 2 jours d'audit, 3 à 5 jours pour le filet de sécurité, puis des lots de 2 à 10 jours selon les chantiers. Autrement dit, les premières améliorations visibles arrivent en semaines, pas en mois.
C'est exactement le type de mission que je prends en renfort d'agences: si vous avez hérité d'une application Rails que plus personne n'ose toucher, parlons-en.