La modernisation d’application est le processus consistant de prendre les applications existantes et d’en moderniser l’infrastructure, de leur plate-forme, de leur architecture interne et/ou de leurs caractéristiques. La plupart des discussions sur la modernisation d’application aujourd’hui se concentrent sur les applications monolithiques sur site, généralement mises à jour et maintenues à l’aide de processus de développement en cascade, et sur la manière dont ces applications peuvent être intégrées dans une architecture infonuagique et des modèles de publication, notamment les micro-services et DevOps.
Comment cela se matérialise-t-il? Il faut diviser ce processus en plusieurs étapes, tout aussi importantes les unes que les autres. Nous allons nous pencher sur la première étape et l’objectif premier d’une modernisation d’application : se réinventer.
Changer
Se moderniser, soi-même ou ses applications, reste un défi de taille. Nous sommes tous assez préoccupés déjà avec notre quotidien, alors nous demander d’inclure un processus d’amélioration devient un fardeau quasi insupportable pour beaucoup d’entre nous. À la fin du siècle dernier, j’ai participé à une rencontre dans la belle ville de Québec où on m’a présenté pour la première fois Team Foundation Services. TFS pour les intimes. Et quelque chose en moi a changé. J’ai fait des observations personnelles sur ce qu’il y avait de commun entre tous les « bons » gestionnaires de projet. Ceux qui étaient intervenus et avaient redressés les projets difficiles, particulièrement.
Ce que j’ai constaté, c’est qu’en plus d’avoir de la rigueur, ils avaient une méthode. De plus, leur plan d’exécution (peu importe ce qu’il était) était visible et facile à suivre. Et oui, ils avaient une fondation technique assez forte pour comprendre les outils à leur disposition, ce qui permettait d’alléger la tâche de garder le contrôle sur les projets. Ce fut une petite épiphanie. J’ai compris qu’il y avait un rôle dans les organisations pour revoir les façons assez traditionnelles, voire rigides, d’opérer.
Bref, la réinvention, ce n’est pas donné à tout le monde et ce n’est pas toujours notre préoccupation, voire rarement. C’est pourquoi il y a des gens comme moi et des organisations comme la nôtre qui se font un plaisir de le faire. Sincèrement, je ne ferais que ça, rien d’autre!
Alors, comment cela s’applique-t-il à la modernisation d’application?
« Tout comme la réinvention d’un processus, comment peut-on réinventer une architecture applicative pour la rendre plus facile à gérer? Il faut commencer par comprendre les contraintes d’une application traditionnelle. »
Revoir les structures traditionnelles
Les applications conventionnelles ont souvent une apparence semblable. Elles sont des bêtes quasi monolithiques et pour toutes les petites pièces qui les composent, s’il y en a une qui change, il n’y a plus rien qui fonctionne.
Cette fragilité en informatique reste un des défis liés à tout écosystème applicatif qu’on veut à la fois agile, robuste et évolutif. Faisons une mise en situation : Si à chaque fois que vous voulez changer votre tenue vestimentaire, vous deviez dépendre de 3 autres personnes et vous deviez être vêtus des mêmes couleurs, c’est contraignant. Et pourtant, dans un effort d’économiser des lignes de code, on a longtemps fonctionné comme cela.
Tout comme la réinvention d’un processus, comment peut-on réinventer une architecture applicative pour la rendre plus facile à gérer? Il faut commencer par comprendre les contraintes d’une application traditionnelle.
Compte tenu de l’aide à nous structurer et à éviter les erreurs qu’une application traditionnelle nous apporte, son « matériel » de soutien ou son infrastructure l’a souvent consigné à prendre une apparence bien connue.
C’est un peu comme le travail quotidien que nous vivions il y a quelque temps. Tout le monde devait se mobiliser, matin et soir, pour collaborer. On devait tous vivre dans un espace commun pour travailler.
On dira ce que l’on voudra, mais si la venue de la COVID-19 est beaucoup plus qu’un simple inconvénient, reste que comme beaucoup d’autres problèmes, elle cache une opportunité. Cela nous a appris qu’on pouvait se distribuer et rester efficace dans beaucoup de domaines. Et c’est tout à fait le point du découplage applicatif : ce n’est pas applicable partout et tout le temps. Mais cela vaut la peine d’examiner où cela pourrait être bénéfique.
Savoir réévaluer les points critiques de la modernisation d’application
Premier point : Rendre son application plus robuste
Avoir une architecture applicative en morceaux, modulaires et autonomes, nous permet de considérer l’application comme étant « distribuée ». En effet, chacune des pièces d’une application a été conçue pour exister et servir les autres parties de l’application sans les contraindre. Souvent on parle de micro-services, ou de APIs, dans ce contexte. Cette distribution nous permet de considérer de la redondance et de la capacité additionnelle pour bien desservir la clientèle.
Deuxième point : Efficacité
Il n’est pas donné que la charge d’un module applicatif sera égale à celle d’un autre. Si un module de vente était aussi chargé que le module de marketing, nous serions bien heureux. Alors s’étant défait de liens inutiles, nous pouvons maintenant héberger nos différents services sur des infrastructures flexibles, à des capacités en fonction de nos besoins spécifiques pour ces modules/services et selon leur charge. En plus d’offrir la capacité là où elle est nécessaire, elle permet d’économiser sur les ressources là où c’est possible.
Troisième point : Évolutif
Il devrait paraître évident à ce point que l’indépendance des services offerts aux différentes parties nous permet de reconsidérer comment on mise sur nos efforts. En effet, une modification à un morceau critique de l’application ne requiert plus de faire une transformation complète et une réinstallation générale de l’application. Elle peut rester opérationnelle pendant son évolution. Un élément critique pour rester compétitif.
Conclusion
Nous nous sommes attardés à un point très précis de la modernisation d’application. Mais pour plusieurs, elle forcerait une réinvention des façons de faire assez profonde. C’est pourquoi il y a des gens et des firmes spécialisées comme nous pour le faire. Il y a toute une gestion à faire des processus et des outils entourant une réinvention. Elle n’est pas nécessairement difficile. Mais difficile ne veut pas dire complexe.
Soyons clairs, peu de marchés peuvent se permettre de stagner et risquer un bris critique à cause d’une homéostasie artificiellement maintenue. Non, si on veut rester compétitif et efficace il faut savoir bouger, être résilient et investir ses ressources avec intérêt.
Alors quand viendra le temps de faire votre passage au prochain niveau, considérez comment pour pouvez distribuer la charge de vos changements. Que ce soit dans vos applications ou vos processus, de vouloir tout garder rattaché, cordé et en boîte peut rendre votre vie plus difficile que nécessaire.
On pense à vous. Pensez à nous.