On m'a dit qu'il fallait
tout réécrire
Un projet legacy ?
On m'a dit qu'il fallait tout réécrire
-
En production
-
Ancien
-
Difficile à maintenir
-
Pas (ou peu) de tests
-
Les devs d'origine sont parti(e)s
Stratégies possibles
On m'a dit qu'il fallait tout réécrire
-
Ne rien changer
-
Tout réécrire de zéro
-
Tout jeter par la fenêtre
-
La réponse D
Ne rien changer
On m'a dit qu'il fallait tout réécrire
Inconvénients :
Avantages :
- Démotivation des équipes
- Risque de turn-over
- Syndrome du dessous de tapis
- Tous les inconvénients d'un projet legacy
- La prod reste active pendant le dev
- ?
Tout réécrire
On m'a dit qu'il fallait tout réécrire
Inconvénients :
Avantages :
- Long
- Onéreux
- Première mise en prod risquée
- Nécessite énormément de connaissances sur le domaine métier
- Structure moderne
- Motivation accrue
- Tests dès le départ (possible)
Tout jeter par la fenêtre
On m'a dit qu'il fallait tout réécrire
Inconvénients :
Avantages :
- Les clients ne sont pas contents
- Vous mettez tout le monde au chômage
- Vous prenez votre retraite pour élever des wombats dans le Tarn
La réponse D
On m'a dit qu'il fallait tout réécrire
La réponse D
La migration progressive
Inconvénients :
Avantages :
- Le vieux code reste là encore longtemps
- Besoin de connaissances métier
- Les "old top talents" peuvent être un frein
- La prod reste active pendant le dev
- Les tests sont rajoutés en cours de route
- Nouvelle structure possible
- Pas besoin de connaître tout le métier
- Moins cher (car coût sur la durée)
- Les effets sont visibles plus rapidement
La migration progressive
On m'a dit qu'il fallait tout réécrire
Conseils
Pas de rush !
➡ Auditer le code
La migration progressive
On m'a dit qu'il fallait tout réécrire
Audit
Le code souvent modifié
Éléments à identifier
Git, tickets, etc.
Monitorer la prod
Le code
mort
Monitorer la prod, supprimer le code commenté, archiver les vieux dépôts, etc.
Le code externe
Dépendances,
versions,
langage,
O365, GCP, LDAP, FTP, etc.
Le code souvent utilisé
La migration progressive
On m'a dit qu'il fallait tout réécrire
C'est parti !
La migration progressive
On m'a dit qu'il fallait tout réécrire
L'encapsulation
La migration progressive
On m'a dit qu'il fallait tout réécrire
L'encapsulation
La migration progressive
On m'a dit qu'il fallait tout réécrire
L'encapsulation
La migration progressive
On m'a dit qu'il fallait tout réécrire
L'encapsulation
La réécriture progressive
On m'a dit qu'il fallait tout réécrire
La réécriture progressive
On m'a dit qu'il fallait tout réécrire
La réécriture progressive
On m'a dit qu'il fallait tout réécrire
La réécriture progressive
On m'a dit qu'il fallait tout réécrire
Example avec PHP/Symfony
On m'a dit qu'il fallait tout réécrire
Workflow d'exécution
On m'a dit qu'il fallait tout réécrire
Avant
On m'a dit qu'il fallait tout réécrire
Workflow d'exécution
Après
On m'a dit qu'il fallait tout réécrire
Workflow d'exécution
Après
On m'a dit qu'il fallait tout réécrire
Workflow d'exécution
Après la réécriture d'un seul endpoint
La migration progressive
On m'a dit qu'il fallait tout réécrire
Les tests "basiques"
Smoke testing
💻
🖰
🔥
✅
On m'a dit qu'il fallait tout réécrire
Smoke testing
On m'a dit qu'il fallait tout réécrire
Golden Master
On m'a dit qu'il fallait tout réécrire
Continuous integration
Github Actions

CircleCI
Gitlab CI
Atlassian Bamboo
Jenkins
AppVeyor
On m'a dit qu'il fallait tout réécrire
Stop talking, start migrating!
On m'a dit qu'il fallait tout réécrire
@pierstoval
Alex Rock
Freelance dev, architect, coach & trainer
Merci !

On m'a dit qu'il fallait tout réécrire
By Alex Rock
On m'a dit qu'il fallait tout réécrire
-
- 54