La mise à l’échelle des conteneurs ne se résume pas simplement à placer un proxy devant un service et à s’en aller. La mise à l'échelle ne se limite pas à la distribution. Dans le monde en évolution rapide des conteneurs, cinq capacités distinctes sont nécessaires pour garantir la mise à l'échelle : les nouvelles tentatives , les disjoncteurs , la découverte , la distribution et la surveillance.
Dans cet article sur l’art de mettre à l’échelle les conteneurs, nous allons nous pencher sur la surveillance.
Surveillance. À une époque où tout semble être à l’écoute et/ou à la surveillance, depuis la vitesse à laquelle nous conduisons jusqu’au contenu de notre réfrigérateur, ce mot laisse un goût amer dans beaucoup de bouches. Nous pouvons utiliser – et le faisons souvent – le mot « visibilité » à la place, mais ce sophisme sémantique ne change pas ce que nous faisons : nous observons, de près.
L’évolutivité repose entièrement sur la surveillance ; vous devez connaître l’état des ressources sur lesquelles vous répartissez les requêtes. Envoyer une requête vers une « zone morte » parce que la ressource est en panne ou vient d’être arrêtée, c’est comme tourner dans une impasse sans issue. Cela ne fait que vous faire perdre du temps.
La surveillance se décline sous de nombreuses formes. Il y a la surveillance « Puis-je vous joindre » d'un ping au niveau de la couche réseau. Il y a la surveillance « êtes-vous à la maison » d'une connexion TCP. Et il y a le « répondez-vous à la porte » d'une requête HTTP. Ensuite, il y a la surveillance « Avez-vous déjà bu votre café » qui détermine si le service répond correctement ou non.
En plus de vérifier simplement l'état de santé et l'exécution d'un service, il faut également surveiller les performances. La rapidité avec laquelle le service répond est essentielle si vous distribuez les demandes en fonction des temps de réponse. Des changements soudains dans les performances peuvent indiquer des problèmes, ce qui signifie qu’il s’agit de données historiquement significatives qui doivent également être surveillées.
Il existe une surveillance active (laissez-moi vous envoyer une vraie demande !), une surveillance synthétique (laissez-moi vous envoyer une fausse demande) et une surveillance passive (je vais simplement m'asseoir ici et regarder ce qui arrive à une vraie demande). Chacune d’entre elles présente des avantages et des inconvénients, et toutes constituent des méthodes de surveillance valables. L’essentiel est que le proxy soit capable de déterminer le statut : est-il en marche ? est-il en panne ? a-t-il quitté le bâtiment avec Elvis ?
L'accessibilité, la disponibilité et les performances sont des aspects essentiels à surveiller pour garantir la scalabilité. Vous ne devez pas vous contenter de surveiller : il faut aussi que les proxys d'équilibrage de charge disposent d'informations actualisées sur l'état de chaque ressource vers laquelle ils peuvent diriger une requête.
Si vous considérez la nature des conteneurs et leur association fréquente avec une architecture basée sur les microservices, vous constaterez rapidement que la surveillance devient un véritable cauchemar. Cela tient au fait que le modèle le plus courant d'équilibrage de charge dans les environnements de conteneurs repose sur des proxys forward (et sidecar). Chaque nœud doit donc connaître la santé et le bon fonctionnement de toutes les ressources auxquelles il pourrait devoir adresser une requête. Autrement dit, vous devez surveiller quasiment toutes les ressources.
Vous imaginez que pour une ressource donnée, il n’est pas du tout efficace de mobiliser ses ressources limitées pour répondre à quinze ou vingt proxies avant son état. Dans ce modèle, la surveillance impacte nettement à la fois les performances et la capacité, ce qui complique encore la montée en charge.
La surveillance n’a jamais eu un impact aussi important à l’échelle que celui que nous observons avec les conteneurs.
C’est pourtant crucial – comme nous l’avons souligné – car vous ne voulez pas perdre de temps avec des ressources « sans avenir » si vous pouvez l’éviter.
Les défis liés à la surveillance nécessaire sont l’une des raisons pour lesquelles le service mesh continue de gagner en popularité (et en popularité) en tant que futur modèle d’échelle dans les environnements de conteneurs.
Parce que la surveillance n’est pas facultative, mais elle ne doit pas non plus être un fardeau.