L’art de faire évoluer les conteneurs : les nouvelles tentatives

Écosystème F5 | 11 janvier 2018

La mise à l’échelle des conteneurs ne consiste pas simplement à placer un proxy devant un service et à passer à autre chose. Elle ne se limite pas à la répartition de la charge et, dans l’univers en constante évolution des conteneurs, cinq fonctionnalités distinctes sont nécessaires pour garantir la mise à l’échelle : les nouvelles tentatives, les disjoncteurs, la découverte, la répartition, et la supervision.

Dans cet article consacré à l’art de faire évoluer les conteneurs, nous allons nous pencher sur les nouvelles tentatives.

Nouvelles tentatives

Quand on est enfant et qu’on joue, le concept de nouvelle tentative est courant dans de nombreux jeux. Après un échec, on lance souvent « On recommence ! », dans l’espoir que les autres joueurs nous laisseront réessayer. Parfois, ils acceptent. Parfois, non. Mais j’ai remarqué que cela empêche rarement un enfant de retenter sa chance.

Lorsqu’on met à l’échelle des applications (ou des services, si vous préférez), le principe d’une nouvelle tentative est sensiblement le même. Après avoir choisi un service et tenté de traiter une requête, un proxy reçoit une erreur. Dans les scénarios d’équilibrage de charge simples, celle-ci est généralement détectée en examinant le code de réponse HTTP. Toute réponse autre que « 200 OK » est considérée comme une erreur. Cela inclut les délais d’expiration au niveau du réseau et de la couche TCP. L’équilibreur de charge peut soit renvoyer aveuglément la réponse ayant échoué au

Citation sur la folie

demandeur ou, s’il est suffisamment intelligent, il peut réessayer la requête dans l’espoir qu’une tentative ultérieure aboutisse à une réponse positive.

Cela semble assez élémentaire, mais aux débuts du passage à l’échelle, les nouvelles tentatives n’existaient pas. En cas d’échec, c’était un échec et nous faisions avec. Généralement, en essayant manuellement de recharger la page depuis le navigateur. Les proxys ont fini par devenir suffisamment intelligents pour effectuer eux-mêmes de nouvelles tentatives, évitant ainsi à bien des claviers d’user leurs touches « CTRL » et « R ».

À première vue, c’est l’illustration parfaite de cette définition de la folie. Après tout, si la requête a échoué la première fois, pourquoi s’attendre à ce qu’elle aboutisse à la deuxième tentative (voire à la troisième) ?

La réponse réside dans la raison de l’échec. Lors de la mise à l’échelle des applications, il est important de comprendre l’incidence de la capacité de connexion sur les échecs. La charge d’une ressource donnée à un instant donné n’est pas fixe. Des connexions sont constamment ouvertes et fermées. La plateforme d’application web sous-jacente – qu’il s’agisse d’Apache ou d’IIS, d’un moteur node.js ou d’une autre pile technologique – est soumise à des contraintes de capacité bien définies. Elle ne peut maintenir qu’un nombre X de connexions simultanées. Lorsque cette limite est atteinte, les tentatives d’ouverture de nouvelles connexions restent en attente ou échouent.

Si telle est la cause d’un échec, il est possible que, pendant les quelques microsecondes nécessaires au proxy pour recevoir une réponse indiquant cet échec, une autre connexion se soit fermée, permettant ainsi à une nouvelle tentative d’aboutir.

Dans certains cas, la défaillance est interne à la plateforme. La redoutable erreur « 500 Internal Server Error ». Ce statut apparaît souvent lorsque le serveur n’est pas surchargé, mais qu’il a fait appel à un autre service (externe) qui n’a pas répondu à temps. Cela se produit parfois lorsqu’un pool de connexions à une base de données atteint ses limites. La dépendance à des services externes peut entraîner une cascade d’erreurs qui, comme une surcharge de connexions, est souvent résolue au moment où vous recevez l’erreur initiale.

Vous pourriez également rencontrer la très peu utile erreur « 503 Service Unavailable ». Celle-ci peut être due à une surcharge, mais comme pour tous les codes d’erreur HTTP, elle ne permet pas toujours de déterminer précisément l’origine réelle du problème. Elle peut notamment survenir à la suite d’une défaillance DNS ou, dans le cas d’IIS et d’ASP, lorsque la file d’attente est pleine. Les causes possibles sont en réalité très diverses. Là encore, le problème peut être résolu avant même que vous ne receviez l’erreur ; votre premier réflexe doit donc impérativement être de réessayer.

Bien sûr, vous ne pouvez pas réessayer indéfiniment. À l’instar des conséquences imprévues de la retransmission TCP — qui peut surcharger les réseaux et submerger les destinataires —, les nouvelles tentatives finissent par devenir inutiles. Il n’existe pas de règle absolue quant au nombre de tentatives à effectuer avant d’abandonner, mais il est courant d’en faire entre 3 et 5.

À ce stade, il est temps d’informer le demandeur que sa requête ne peut pas être satisfaite et d’activer un disjoncteur. Nous approfondirons ce mécanisme dans notre prochain article.

Partager
Mots-clés : 2018

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