Faire cohabiter les monolithes avec les microservices

Écosystème F5 | 28 mai 2019

Il existe une croyance fantaisiste selon laquelle il suffirait de prendre un monolithe, de le placer dans un conteneur, et voilà ! On bénéficierait alors des avantages d’une architecture moderne en matière de mise à l’échelle et de rapidité.

En fait, une enquête KubeCon de 2018 suggère que c’est exactement ce qui se passe pour environ 55 % des personnes interrogées, qui ont indiqué utiliser les conteneurs « en remplacement des machines virtuelles pour les applications existantes ». D’autres enquêtes montrent qu’un nombre important d’applications Java — de niveau entreprise — s’exécutent dans des conteneurs. Une enquête Diamanti de 2018 a montré que, si la majorité (54 %) utilisait des conteneurs pour des applications cloud natives, près d’un tiers (31 %) les utilisait pour moderniser des applications existantes.

Les raisons invoquées sont généralement d’ordre opérationnel : les conteneurs sont considérés comme plus simples à gérer, malgré la multiplication des composants à administrer. Les performances et les coûts de licence sont également souvent pris en compte dans la décision d’adopter les conteneurs.

Mais cette migration ne se résume pas à empaqueter une application existante et à la placer dans un conteneur.

En réalité, les monolithes — les applications client-serveur et web traditionnelles — présentent certaines caractéristiques qui rendent difficile leur migration telle quelle vers un conteneur tout en bénéficiant des avantages opérationnels. Les conteneurs et les microservices ne vont pas nécessairement de pair, mais tous deux s’appuient sur les principes de « conception en prévision des défaillances », sur lesquels repose la disponibilité des applications modernes. Si vous ne connaissez pas ce principe, il consiste simplement à démarrer un autre conteneur pour remplacer celui qui tombe en panne. Tous les conteneurs sont interchangeables : l’un en vaut un autre.

Dans les architectures d’applications sans état délibérément conçues pour être modernes، c’est vrai. Dans les architectures d’applications traditionnelles avec état, beaucoup moins.

En effet, l’architecture client-serveur et celle qui lui a succédé, l’application web à trois niveaux, sont généralement avec état. Elles conservent dans une session certaines informations relatives aux interactions entre un client et l’application. Cette session peut être stockée en mémoire sur le serveur d’applications ou le serveur web, ou dans une base de données distincte. Quel que soit l’endroit où ces données sont stockées, ce sont elles qui confèrent à l’application son caractère avec état. Ces données sont pertinentes et importantes pour le fonctionnement de l’application. Elles comprennent votre panier, la dernière page que vous avez consultée et d’autres informations propres à l’application.

Données des sessions avec état

Vous imaginez bien que si le serveur web/app qui héberge ces informations disparaît soudainement, l’expérience client s’en trouve fortement perturbée. Mon panier a disparu. Je dois revenir là où j’en étais. En gros, je dois tout recommencer.

Ce comportement est diamétralement opposé aux principes d’architecture modernes, qui éliminent le fonctionnement avec état d’une application. C’est grâce à la nature sans état des applications et services modernes qu’il est possible de remplacer de manière transparente une instance par une autre en cas de problème. C’est le fondement même du principe de « conception axée sur la défaillance ». Si vous réintroduisez l’état dans cette équation, tout s’effondre soudainement.

Même si l’application continue de fonctionner, l’utilisateur se retrouve dans l’incertitude. Son parcours est interrompu et ses transactions disparaissent dans les limbes, à tout jamais.

Ce problème a fait naître la nécessité, pour les services applicatifs, de tenir compte de l’état. Dès lors qu’un client se connectait à un serveur d’applications ou à un serveur web donné, il devait rester connecté à ce même serveur pendant toute la durée de la session. La persistance par cookie et d’autres mécanismes ont été mis au point afin de garantir que les requêtes soient systématiquement acheminées vers le même serveur. Le but étant de préserver l’état.

En réalité, à moins d’être une start-up partant de zéro, vous utilisez actuellement à la fois des applications traditionnelles et modernes. Bien que les études sur le sujet varient, la répartition « 63 % d’applications existantes / 37 % de nouvelles applications » reste globalement stable au fil du temps. Cela signifie que vous devez prendre en charge simultanément les architectures existantes et modernes.

Le simple fait de déplacer le monolithe dans un conteneur ne servira à rien si vous n’avez pas résolu la problématique liée à la distinction entre les applications avec état et sans état.

ARCHITECTURE EN COUCHES

La meilleure façon — ou du moins la plus simple — de gérer la migration de monolithes vers un environnement conteneurisé consiste à s’assurer que l’état peut toujours être respecté, même dans l’anarchie sans état d’un cluster de conteneurs. Cela nécessite une certaine intelligence en périphérie du cluster, au niveau du point d’entrée où le trafic nord-sud rencontre le trafic est-ouest.

Approche traditionnelle ou moderne des opérations

Une approche à deux niveaux prend en charge les modes d’exploitation traditionnels et modernes, ainsi que la migration des applications traditionnelles avec état vers un environnement conteneurisé. Grâce à F5 Container Ingress Services (CIS), les équipes NetOps peuvent continuer à répondre aux besoins des applications avec état lors de leur migration vers des environnements conteneurisés. Cette connectivité permet aux méthodes traditionnelles d’équilibrage de charge utilisant la persistance de continuer à fonctionner et à acheminer les requêtes vers le conteneur approprié ou directement vers un environnement traditionnel.

