Les applications cloud natives se développent à un rythme soutenu. Même si elles ne dominent pas encore tout à fait les portefeuilles d’applications, elles sont de plus en plus nombreuses. L’intérêt pour les conteneurs est étroitement lié aux architectures cloud natives (basées sur des microservices), en raison de leur dépendance intrinsèque à l’infrastructure pour les communications et la mise à l’échelle.
En règle générale, la mise à l’échelle des microservices s’effectue par clonage horizontal. Autrement dit, si nous avons besoin de davantage d’instances d’un service donné, il suffit de le cloner et de l’ajouter au pool disponible dans lequel un répartiteur de charge sélectionne une instance pour répondre aux requêtes. Rien de plus simple. Lorsque ces microservices correspondent étroitement à des éléments fonctionnels, ce modèle fonctionne encore mieux.
Le répartiteur de charge en question est souvent un composant de l’orchestrateur de conteneurs et utilise par défaut l’algorithme TCP de type round-robin, qui constitue la norme du secteur. Ainsi, lorsqu’une requête arrive, le répartiteur de charge choisit la ressource « suivante dans la file » pour y répondre.
Cette méthode est souvent comparée à la file d’attente dans une banque ou au service des immatriculations. Mais cette comparaison n’est pas tout à fait exacte. Dans un véritable système de tourniquet, vous n’êtes pas dirigé vers la ressource « disponible suivante », mais vers la ressource « suivante dans l’ordre », même si celle-ci est occupée. Paradoxalement, les méthodes de répartition utilisées par le service des immatriculations et votre banque locale sont plus efficaces qu’un véritable algorithme de tourniquet.
Je sais, pas vrai ?
Cela vaut également pour les applications. Un même service, y compris sur le plan fonctionnel, peut être dupliqué, car ses différentes instances traitent le même ensemble de requêtes. Mais en matière d’exécution, toutes ces requêtes ne se valent pas, en raison des données. Eh oui, les données. Le temps d’exécution d’une même requête fonctionnelle, ou d’un même appel d’API, peut varier selon les données envoyées ou demandées. Après tout, récupérer et sérialiser la fiche d’un seul client prendra moins de temps que d’en récupérer et d’en sérialiser dix ou cent.
Et c’est là que la répartition à tour de rôle montre certaines limites et introduit une variabilité susceptible d’affecter les performances. L’axiome opérationnel n° 2 s’applique toujours aux architectures cloud natives et basées sur des microservices : à mesure que la charge augmente, les performances diminuent.
Le round robin, c’est comme le ratel : il n’en a rien à faire qu’une ressource soit surchargée par des requêtes renvoyant d’importants volumes de données. Il dit simplement « c’est votre tour », que la ressource soit prête ou non. Les utilisateurs dont les requêtes finissent dans la file d’attente d’une ressource de plus en plus sollicitée peuvent alors subir des performances inégales.
Si les performances vous préoccupent — et elles devraient vous préoccuper —, une meilleure solution consiste à utiliser pratiquement n’importe lequel des autres algorithmes standard, comme celui du plus petit nombre de connexions ou celui du temps de réponse le plus rapide. En résumé, votre algorithme doit tenir compte de la charge et/ou de la vitesse, au lieu de simplement envoyer les requêtes à l’aveugle vers des ressources qui ne constituent peut-être pas le meilleur choix.
L’avenir de l’équilibrage de charge
Certains pourraient penser qu’à mesure que l’on remonte la pile, de TCP à HTTP puis à HTTP+, ce problème se résoudra de lui-même. Il n’en est rien. La méthode de répartition — l’algorithme d’équilibrage de charge — reste pertinente, quelle que soit la couche sur laquelle elle repose. L’algorithme round-robin ne se soucie pas de l’architecture, mais des ressources, et prend ses décisions en fonction d’un pool disponible. Que ce pool serve à mettre à l’échelle un seul appel d’API ou un monolithe entier ne change rien pour l’algorithme.
Il serait donc souhaitable que l’équilibreur de charge soit suffisamment intelligent pour déterminer si une requête produira un volume de données « supérieur à la moyenne » avant son exécution. Les pare-feu d’applications web tels que F5 WAF sont capables de détecter un résultat inhabituel, mais ils le font au niveau de la réponse, principalement pour renforcer la sécurité des applications. Il faudrait que l’équilibreur de charge devienne suffisamment intelligent pour anticiper une réponse légitime « très volumineuse ».
Si l’équilibreur de charge était capable d’un tel discernement, il pourrait en tenir compte dans sa prise de décision et répartir plus uniformément les requêtes entre les ressources disponibles. Ce que nous voulons vraiment, c’est ne pas être contraints de définir un algorithme rigide sur lequel fonder les décisions. Il serait préférable que l’équilibreur de charge puisse prendre sa décision en fonction de seuils métier et de caractéristiques techniques telles que les temps de réponse, le temps d’exécution prévu, le volume de données renvoyées et la charge à l’instant présent de chaque ressource.
En définitive, ce type d’intelligence ne peut être concrétisé que grâce à une meilleure visibilité et à l’apprentissage automatique. Si l’équilibreur de charge peut apprendre par l’expérience à reconnaître les requêtes qui prennent plus de temps que les autres, il peut alors mettre ces connaissances à profit pour mieux répartir les requêtes et ainsi garantir un temps de réponse constant et prévisible.
La répartition de charge n’est pas près de disparaître. C’est notre meilleure réponse technique pour faire évoluer l’ensemble des systèmes, du réseau aux applications. Mais elle doit évoluer avec le reste de l’infrastructure afin de devenir plus dynamique, autonome et intelligente.
À propos de l’auteur

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 VittieArticles de blog associés

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
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
« 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
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
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
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.