La modernisation des systèmes existants n’est plus une option aujourd’hui. Sans elle, votre entreprise ne sera pas compétitive, surtout dans l’économie actuelle où chaque centime économisé compte. Cependant, moderniser vos systèmes est un projet d’envergure et coûteux qui peut se retourner spectaculairement contre vous, entraînant des pannes et une perte de confiance. Aujourd’hui, nous sommes là pour partager les succès de clients de Redwerk et expliquer comment ils ont atteint la croissance en adoptant une approche stratégique et des pratiques de transformation de premier ordre.
Pour vous donner une idée de la valeur de la modernisation des bases de code existantes, sachez que, selon Gartner, 70 % des budgets informatiques sont consacrés à la maintenance des opérations actuelles. Imaginez maintenant ce que vous pourriez accomplir grâce à l’innovation en libérant ces fonds. Cela vous semble-t-il une proposition attrayante ?
Ci-dessous, les développeurs de Redwerk vous expliquent comment atteindre ce résultat tout en minimisant les risques pour l’entreprise.
Bonnes pratiques pour la modernisation des systèmes existants
La liste ci-dessous reflète des leçons durement acquises lors de programmes qui ont effectivement apporté des résultats à nos clients. Nous ne vous ennuyerons pas avec une énième liste des défis auxquels les entreprises sont confrontées dans la modernisation des systèmes existants. Au lieu de cela, nous nous concentrerons sur les solutions et approches concrètes qui apporteront à coup sûr de la valeur et un retour sur investissement.
Commencez par les résultats commerciaux, pas par les préférences architecturales
Vous devez toujours commencer par définir le succès en termes mesurables, tels que :
- Fréquence de publication
- Taux de défauts
- Délai de mise en œuvre du changement
- Temps de fonctionnement
- Coût de l’infrastructure
- SLA de correctifs de sécurité
- Taux de conversion
Associez chaque initiative de modernisation du code existant à un KPI commercial avec un responsable désigné.
Pour être clair, gardez à l’esprit que la majorité des programmes de modernisation qui échouent commencent généralement par « nous avons besoin de microservices » ou « nous devons être natifs du cloud ». Ceux qui réussissent commencent par « nous devons réduire les cycles de publication de six semaines à trois jours » ou « nous devons réduire le temps de réponse aux incidents de 80 % ».
Ressentez la différence ? C’est ce qui définit le succès dans toute stratégie de transformation numérique. Prenez notre travail avec VIP Auslan, une agence au service de la communauté sourde australienne. Nous avons commencé par stabiliser leur plateforme de réservation d’interprètes, un processus qui a nécessité une ingénierie inverse de la logique métier et la résolution de lacunes critiques dans la documentation au sein d’une base de code existante dense. Une fois la plateforme stabilisée, nous avons procédé à l’automatisation des flux de travail manuels et à l’amélioration de l’expérience utilisateur.
Nous avons connu un succès similaire avec Evolv. Ils ont complètement transformé la solution existante détenue par Sentient Ascend (après l’avoir acquise) pour lancer la version améliorée Evolv 1.0. Basée sur l’outil existant, cette itération est une plateforme SaaS innovante et évolutive déjà utilisée par des dizaines de clients Evolv et en croissance rapide.
Construire et maintenir une carte du portefeuille d’applications
Pour soutenir l’évaluation de vos progrès, créez un inventaire qui capture la criticité commerciale, le coût, le profil de risque, la fréquence des modifications, les dépendances, la sensibilité des données et l’impact utilisateur de chaque système. Incluez également les détails d’exécution et d’infrastructure, les interfaces (API, fichiers, files d’attente), les métriques opérationnelles et l’historique des incidents.
Avoir ces informations documentées et cartographiées pour un accès facile vous aidera à éviter les « actes de modernisation aléatoires ». C’est une approche où les équipes modernisent ce qui est pratique plutôt que ce qui compte. Mettez continuellement à jour cette carte pour suivre votre transformation et mesurer ses effets. Ce devrait être un document vivant auquel vous pouvez vous référer lors du calcul du retour sur investissement de la transformation numérique.
Nous avons acquis une vaste expérience de la cartographie des systèmes existants en travaillant sur l’immense projet pour Justin Alexander, une marque renommée de mode nuptiale aux États-Unis. Redwerk a commencé par un ancien site Web que nous avons transformé en une plateforme Web multimarques avec un constructeur de pages personnalisé pour que chaque marque puisse exprimer son style unique, tout en maintenant le site d’origine en bon fonctionnement pour assurer aucune interruption et aucune perte pendant la mise à niveau massive de la plateforme.
Prioriser par valeur ET risque
Utilisez la matrice de base 2×2 pour une efficacité maximale :
- Haute valeur, haut risque : Priorisez tôt mais livrez de manière incrémentielle. Ces systèmes sont trop importants pour être ignorés, mais ils sont aussi trop risqués pour des approches « big bang ».
- Haute valeur, faible risque : C’est ici que vous obtenez des succès rapides. Les meilleures pratiques de modernisation des systèmes existants stipulent que vous devez les prioriser pour renforcer votre élan et votre crédibilité. Cependant, vous ne pouvez pas vous y fier entièrement si vous souhaitez réaliser une transformation significative.
- Faible valeur, haut risque : N’investissez pas dans la modernisation de systèmes qui devraient disparaître. Une partie nécessaire de la transformation consiste à abandonner les flux, les applications et peut-être les départements entiers qui ne correspondent pas à une entreprise moderne et efficace, et qui ne font qu’aggraver la bureaucratie inutile et consommer des ressources.
- Faible valeur, faible risque : Si vous avez des systèmes qui correspondent à ce schéma, ils peuvent attendre. S’ils n’ont pas besoin d’être remplacés entièrement, vous devriez les laisser tranquilles jusqu’à ce que l’équipe de développement ait terminé toutes les tâches prioritaires.
N’oubliez pas que la modernisation de votre système existant doit également tenir compte des échéances réglementaires et de la posture de sécurité lors de la définition des priorités. Une fois ces fondamentaux abordés, l’attention se porte généralement sur des objectifs de plus haut niveau, tels que l’intégration de l’IA dans les systèmes existants pour débloquer de nouvelles efficacités.
Maintenant, que faire si vous avez besoin que les mises à niveau soient effectuées rapidement, sans compromettre le flux et la qualité ? Nous avons eu un projet comme celui-ci avec Incling, un client qui nécessitait une transformation complète en quelques semaines. Nous avons donc livré sans compromettre les meilleures pratiques de modernisation des systèmes existants. Redwerk a mis en œuvre l’approche stratégique, en commençant par un examen détaillé du code. Cela seul nous a aidés à nettoyer et à réduire la base de code de 15 000 lignes. Ensuite, plusieurs équipes ont travaillé sur différentes zones d’optimisation simultanément. Le résultat est que nous avons respecté le délai d’évolution de l’application de trois semaines avec un chemin de modernisation entièrement documenté.
De même, nous avons réussi à mettre à niveau la solution de vote électronique du Parlement européen dans un délai serré. Nous avions un mois pour migrer une application existante basée sur JBoss vers un framework moderne et maintenable. Nous avons immédiatement divisé le projet en sous-tâches gérables et établi des canaux de communication mondiaux entre les équipes en Ukraine, en Italie et en Belgique. En sortant le suivi des tâches des fils d’e-mails désordonnés et en le plaçant dans un logiciel de suivi des bogues moderne, nous avons créé une boucle de rétroaction transparente : le code écrit en Ukraine était testé à Bruxelles le même jour, donnant à nos développeurs un retour d’information instantané des utilisateurs finaux.
Choisir le bon schéma de modernisation pour chaque charge de travail
Vous devriez toujours éviter la pensée unique. Choisissez des schémas de modernisation d’applications existantes en fonction du retour sur investissement, de la complexité et de la fréquence des modifications du système.
Par exemple, un système qui change rarement et présente un faible risque peut simplement nécessiter une ré-hébergement (rehosting). Un système à forte fréquence de changement avec un couplage significatif nécessite une refactorisation. Un système où votre différenciation concurrentielle ne réside pas dans le code personnalisé devrait probablement être remplacé par une solution SaaS.
Les pires résultats proviennent généralement de l’application du mauvais schéma, comme la réécriture de systèmes qui devraient être refactorisés ou la refactorisation de systèmes qui devraient être remplacés.
Si vous vous demandez comment savoir exactement quel schéma de transformation appliquer où, vous devriez commencer par un audit de code expert. Par exemple, l’équipe Redwerk a travaillé avec Project Science pour auditer son API backend. Nous les avons aidés à améliorer la maintenabilité du code de 80 % en proposant des suggestions personnalisées pour chaque partie du système.
Moderniser vos pratiques de livraison en parallèle de votre code
Il est formidable que vous mettiez en œuvre les meilleures pratiques pour la modernisation des systèmes existants. Cependant, vous devez moderniser à tous les niveaux pour atteindre la croissance. Mettez en œuvre l’intégration continue avec un feedback rapide, des pipelines de déploiement automatisés, des indicateurs de fonctionnalité pour une livraison progressive, et une observabilité complète avec des journaux, des métriques, des traces, des SLO et des alertes.
De cette façon, vous réduisez le risque de changement et améliorez le temps moyen de récupération (MTTR). Les équipes qui modernisent le code sans moderniser la livraison constatent généralement que leurs gains de vélocité sont inférieurs aux attentes. Cela signifie que vous ne faites que déplacer le goulot d’étranglement ailleurs dans le pipeline.
Pensez également à l’échelle, comme nos clients chez Utility Revenue Services (URS). Lorsqu’ils ont entamé leur transformation numérique, ils ne disposaient que d’une application existante exclusive à Windows. C’était une bonne application lors de sa conception, mais le monde a évolué depuis. Ainsi, ce que nous avons fait ensemble comprenait la recréation de la solution d’origine sous forme d’application Web et la migration de toutes les données pertinentes. Ensuite, nous avons élargi les fonctionnalités pour ajouter des rapports supplémentaires, des fonctionnalités de facturation et bien plus encore. URS a modernisé non seulement leur application au niveau du code et leurs chemins de livraison de mises à jour, mais a également propulsé leur prestation de services aux clients au 21e siècle, ce qui les a aidés à attirer de nouveaux clients.
Dissocier délibérément l’architecture
L’une des meilleures pratiques de modernisation des systèmes existants (legacy) souvent négligées concerne la gestion du couplage. Malheureusement, de nombreuses entreprises choisissent la voie la plus facile, espérant que le problème se résoudra de lui-même. Cependant, il est fort probable que ce ne soit pas le cas, alors assurez-vous de le planifier en utilisant des concepts tels que la modularisation, les API et l’événementiel.
Voici comment vous pouvez découpler une architecture de manière sûre et efficace :
- Définir des contextes délimités : La pensée de conception axée sur le domaine (Domain-Driven Design) sera d’une grande aide ici.
- Extraire les services et modules autour de concepts de domaine stables : Concentrez-vous sur les concepts établis plutôt que sur les couches techniques.
- Ajouter des façades d’API : Elles aideront à stabiliser les intégrations externes.
- Utiliser des événements : Cela fonctionnera pour certains workflows asynchrones.
La réalité est que le découplage est coûteux mais nécessaire pour la durabilité technique à long terme. Nous suggérons de le faire là où cela crée des options que vous utiliserez réellement, pas partout simplement parce que c’est théoriquement plus propre.
En fin de compte, être trop dépendant (« couplé ») à quoi que ce soit de manière trop étroite n’est pas une bonne qualité en termes d’architecture logicielle évolutive. Vous devriez toujours viser l’indépendance et la flexibilité, ce que vous pouvez atteindre.
Par exemple, chez Redwerk, nous avons travaillé avec Green Valley, un fournisseur de solutions d’e-gouvernement basé aux Pays-Bas. Green Valley avait un plugin utilisé par de nombreuses autorités gouvernementales. Cependant, il était directement lié à Microsoft Word. Par conséquent, chaque fois que Microsoft mettait à jour son logiciel, le plugin devenait, pour ainsi dire, inutilisable. Ensemble, nous avons créé CMSOI, une plateforme qui prend en charge plusieurs versions des suites Microsoft Office et peut porter le plugin vers OpenOffice si nécessaire. C’est un exemple de la façon dont la modernisation résout des problèmes de dépendance apparemment critiques.
Traitez les données comme un flux de travail de première importance
Saviez-vous que même en utilisant les meilleures pratiques pour la modernisation des systèmes existants, de nombreux programmes échouent sur les données, pas sur le code ? Pour éviter ce résultat malheureux, vous devriez planifier explicitement la propriété des données et les modèles canoniques, les approches de migration (bulk plus delta, double écriture, capture des changements de données), la réconciliation et l’auditabilité, ainsi que les exigences de rétention et de conformité.
De plus, planifiez la continuité des rapports et de la business intelligence pendant la transition. Les dirigeants qui perdent l’accès aux tableaux de bord pendant la modernisation ne resteront pas des soutiens patients.
La bonne nouvelle est qu’il existe de nombreuses façons de travailler efficacement avec les données et d’améliorer vos résultats commerciaux, en particulier dans ce domaine. Nous y sommes parvenus en travaillant avec Encode, une plateforme de gestion des cybermenaces. Le client avait besoin de mettre à niveau sa plateforme Enorasys Security Analytics, qui manquait de l’infrastructure nécessaire pour évoluer rapidement au rythme de la croissance des données. Nous les avons aidés à migrer vers Elasticsearch tout en conservant l’accès aux données qu’ils stockaient précédemment dans MySQL. Les résultats ont été une mise à niveau globale et une pérennisation du produit, une réduction des coûts de maintenance logicielle et une reconnaissance de la part d’IBM.
Intégrez la sécurité et la conformité dès le premier jour
Chaque modernisation de système existant aujourd’hui devrait commencer par réfléchir à la manière d’assurer la conformité et la sécurité à chaque étape de votre transformation. Voici quelques éléments à considérer dès le départ :
- Gestion des dépendances et listes de composants logiciels (SBOM)
- SLAs de patching avec analyse automatisée des vulnérabilités
- Gestion des secrets
- Accès au moindre privilège avec segmentation réseau
- Modélisation des menaces pour les flux clés
Cela aborde directement les risques posés par les « composants vulnérables et obsolètes » qui affectent de manière disproportionnée les systèmes existants. Rappelez-vous, la refonte de la sécurité a un coût élevé et est souvent incomplète, mais l’intégrer coûte moins cher et fonctionne mieux.
L’un de nos projets d’examen de code comprenait une évaluation détaillée de la santé et de la sécurité, nous avons donc constaté à quel point une entreprise peut être plus efficace lorsqu’elle planifie la sécurité dès le départ. Site Compass, propriété de Reivernet Group of Companies en Australie, en est notre exemple. Nous avons procédé à un examen approfondi de leur base de code, identifié les vulnérabilités et proposé des suggestions de remédiation. En conséquence, Reivernet Group a pu planifier et mettre en œuvre des améliorations qui ont entraîné une augmentation de 90 % de la maintenabilité du code.
Exécutez l'ancien et le nouveau en parallèle avec des critères de basculement clairs
L’une des choses les plus importantes à comprendre concernant les meilleures pratiques de modernisation des systèmes existants est que vous devriez toujours avancer de manière incrémentielle. Il ne s’agit pas de faire de grands changements spectaculaires en un jour. En fait, c’est un risque énorme et souvent injustifié. Au lieu de cela, vous devriez :
- Définir les critères d’entrée et de sortie pour chaque fonctionnalité migrée
- Établir des bases de référence de performance que la nouvelle implémentation doit atteindre
- Élaborer des plans de retour arrière (rollback)
- Définir votre « définition de terminé » (definition of done), y compris la documentation et les guides d’exploitation (runbooks)
Nous suggérons d’utiliser des déploiements Canary et des lancements progressifs pour limiter le rayon d’impact. La capacité de router le trafic entre les anciennes et les nouvelles implémentations, et de revenir en arrière rapidement si nécessaire, transforme la modernisation d’un pari à enjeux élevés en une série d’expériences gérables.
Nous avons mis en œuvre cette approche lors de la modernisation de l’application Pridefit, ce qui a entraîné une augmentation de 45 % des abonnements en introduisant progressivement de nouvelles fonctionnalités tout en mettant à jour et en rationalisant la fonctionnalité de base.
La clé du succès lors de la mise en œuvre de la modernisation des systèmes existants
Soyons honnêtes, deux facteurs clés détermineront si votre transformation réussira ou échouera :
- Votre attitude envers la planification stratégique et la mise en œuvre du processus de modernisation
- Avoir un partenaire fiable et expérimenté qui fait un effort supplémentaire pour comprendre votre entreprise
Les systèmes existants sont si profondément ancrés dans votre fondation que les modifier de quelque manière que ce soit n’est pas seulement une question de technologie. Parfois, votre approche même des tâches quotidiennes doit également changer.
Chez Redwerk, nous sommes fiers de travailler en étroite collaboration avec chaque client pour comprendre réellement leur entreprise de l’intérieur. Nous étudierons vos processus et analyserons vos objectifs avant de proposer une approche stratégique de changement.
Vous souhaitez voir comment cela peut fonctionner pour vous ? Contactez-nous et commençons une conversation dès aujourd’hui !
Découvrez comment nous avons aidé VIP Auslan à améliorer son produit et à réduire l'administration manuelle de 40 %