Votre plateforme web ou site internet n'évolue plus ou peine à évoluer. Sa maintenance devient complexe et met en péril son exploitation. Votre application devient potentiellement obsolète et n'est plus en adéquation avec votre vision finale du produit. Votre ancienne équipe à l'origine du projet n'a plus les compétences nécessaires pour le maintenir et le faire évoluer.
C'est bien souvent dans ces situations que vous souhaitez établir un bilan global afin de connaître les diverses options qui s'offrent à vous pour reconsolider votre produit web et le réaligner à vos besoins actuels. Votre objectif : trouver une équipe technique compétente de confiance qui vous accompagnera dans ces objectifs.
Que ce soit pour des mises à jour régulières, des correctifs de sécurité ou des améliorations fonctionnelles, une stratégie efficace de reprise applicative est cruciale pour maintenir la performance et la fiabilité de votre plateforme.
Voici 10 conseils pour réussir cette reprise et assurer la sécurité de votre plateforme web.
1. Déterminer la stratégie de reprise du projet
Changer d'équipe technique n'est pas simple : le temps d'identifier un partenaire de confiance, que celui-ci monte en compétence, que les équipes s'acculturent rapidement au projet, etc. Néanmoins, c'est bien souvent un passage obligatoire pour assurer la longévité de votre application.
Avant de commencer le processus de reprise, il est important d'effectuer un état des lieux. approfondie de la situation. Identifiez les raisons de la reprise, les points de blocages et frustrations rencontrés par l'application actuelle, les objectifs que vous souhaitez atteindre et les potentiels risques associés aux changements à venir.
2. Évaluer l'état des lieux de votre plateforme
Demandez à votre prestataire d'étudier la qualité technique du projet et évaluer la dette de ce dernier. Chez Web^ID, nous faisons un état des lieux de différentes composantes (qui peut varier selon la nature des projets) :
- Les choix d'architecture : Back et Front
- État des lieux des mises à jour, versions et dépendances
- Qualité du code et outils qualité
- Couverture de tests
- Sécurité
- Monitoring, alertes, gestion des logs, des backups
- Le support utilisateur-rice
- La documentation existante
- Les bugs fréquemment rencontrés
- Les environnements techniques en place
- Etc.
Dans notre cas, notre expertise sur le framework Laravel pour le back-end et sur ReactJS en front-end nous met face à des projets parfois mal pensés, voire très mal architecturés, qui engage le projet dans une dette technique difficile à résorber. Il est donc important de s'adresser à une équipe qui aura toutes les compétences pour vous accompagner selon la nature technique de votre projet.
Plus on est capable de remonter dans l'historique du projet, plus il est possible d'anticiper l'ampleur de la dette. Il est important d'attribuer un niveau de criticité à chaque problème remonté afin de prioriser les actions à mener dans le temps.
3. Sécurisez votre plateforme web
Assurez-vous que votre plateforme est sécurisée en utilisant des pratiques telles que l'authentification robuste, la validation des entrées utilisateurs, le chiffrement des données sensibles et les pare-feu applicatif. Les mises à jour de votre stack technique est aussi une composante à fort impact pour éviter les failles de sécurité exploitables.
Avant de transmettre le projet à votre nouveau prestataire, assurez-vous qu'un audit de sécurité soit réalisé par un professionnel spécialisé pour identifier les éventuelles failles (qui sont généralement nombreuses sur des projets à forte dette, ou encore appelés Projet "Legacy"). Ceci permet de s'assurer des actions à mettre en place pour sécuriser les accès et données utilisateurs dès la reprise du projet.
Exemples de cas concrets :
- En 2017, Equifax, agence d'évaluation du crédit : intègre dans son applicatif des vulnérabilités dans un logiciel non mis à jour. Résulats : Lors d'une Cyberattaque, des données personnelles de plus de 147 millions de clients ont été exposées.
- En 2012, Knight Capital Group, société de courtage en ligne : lors d'un déploiement ayant réactivé de vieux algorythmes de trading qui ont exécuté massivement des transactions. En 45 minutes, la société avait perdu 440 millions de dollars de perte ! La société a été rachetée pour éviter la faillite.
La sécurité doit être une priorité absolue à toutes les étapes du processus de reprise applicative.
Chez Web^ID, l'audit de sécurité est réalisé par une société externe spécialisée, et fait partie de la reprise du projet par défaut.
Planifier régulièrement des audits de sécurité pour identifier les vulnérabilités potentielles et prendre des mesures correctives. La sécurité de votre plateforme web doit être évaluée et améliorée de manière continue pour rester efficace contre les menaces en constante évolution.
4. Alignement et planification minutieuse de la reprise
Autour des constats dressés par la première phase d'audit, vient ensuite le temps des échanges concernant la stratégie de votre produit. On y aborde les enjeux et objectifs client et définissons la roadmap de la plateforme. Chez Web^ID, nous ne sommes en effet pas là uniquement pour valider ou non une reprise technique, mais bien pour comprendre les enjeux globaux du projet.
Sur cette base d'échange, un plan détaillé doit être réalisé pour la reprise applicative, en définissant les étapes nécessaires, les ressources requises et le calendrier de mise en œuvre.
5. Synchroniser tous les acteurs liés aux projets
Afin d'assurer une transition la plus fluide possible, identifiez et rassemblez l'ensemble des parties prenantes du projet, que ce soit les acteurs techniques mais également les partenaires stratégiques du projet :
- Product owner
- Equipes de développement
- Equipes design
- Responsable marketing
- Solutions métiers interfacées
- Solutions API externes
- Responsables des environnements de développements
- Solutions d'hébergement
- Expert SEO
- Etc.
6. Remise en état et mise à jour des composants
Comme un garagiste ne se re-fabrique pas une clé à molette à chaque entretien de voiture, les solutions Web reposent aussi sur des technologies et bibliothèques Open Sources, Frameworks, plugins... Il est donc essentiel de maintenir à jour les outils utilisés pour que la solution développée puisse durer dans le temps.
La première étape de la reprise est une mise à jour de tous les composants logiciels de votre plateforme, à savoir les frameworks (back-end et front-end) et les librairies / packages externes. Les mises à jour régulières permettent de bénéficier des dernières fonctionnalités et des correctifs de sécurité, réduisant ainsi les risques de vulnérabilités et les éventuels effets de bords que ceux-ci pourraient générer.
7. Améliorer la couverture de tests
Bien souvent et malheureusement lors d'une reprise de projet Web, la couverture de tests reste très minime, voire bien souvent inexistante. Il est donc indispensable d'investir une partie des temps de maintenance à intégrer une couverture de tests automatisés optimale de vos fonctions vitales. Chez Web^ID, les tests ne sont pas optionnels, car ils assurent la solidité du projet pour faciliter sa maintenance et son évolutivité.
Aussi, avant de déployer les changements sur votre plateforme en production, il est indispensable de s'assurer que les tests automatisés sont tous au vert, et d'effectuer des tests approfondis pour détecter, et si nécessaire, corriger les éventuels problèmes. Cela peut inclure des tests de non régression, des tests de bas niveau (unitaires) comme des tests de plus haut niveau (fonctionnels), pour garantir que votre plateforme fonctionne de manière optimale dans toutes les situations.
8. Réaliser des déploiements progressifs
Engager un travail de refonte peut parfois être la marche à suivre pour assurer la pérennité de la plateforme. Parfois, une "simple" re-factorisation du code existant peut être envisageable sans repartir complètement d'une feuille blanche, si une base est exploitable.
Aussi, nous recommandons dans la mesure du possible de profiter d'évolutions fonctionnelles pour améliorer votre produit : refaire le code proprement selon les standards qualité, intégrer les tests automatisés tout en implémentant de nouvelles fonctionnalités pour donner de la valeur au produit.
Et si possible, déployez les changements de manière progressive pour limiter les risques.
Vous pouvez aussi commencer par une version bêta restreinte avant de déployer à grande échelle, ce qui vous permet de détecter et de corriger les problèmes à un stade précoce.
9. Mettre en place une surveillance continue
Mettez en place des outils de surveillance pour suivre la qualité du code, des performances et de la sécurité de votre plateforme en temps réel. Soyez vigilants face aux menaces potentielles et réagissez rapidement en cas d'incident pour minimiser les impacts sur votre plateforme et vos utilisateurs.
Il est essentiel que l'équipe intègre des outils de suivi qualité, et homogénéise ses pratiques de développement pour assurer une bonne continuité, et surtout une bonne reprise par d'autres développeurs dans le temps.
Quelques exemples d'outils utilisés par nos équipes :
- Pour les tests : PHPStan, PHPUnit, phparkitect, Cypress, Playwright...
- Pour le monitoring : Symfony security monitoring, Github Dependabot, Sentry, Atatus, Prometheus...
- Pour s'assurer des coding standard : PHP codesniffer, Laravel Pint...
10. Formation et maintien en compétence des équipes
Assurez-vous que l'équipe technique en charge de la plateforme reste compétente et formée régulièrement aux dernières pratiques de sécurité et de développement web. Il est aussi essentiel que le savoir sur votre produit soit partagé au maximum, pour éviter ce que l'on appelle le "Bus factor". 1 seule personne qui possède la culture de votre projet peut le mettre en péril, s'il quitte le projet pour n'importe quelle raison, ou même une simple absence. Chez Web^ID, Une équipe projet est au moins composée de par au moins 2 personnes, voire 3 si cela concerne également le Back et le Front, pour permettre une rotation sur le projet et répartir le savoir.
En suivant ces conseils, vous pouvez réussir la reprise de votre plateforme web, assurer sa longévité et son évolutivité. Mais aussi garantir sa sécurité au long terme. La reprise applicative est une occasion de renforcer la robustesse, les performances et la fiabilité de votre application, afin de vous concentrer sur le cœur de votre valeur métier.