Parallèlement, BIG-IP peut diriger simultanément les requêtes destinées aux applications modernes et aux API vers un contrôleur d’entrée situé au sein du cluster de conteneurs, afin de les répartir entre autant de conteneurs sans état que nécessaire.

Les transitions prennent du temps

En réalité, la plupart des organisations prennent en charge jusqu’à cinq architectures applicatives bien distinctes, allant des applications monolithiques aux applications mobiles et aux microservices. La prise en charge simultanée d’un nombre équivalent de modèles réseau et opérationnels distincts risque inévitablement de submerger les équipes d’exploitation et d’annuler les avantages liés à l’adoption d’architectures et d’environnements modernes. Une approche stratégique à deux niveaux permet aux organisations de tirer parti des avantages opérationnels et commerciaux des deux modèles tout en évoluant vers un environnement majoritairement conteneurisé.

OPTION DE REFACTORISATION

Pour faciliter cette transition, vous pouvez notamment remanier les applications existantes afin de tirer parti de sessions partagées. Ces sessions sont stockées à un emplacement distinct du serveur web/applicatif — généralement dans une base de données — et sont accessibles à tout serveur web/applicatif disposant de l’identifiant de session approprié. Vous devrez toujours assurer le suivi de cet identifiant, mais cela peut généralement se faire au moyen d’un cookie qui persiste indépendamment de l’état du serveur web/applicatif. Si les applications existantes n’utilisent pas déjà un modèle de sessions partagées, les remanier en ce sens est relativement simple par rapport à la migration de l’ensemble de l’application vers une nouvelle plateforme.

Comme de telles transitions prennent du temps — après tout, nous fonctionnons encore presque tous aujourd’hui selon un modèle multicloud —, il est important d’identifier et d’exploiter les options architecturales qui maximisent les avantages sans compromettre les besoins essentiels des clients, tels que la disponibilité et la sécurité. Une approche architecturale à deux niveaux permet de répondre à ces deux impératifs sans entraver les efforts de conteneurisation.

Partager
Mots-clés : 2019

À propos de l’auteur

Lori Mac Vittie
Lori Mac VittieIngénieur émérite et évangéliste en chef | F5

Lori MacVittie est ingénieure émérite et évangéliste en chef au sein du bureau du directeur technique de F5. Elle possède une expertise approfondie dans la fourniture d’applications, les stratégies d’automatisation et les infrastructures. Elle est réputée pour sa capacité à rendre la complexité intelligible, qu’elle définisse des garde-fous pour les agents d’IA, analyse des architectures multicloud fragiles ou explore les limites des systèmes évolutifs. Elle cumule plus de trente ans d’expérience dans le secteur, couvrant le développement d’applications, l’architecture informatique ainsi que l’exploitation des réseaux et des systèmes. Avant de rejoindre F5, elle a été rédactrice spécialisée dans les technologies et a reçu plusieurs distinctions. MacVittie est titulaire d’un master en informatique et est une autrice prolifique dont les publications couvrent la sécurité, le cloud et l’architecture d’entreprise. Elle est également une passionnée de jeux de société et de jeux vidéo, et assume pleinement ses avis bien tranchés sur le fromage.

Autres articles de Lori Mac Vittie

Articles de blog associés

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives
Écosystème F5 | 08/09/2025

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives

Découvrez comment NGINXaaS s’intègre à Google Cloud pour renforcer les performances et la sécurité, et préparer vos applications critiques à un avenir propulsé par l’IA.

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui
Écosystème F5 | 24/04/2023

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui

En faisant appel à un partenaire de déploiement AWS WAF tel que F5, vous pouvez renforcer la sécurité de vos applications web grâce à des règles personnalisées qui bloquent les schémas d’attaque courants, comme les injections SQL ou les attaques par scripts intersites (XSS).

Appliquer le principe de Peter Parker à l’inspection TLS
Écosystème F5 | 09/12/2019

Appliquer le principe de Peter Parker à l’inspection TLS

« Un grand pouvoir implique de grandes responsabilités. » Si l’on en trouve des échos chez Voltaire et Churchill, cette citation est surtout connue grâce aux bandes dessinées Spider-Man, où elle est attribuée à l’oncle Ben. Bien entendu, si cette phrase est si répandue dans la culture populaire, c’est notamment parce qu’elle peut s’appliquer à une multitude de situations et de sujets, y compris à l’inspection TLS.

Le NetOps a besoin de défenseurs, pas d’adversaires
Écosystème F5 | 13/12/2018

Le NetOps a besoin de défenseurs, pas d’adversaires

Il est important de reconnaître que les équipes NetOps ne sont pas toujours celles qui font obstacle au déploiement de la dernière nouveauté, application ou service. Les freins à la rapidité sont souvent dus au fait que les organisations n’adoptent pas tous les principes du DevOps lorsqu’elles cherchent à transformer leurs opérations informatiques.

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects
Écosystème F5 | 01/03/2018

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects

Il est de nouveau temps de nous pencher sur les services applicatifs que les entreprises utilisent réellement pour rendre leurs applications plus rapides et plus sûres. On constate notamment une hausse du recours aux services de protection contre les bots, ainsi que la progression lente mais régulière de HTTP/2. Bien qu’il ne s’agisse pas d’une application…

Les templates prennent le contrôle du cloud
Écosystème F5 | 02/02/2017

Les templates prennent le contrôle du cloud

Les modèles s’imposent dans le cloud. Lisez le blog de F5 pour découvrir comment l’infrastructure en tant que code et les API déclaratives automatisent la mise à disposition des applications.