Modernisation des applications : Evolution & Enjeux
Partons de ce postulat : Lorsqu’un utilisateur est confronté à une nouvelle innovation améliorant son expérience, cette innovation devient de facto son nouveau standard, augmentant ainsi son exigence.
Depuis plusieurs années nous avons pu assister à maintes innovations avec des systèmes de plus en plus sécurisés, disponibles, et performants. Ces caractéristiques définissent de nouveaux standards du web, très exigeants, conduisant à l’impatience de l’utilisateur : nous voulons tout, tout de suite. Que l’on soit d’accord ou non, en tant que professionnel de l’informatique, nous sommes missionnés pour répondre à ces attentes qui caractérisent les grands défis technologiques de ces prochaines années.
Nos enjeux contemporains
Expérience utilisateurs & Performance
L’arrivée de la fibre et celle imminente de la 5G risque d’augmenter l’exigence des utilisateurs car il ne sera bientôt plus possible de blâmer une supposée mauvaise connexion internet : la faute sera attribuée à l’application. Cependant, la complexité des applications évolue de pair avec celle des activités liées à la qualité : un système distribué est très difficilement testable manuellement car chaque itération des test est chronophage. Pour ce challenge, nous répondons toujours de la même manière : automatiser les tâches pénibles, répétitives et à faible valeur ajoutée (Toil). L’automatisations se fera bien entendu en respectant les pratiques DevOps. Le respect de ces pratiques est facilité par les plateformes de conteneurisation (PaaS) qui permettent les tests et le déploiement continu des applications. Cela réduit aussi le Time to Market, ce qui reste, un de nos challenges historiques.
Haute disponibilité & Fiabilité
Il y a de cela une quinzaine d’années, certaines chaînes de télévision ne diffusait pas de contenu la nuit. C’est aujourd’hui tout à fait impensable d’avoir des périodes d’inactivité : si notre utilisateur veut passer une commande sur un site, celui-ci doit être en mesure de le faire à n’importe quelle heure du jour ou de la nuit. La plus petite indisponibilité du système menant à une perte de chiffre d’affaire, nous avons besoin de systèmes résilients et fiables. Ces contraintes font échos à plusieurs pratiques :
- Les solutions de PaaS tel que Kubernetes ou Openshift qui facilitent la mise en place de redondances et de déploiements sans discontinuité de services.
- Le Chaos Engineering qui apporte une nouvelle méthodologie pour améliorer la résilience des applications en créant de la connaissance de manière empirique.
Ces solutions sont très techniques mais certaines ne le sont pas et permettent tout autant d’apprendre de ses erreurs :
- La mise en place de post mortem afin de ne pas répéter deux fois la même erreur.
- La culture blameless ou “sans blâme” qui, après une période de prise de confiance, évite les tensions, les griefs, et permet une détection des problèmes au plus tôt.
Sécurité
La surmédiatisation des cyber-attaques et la multiplication des escroqueries aura eu pour effet positif de sensibiliser les utilisateurs, parfois dans la douleur, à la question de la sécurité informatique. L’utilisateur a dorénavant besoin de se sentir en sécurité et le cadenas signifiant une connexion HTTPS est un acquis qui tend à devenir obligatoire et le sera avec HTTP/3. Cette sécurité est à conjuguer avec le besoin de simplicité pour l’utilisateur : Le Single Sign On (SSO), devient un standard et est de plus en plus demandé en entreprise avec des solutions comme Keycloak.
La problématique sécuritaire voit également de nouveaux défis liés à la provenance des ressources open-sources. Il y a quelques années, nous étions confrontés à l’apparition d’une multitude de librairies Javascript qui posaient des questions relatives à la sécurité : est-ce que ma librairie est sécurisée ? Est-ce qu’elle contient du code malicieux ? Aujourd’hui une problématique similaire se profile avec la provenance des images servant à déployer les conteneurs : comment s’assurer de leur provenance ? Comment tester leur sécurité ? Bien heureusement, des solutions existent pour exécuter des scans statiques de vulnérabilités à l’image de la solution Clair implémentée sur Quay.io. Une fois vérifiées et validées, les images pourront être stockées dans un dépôt privé et sûr pour limiter les vulnérabilités des applications. Cependant, même si ces scans permettent de limiter les risques, nous ne saurions omettre les différents tests d’intrusions dont toute application a besoin.
Toute évolution a un coût
L’évolution des nouvelles technologies se faisant graduellement, il est aujourd’hui possible d’avoir une application hautement disponible, résiliente et performante avec les bonnes pratiques et les bons outils. Le problème est ailleurs : comment maintenir l’existant et amorcer ces transitions sans décupler les besoins en développeurs et opérationnels ?
Ici, la solution la plus raisonnable consiste à libérer du temps des différentes équipes pour qu’elles puissent travailler sur des sujets moins chronophage mais qui leur feront gagner du temps par la suite :
- Réduire les temps de résolutions des incidents grâce à l’Observability et l’APM : des solutions comme la suite Elastic (Metric Beat, Elastic APM), Jaeger, Prometheus permettront une meilleure maîtrise et compréhension de l’application ce qui réduira les temps de résolution des incidents.
- Et au risque de me répéter : supprimer les tâches longues et répétitives (Toil) par l’automatisation, l’intégration continue (CI), et le déploiement continue (CD).
Conclusion
Ces trois sujets constituent déjà des chantiers pouvant paraître pharaoniques mais il en existe une multitude d’autres. La plus grande difficulté est de prioriser les sujets dans des contextes parfois difficiles et le plus souvent avec des ressources limitées. Pour cette priorisation il faut rester pragmatique et se rattacher au métier : l’informatique est, pour la plupart des entreprises, un outil et un support ; cela veut dire que les besoins des équipes métiers et leurs priorités doivent former la ligne directrice de la modernisation des applications.
Dans tous les cas, des changements de ce type ne peuvent pas être réalisés du jour au lendemain et devront mis en place par étapes, avec patience : le dépassement d’un jalon n’est pas grave tant qu’il n’impacte pas la production. Si il faut prendre plus de temps pour améliorer un système, il faut le prendre et éviter tout impact sur le cœur de métier de l’entreprise.