Scénarios d'utilisation du maillage de services

Scénarios d'utilisation du maillage de services

Noter. trad.: L'auteur de cet article (Luc Perkins) est un dĂ©fenseur des dĂ©veloppeurs au sein de l'organisation CNCF, qui hĂ©berge des projets Open Source tels que Linkerd, SMI (Service Mesh Interface) et Kuma (d'ailleurs, vous ĂȘtes-vous Ă©galement demandĂ© pourquoi Istio est pas sur cette liste ? .). Essayant une fois de plus d'amener la communautĂ© DevOps Ă  une meilleure comprĂ©hension du battage mĂ©diatique Ă  la mode appelĂ© « service mesh », il Ă©numĂšre 16 fonctionnalitĂ©s caractĂ©ristiques qu'offrent de telles solutions.

Aujourd'hui maillage de service ― l'un des sujets les plus brĂ»lants dans le domaine du gĂ©nie logiciel (et Ă  juste titre !). Je pense que cette technologie est incroyablement prometteuse et j’aimerais la voir largement adoptĂ©e (quand cela a du sens, bien sĂ»r). Cependant, il reste entourĂ© d’une aura de mystĂšre pour la plupart des gens. En mĂȘme temps, mĂȘme ceux qui bien connu avec lui, il est souvent difficile de formuler ses avantages et de quoi il s'agit exactement (y compris le vĂŽtre). Dans cet article, je vais essayer de corriger la situation en Ă©numĂ©rant divers cas d'utilisation "mailles de services"*.

* Note trad. : ici et plus loin dans l’article, c’est exactement cette traduction (« service mesh ») qui sera utilisĂ©e pour le terme encore nouveau service mesh.

Mais je voudrais d’abord faire quelques commentaires :

  • Je n'ai jamais travaillĂ© avec des maillages de services ni les ai utilisĂ©s en dehors de projets lancĂ©s pour ma propre formation. D'un autre cĂŽtĂ©, c'est moi qui ai Ă©crit un tas de documentation pour le maillage de services interne de Twitter en 2015 (on ne l'appelait mĂȘme pas un « maillage de services » Ă  l'Ă©poque) et j'ai participĂ© au dĂ©veloppement du site Web et de la documentation pour Linker, donc ça veut dire quelque chose.
  • Ma liste est approximative et incomplĂšte. Il se peut qu’il y ait des cas d’utilisation que je ne connais pas, et de nouvelles options apparaĂźtront probablement au fil du temps, Ă  mesure que la technologie se dĂ©veloppera et que sa popularitĂ© augmentera.
  • Dans le mĂȘme temps, toutes les implĂ©mentations de maillage de services existantes ne prennent pas en charge tous les cas d’utilisation rĂ©pertoriĂ©s. Par consĂ©quent, mes dĂ©clarations telles que « le maillage de services peut Â» doivent ĂȘtre lues comme « individuelles, et peut-ĂȘtre que toutes les implĂ©mentations de maillage de services populaires peuvent
 Â».
  • L'ordre des exemples ne fait aucune diffĂ©rence.

Liste restreinte :

  • dĂ©couverte de services ;
  • chiffrement;
  • Authentification et autorisation;
  • l'Ă©quilibrage de charge;
  • coupure de circuit;
  • mise Ă  l'Ă©chelle automatique ;
  • dĂ©ploiements Canary ;
  • dĂ©ploiements bleu-vert ;
  • Bilan de santĂ©;
  • dĂ©lestage;
  • mise en miroir du trafic ;
  • isolation;
  • limitation du dĂ©bit des demandes, tentatives et dĂ©lais d'attente ;
  • tĂ©lĂ©mĂ©trie;
  • audit;
  • visualisation.

1. Découverte des services

TL;DR : connectez-vous Ă  d'autres services sur le rĂ©seau en utilisant des noms simples.

Les services doivent ĂȘtre capables de se « trouver Â» automatiquement en utilisant des noms adĂ©quats â€“ par exemple : service.api.production, pets/staging ou cassandra. Les environnements cloud sont Ă©lastiques et un seul nom peut masquer de nombreuses instances d'un service. Il est clair que dans une telle situation, il est physiquement impossible de coder en dur toutes les adresses IP.

De plus, lorsqu'un service en trouve un autre, il devrait pouvoir envoyer des requĂȘtes Ă  ce service sans craindre qu'elles se retrouvent Ă  l'entrĂ©e de son instance cassĂ©e. En d’autres termes, le maillage de services doit surveiller la santĂ© de toutes les instances de service et maintenir la liste des hĂŽtes aussi Ă  jour que possible.

Chaque maillage de services implĂ©mente le mĂ©canisme de dĂ©couverte de services diffĂ©remment. À l’heure actuelle, la mĂ©thode la plus courante consiste Ă  dĂ©lĂ©guer Ă  des processus externes tels que Kubernetes DNS. Dans le passĂ©, sur Twitter, nous utilisions un systĂšme de noms Ă  cet effet. FinaglĂ©. De plus, la technologie de maillage de services permet l'Ă©mergence de mĂ©canismes de dĂ©nomination personnalisĂ©s (mĂȘme si je n'ai encore vu aucune implĂ©mentation SM avec une telle fonctionnalitĂ©).

2. Cryptage

TL;DR : dĂ©barrassez-vous du trafic non chiffrĂ© entre les services et rendez ce processus automatisĂ© et Ă©volutif.

Il est bon de savoir que les attaquants ne peuvent pas pĂ©nĂ©trer votre rĂ©seau interne. Les pare-feu font un excellent travail Ă  cet Ă©gard. Mais que se passe-t-il si un pirate informatique pĂ©nĂštre Ă  l’intĂ©rieur ? Pourra-t-il faire ce qu’il veut du trafic intra-service ? EspĂ©rons que cela n'arrivera pas aprĂšs tout. Pour Ă©viter ce scĂ©nario, vous devez mettre en Ɠuvre un rĂ©seau Zero Trust dans lequel tout le trafic entre les services est chiffrĂ©. La plupart des rĂ©seaux de services modernes y parviennent grĂące Ă  des Ă©changes mutuels. TLS (TLS mutuel, mTLS). Dans certains cas, mTLS fonctionne dans des nuages ​​​​et des clusters entiers (je pense qu'un jour les communications interplanĂ©taires seront organisĂ©es de la mĂȘme maniĂšre).

Bien sĂ»r, pour le maillage de services mTLS facultatif. Chaque service peut gĂ©rer son propre TLS, mais cela signifie que vous devrez trouver un moyen de gĂ©nĂ©rer des certificats, de les distribuer entre les hĂŽtes de service et d'inclure du code dans l'application qui chargera ces certificats Ă  partir de fichiers. Oui, n’oubliez pas de renouveler ces certificats Ă  intervalles rĂ©guliers. Les maillages de services automatisent mTLS avec des systĂšmes tels que SPIFFE, qui, Ă  leur tour, automatisent le processus de dĂ©livrance et de rotation des certificats.

3. Authentification et autorisation

TL;DR : dĂ©terminez qui est le demandeur et dĂ©finissez ce qu'il est autorisĂ© Ă  faire avant mĂȘme que la demande n'atteigne le service.

Les services veulent souvent savoir qui effectue la demande (authentification), et à l'aide de ces informations, décide que une entité donnée est autorisée à faire (autorisation). Dans ce cas, le pronom « qui » peut cacher :

  1. Autres services. C'est ce qu'on appelle "l'authentification" pair" Par exemple, le service web souhaite accéder au service db. Les maillages de services résolvent généralement de tels problÚmes en utilisant mTLS : les certificats dans ce cas agissent comme l'identifiant nécessaire.
  2. Certains utilisateurs humains. C'est ce qu'on appelle "l'authentification" requĂȘte" Par exemple, l'utilisateur haxor69 veut acheter une nouvelle lampe. Les maillages de services fournissent divers mĂ©canismes, par ex. Jetons Web JSON.

    Beaucoup d'entre nous l'ont fait dans le code d'application. Une demande arrive, on regarde dans le tableau users, recherchez l'utilisateur et comparez le mot de passe, puis vĂ©rifiez la colonne permissions etc. Dans le cas d’un maillage de services, cela se produit avant mĂȘme que la requĂȘte n’atteigne le service.

Une fois que nous avons établi de qui provient la demande, nous devons déterminer ce que cette entité est autorisée à faire. Certains maillages de services vous permettent de définir des politiques de base (sur qui peut faire quoi) sous forme de fichiers YAML ou sur la ligne de commande, tandis que d'autres offrent une intégration avec des frameworks comme Ouvrir l'agent de stratégie. Le but ultime est que vos services acceptent toute demande, en supposant qu'elle provienne d'une source fiable. О cette action est autorisée.

4. Équilibrage de charge

TL;DR : rĂ©partissez la charge entre les instances de service selon un modĂšle spĂ©cifique.

Un « Service Â» au sein d’une section de service se compose trĂšs souvent de nombreuses instances identiques. Par exemple, aujourd'hui le service cache se compose de 5 exemplaires, et demain leur nombre pourrait passer Ă  11. Demandes envoyĂ©es Ă  cache, doivent ĂȘtre distribuĂ©s conformĂ©ment Ă  un objectif prĂ©cis. Par exemple, minimisez la latence ou maximisez la probabilitĂ© d’accĂ©der Ă  une instance fonctionnelle. L'algorithme le plus couramment utilisĂ© est le Round-robin, mais il en existe bien d'autres, par exemple la mĂ©thode pondĂ©rĂ©e. (pondĂ©rĂ©) requĂȘtes (vous pouvez sĂ©lectionner les cibles prĂ©fĂ©rĂ©es), sonnerie (bague) hachage (en utilisant un hachage cohĂ©rent sur les hĂŽtes en amont) ou mĂ©thode de moindre requĂȘte (la prĂ©fĂ©rence est donnĂ©e Ă  l'instance avec le moins de requĂȘtes).

Les équilibreurs classiques ont d'autres fonctions, telles que la mise en cache HTTP et la protection DDoS, mais ils ne sont pas trÚs pertinents pour le trafic est-ouest (c'est-à-dire pour le trafic circulant au sein d'un centre de données - traduction approximative) (portée typique du maillage de services). Bien sûr, il n'est pas nécessaire d'utiliser un maillage de services pour l'équilibrage de charge, mais cela vous permet de définir et de contrÎler des politiques d'équilibrage pour chaque service à partir d'une couche de contrÎle centralisée, éliminant ainsi le besoin d'exécuter et de configurer des équilibreurs de charge distincts dans la pile réseau. .

5. Coupure de circuit

TL;DR : arrĂȘtez le trafic vers le service problĂ©matique et contrĂŽlez les dĂ©gĂąts dans les pires scĂ©narios.

Si, pour une raison quelconque, le service ne peut pas gĂ©rer le trafic, le maillage de services propose plusieurs options pour rĂ©soudre ce problĂšme (d'autres seront abordĂ©es dans les sections appropriĂ©es). La coupure de circuit est l’option la plus sĂ©vĂšre pour dĂ©connecter un service du trafic. Cependant, cela n’a pas de sens en soi : un plan de secours est nĂ©cessaire. Une contre-pression peut ĂȘtre fournie (contre-pression) aux services qui font des requĂȘtes (n'oubliez pas de configurer votre maillage de services pour cela !), ou, par exemple, colorer la page d'Ă©tat en rouge et rediriger les utilisateurs vers une autre version de la page avec une « baleine qui tombe » (« Twitter est vers le bas").

Les maillages de services vous permettent non seulement de dĂ©finir lors de l'arrĂȘt suivra et que cela suivra. Dans ce cas, « quand » peut inclure n'importe quelle combinaison de paramĂštres spĂ©cifiĂ©s : le nombre total de requĂȘtes pour une certaine pĂ©riode, le nombre de connexions parallĂšles, les requĂȘtes en attente, les tentatives actives, etc.

Vous ne voulez probablement pas abuser de la coupure de circuit, mais il est bon de savoir que vous disposez d'un plan de secours en cas d'urgence.

6. Mise à l'échelle automatique

TL;DR : augmentez ou diminuez le nombre d'instances de service en fonction des critĂšres spĂ©cifiĂ©s.

Les maillages de services ne sont pas des planificateurs, donc ils ne le font pas. effectuer vous mettre Ă  l'Ă©chelle. Cependant, ils peuvent fournir des informations sur lesquelles les planificateurs fonderont leurs dĂ©cisions. Étant donnĂ© que les maillages de services ont accĂšs Ă  tout le trafic entre les services, ils disposent d'informations dĂ©taillĂ©es sur ce qui se passe : quels services rencontrent des problĂšmes, quels services sont trĂšs peu chargĂ©s (la capacitĂ© qui leur est allouĂ©e est gaspillĂ©e), etc.

Par exemple, Kubernetes fait Ă©voluer les services en fonction de l'utilisation du processeur et de la mĂ©moire des pods. (voir notre reportage "Mise Ă  l'Ă©chelle automatique et gestion des ressources dans Kubernetes" - environ. trad.), mais si vous dĂ©cidez d'Ă©voluer en fonction d'une autre mĂ©trique (dans notre cas, liĂ©e au trafic), vous aurez besoin d'une mĂ©trique spĂ©ciale. Gestion comme ça montre comment procĂ©der avec EnvoyĂ©, Istio Đž PromĂ©thĂ©e, mais le processus lui-mĂȘme est assez compliquĂ©. Nous aimerions que le maillage de services simplifie cela en nous permettant de simplement dĂ©finir des conditions telles que « augmenter le nombre d'instances de service ». auth, si le nombre de demandes en attente dĂ©passe le seuil en une minute."

7. Déploiements Canary

TL;DR : testez de nouvelles fonctionnalitĂ©s ou versions de service sur un sous-ensemble d'utilisateurs.

Disons que vous dĂ©veloppez un produit SaaS et que vous avez l'intention d'en dĂ©ployer une nouvelle version intĂ©ressante. Vous l'avez testĂ© en mise en scĂšne et cela a trĂšs bien fonctionnĂ©. Mais certaines inquiĂ©tudes subsistent quant Ă  son comportement en conditions rĂ©elles. En d’autres termes, vous devez tester la nouvelle version sur des problĂšmes rĂ©els sans risquer la confiance des utilisateurs. Les dĂ©ploiements Canary sont parfaits pour cela. Ils vous permettent de dĂ©montrer une nouvelle fonctionnalitĂ© Ă  un sous-ensemble d’utilisateurs. Ce sous-ensemble peut ĂȘtre constituĂ© des utilisateurs les plus fidĂšles ou de ceux qui travaillent avec la version gratuite du produit, ou encore d'utilisateurs qui ont exprimĂ© le dĂ©sir de servir de « cobayes ».

Les maillages de services implĂ©mentent cela en vous permettant de spĂ©cifier des critĂšres qui dĂ©terminent qui verra quelle version de l'application et d'acheminer le trafic en consĂ©quence. En revanche, rien ne change pour les services eux-mĂȘmes. La version 1.0 du service estime que toutes les demandes proviennent d'utilisateurs qui devraient le voir, et la version 1.1 pense la mĂȘme chose pour ses utilisateurs. En attendant, vous pouvez modifier le pourcentage de trafic entre l'ancienne et la nouvelle version, en redirigeant un nombre croissant d'utilisateurs vers la nouvelle si elle fonctionne de maniĂšre stable et si vos « cobayes » donnent le feu vert.

8. Déploiements bleu-vert

TL;DR : DĂ©ployez une nouvelle fonctionnalitĂ© intĂ©ressante, mais soyez prĂȘt Ă  tout reprendre immĂ©diatement.

Sens dĂ©ploiements bleu-vert est de dĂ©ployer un nouveau service « bleu », en le lançant en parallĂšle de l'ancien service « vert ». Si tout se passe bien et que le nouveau service fonctionne bien, l'ancien peut ĂȘtre progressivement dĂ©sactivĂ©. (HĂ©las, un jour, ce nouveau service « bleu » rĂ©pĂ©tera le sort du service « vert » et disparaĂźtra...) Les dĂ©ploiements bleu-vert diffĂšrent des dĂ©ploiements canari dans le sens oĂč la nouvelle fonction couvre tout Ă  la fois utilisateurs (pas partie); Le but ici est de disposer d’une « sphĂšre de sĂ©curitĂ© » prĂȘte au cas oĂč quelque chose tournerait mal.

Les maillages de services offrent un moyen trĂšs pratique de tester un service « bleu » et de passer instantanĂ©ment Ă  un service « vert » fonctionnel en cas de problĂšme. Sans parler du fait qu'en chemin, ils fournissent de nombreuses informations (voir « TĂ©lĂ©mĂ©trie » ci-dessous) sur le travail du « bleu », ce qui permet de comprendre s'il est prĂȘt Ă  fonctionner pleinement.

Noter. trad.: Vous pouvez en savoir plus sur les différentes stratégies de déploiement dans Kubernetes (y compris les stratégies Canary, Blue/Green et autres mentionnées) dans cet article.

9. Bilan de santé

TL;DR : gardez une trace des instances de service qui sont fonctionnelles et rĂ©pondez Ă  celles qui ne le sont plus.

Bilan de santĂ© (Bilan de santĂ©) aide Ă  dĂ©cider si les instances de service sont prĂȘtes Ă  accepter et Ă  traiter le trafic. Par exemple, dans le cas des services HTTP, une vĂ©rification de l'Ă©tat peut ressembler Ă  une requĂȘte GET adressĂ©e au point de terminaison. /health... RĂ©ponse 200 OK signifiera que l'instance est saine, toute autre signifie qu'elle n'est pas prĂȘte Ă  recevoir du trafic. Les maillages de services permettent de prĂ©ciser Ă  la fois la maniĂšre dont les fonctionnalitĂ©s seront vĂ©rifiĂ©es et la frĂ©quence Ă  laquelle ce contrĂŽle sera effectuĂ©. Ces informations peuvent ensuite ĂȘtre utilisĂ©es Ă  d'autres fins, par exemple pour l'Ă©quilibrage de charge et la coupure de circuit.

Ainsi, la vĂ©rification de l’état n’est pas un cas d’utilisation autonome, mais est gĂ©nĂ©ralement utilisĂ©e pour atteindre d’autres objectifs. De plus, en fonction des rĂ©sultats des contrĂŽles d'Ă©tat, des actions externes aux autres cibles du maillage de services peuvent ĂȘtre nĂ©cessaires : par exemple, mettre Ă  jour la page d'Ă©tat, crĂ©er un ticket sur GitHub ou remplir un ticket JIRA. Et le service mesh offre un mĂ©canisme pratique pour automatiser tout cela.

10. Délestage

TL;DR : rediriger le trafic en rĂ©ponse Ă  un pic temporaire d'utilisation.

Si un certain service est surchargĂ© de trafic, vous pouvez rediriger temporairement une partie de ce trafic vers un autre emplacement (c'est-Ă -dire « vider », « transfĂ©rer »). (hangar) lui lĂ ). Par exemple, vers un service de sauvegarde ou un centre de donnĂ©es, ou vers un Pulsar sujet. En consĂ©quence, le service continuera Ă  traiter certaines demandes au lieu de planter et d’arrĂȘter complĂštement de tout traiter. Le dĂ©lestage est prĂ©fĂ©rable Ă  la coupure du circuit, mais il reste nĂ©anmoins dĂ©conseillĂ© d’en abuser. Cela permet d’éviter les pannes en cascade qui provoquent le blocage des services en aval.

11. Parallélisation/miroir du trafic

TL;DR : envoyez une demande Ă  plusieurs endroits Ă  la fois.

Parfois, il est nĂ©cessaire d'envoyer une demande (ou une certaine sĂ©lection de demandes) Ă  plusieurs services Ă  la fois. Un exemple typique est l’envoi d’une partie du trafic de production vers un service de transfert. Le serveur Web de production principal envoie une requĂȘte au service en aval products.production et seulement Ă  lui. Et le maillage de services copie intelligemment cette requĂȘte et l'envoie Ă  products.staging, dont le serveur Web n'a mĂȘme pas connaissance.

Un autre cas d'utilisation du maillage de services connexe qui peut ĂȘtre implĂ©mentĂ© en plus de la parallĂ©lisation du trafic est les tests de rĂ©gression. Cela implique d'envoyer les mĂȘmes requĂȘtes Ă  diffĂ©rentes versions du service et de vĂ©rifier si toutes les versions se comportent de la mĂȘme maniĂšre. Je n'ai pas encore rencontrĂ© d'implĂ©mentation de maillage de services avec un systĂšme de test de rĂ©gression intĂ©grĂ© comme DiffĂ©rent, mais l'idĂ©e elle-mĂȘme semble prometteuse.

12. Isolation

TL;DR : divisez votre maillage de services en mini-rĂ©seaux.

Aussi connu sous le nom segmentationL'isolement est l'art de diviser un maillage de services en segments logiquement distincts qui ne connaissent rien les uns des autres. L'isolement, c'est un peu comme crĂ©er des rĂ©seaux privĂ©s virtuels. La diffĂ©rence fondamentale est que vous pouvez toujours profiter de tous les avantages d’un maillage de services (comme la dĂ©couverte de services), mais avec une sĂ©curitĂ© accrue. Par exemple, si un attaquant parvient Ă  pĂ©nĂ©trer dans un service sur un sous-rĂ©seau, il ne pourra pas voir quels services s'exĂ©cutent sur d'autres sous-rĂ©seaux ni intercepter leur trafic.

De plus, les avantages peuvent Ă©galement ĂȘtre organisationnels. Vous souhaiterez peut-ĂȘtre crĂ©er un sous-rĂ©seau pour vos services en fonction de la structure de votre entreprise et soulager les dĂ©veloppeurs de la charge cognitive liĂ©e Ă  la nĂ©cessitĂ© de garder Ă  l'esprit l'ensemble du maillage de services.

13. Demander une limitation de débit, des tentatives et des délais d'attente

TL;DR : Vous n'avez plus besoin d'inclure les tĂąches essentielles de gestion des demandes dans votre base de code.

Toutes ces choses pourraient ĂȘtre considĂ©rĂ©es comme des cas d'utilisation distincts, mais j'ai dĂ©cidĂ© de les combiner en raison d'une caractĂ©ristique commune : elles prennent en charge les tĂąches de gestion du cycle de vie des requĂȘtes gĂ©nĂ©ralement gĂ©rĂ©es par les bibliothĂšques d'applications. Si vous dĂ©veloppez un serveur Web dans Ruby on Rails (non intĂ©grĂ© Ă  un maillage de services) qui envoie des requĂȘtes aux services backend via gRPC, l'application devra dĂ©cider quoi faire si N requĂȘtes Ă©chouent. Vous devrez Ă©galement connaĂźtre la quantitĂ© de trafic que ces services seront capables de traiter et de coder en dur ces paramĂštres Ă  l'aide d'une bibliothĂšque spĂ©ciale. De plus, l’application devra dĂ©cider quand il est temps d’abandonner et de laisser la demande s’échouer (en fonction du dĂ©lai d’attente). Et pour modifier l'un des paramĂštres ci-dessus, le serveur Web devra ĂȘtre arrĂȘtĂ©, reconfigurĂ© et redĂ©marrĂ©.

DĂ©charger ces tĂąches vers un maillage de services signifie non seulement que les dĂ©veloppeurs de services n'auront pas Ă  y penser, mais aussi qu'elles pourront ĂȘtre visualisĂ©es de maniĂšre plus globale. Si une chaĂźne complexe de services est utilisĂ©e, disons A -> B -> C -> D -> E, l'ensemble du cycle de vie de la demande doit ĂȘtre pris en compte. Si la tĂąche consiste Ă  prolonger les dĂ©lais d'attente dans le service C, il est logique de le faire en une seule fois, et non en partie : en mettant Ă  jour le code du service et en attendant que la pull request soit acceptĂ©e et que le systĂšme CI dĂ©ploie le service mis Ă  jour.

14. Télémétrie

TL;DR : Collectez toutes les informations nĂ©cessaires (et pas tout Ă  fait) auprĂšs des services.

La tĂ©lĂ©mĂ©trie est un terme gĂ©nĂ©ral qui inclut les mĂ©triques, le traçage distribuĂ© et les journaux. Les maillages de services offrent des mĂ©canismes de collecte et de traitement des trois types de donnĂ©es. C’est lĂ  que les choses deviennent un peu floues car le nombre d’options possibles est trop important. Pour collecter des mĂ©triques, il existe PromĂ©thĂ©e et d'autres outils qui peuvent ĂȘtre utilisĂ©s pour collecter des journaux couramment, Loki, vecteur etc (par exemple ClickHouse avec notre chalet pour les K8 - env. trad.), pour le traçage distribuĂ©, il y a Jaeger et ainsi de suite. Chaque maillage de services peut prendre en charge certains outils et pas d'autres. Il sera intĂ©ressant de voir si le projet peut TĂ©lĂ©mĂ©trie ouverte permettent une certaine convergence.

Dans ce cas, l’avantage de la technologie de maillage de services est que les conteneurs side-car peuvent, en principe, collecter toutes les donnĂ©es ci-dessus Ă  partir de leurs services. En d’autres termes, vous disposez d’un systĂšme unique de collecte de tĂ©lĂ©mĂ©trie, et le maillage de services peut traiter toutes ces informations de diffĂ©rentes maniĂšres. Par exemple:

  • journaux de queue d'un certain service dans la CLI ;
  • surveiller le volume des demandes Ă  partir du tableau de bord du maillage de services ;
  • collectez les traces distribuĂ©es et transmettez-les Ă  un systĂšme comme Jaeger.

Attention, jugement subjectif : D'une maniĂšre gĂ©nĂ©rale, la tĂ©lĂ©mĂ©trie est un domaine dans lequel de fortes interfĂ©rences provenant du maillage de services ne sont pas souhaitables. Collecter des informations de base et suivre Ă  la volĂ©e certaines mesures clĂ©s comme le taux de rĂ©ussite des requĂȘtes et la latence, c'est bien, mais espĂ©rons que nous ne verrons pas Ă©merger des piles Frankenstein qui tentent de remplacer des systĂšmes spĂ©cialisĂ©s, dont certains ont dĂ©jĂ  fait leurs preuves et sont bien Ă©tudiĂ©s. .

15. Audit

TL;DR : Ceux qui oublient les leçons de l’histoire sont condamnĂ©s Ă  les rĂ©pĂ©ter.

L'audit est l'art d'observer les événements importants dans un systÚme. Dans le cas d'un maillage de services, cela peut impliquer de suivre qui a fait des demandes à des points de terminaison spécifiques pour des services spécifiques, ou combien de fois un événement lié à la sécurité s'est produit au cours du mois dernier.

Il est clair que l’audit est trĂšs Ă©troitement liĂ© Ă  la tĂ©lĂ©mĂ©trie. La diffĂ©rence est que la tĂ©lĂ©mĂ©trie est gĂ©nĂ©ralement associĂ©e Ă  des Ă©lĂ©ments tels que la productivitĂ© et l'intĂ©gritĂ© technique, tandis que l'audit peut concerner des questions juridiques et autres qui dĂ©passent la sphĂšre strictement technique (par exemple, le respect du RGPD - le rĂšglement gĂ©nĂ©ral de l'UE sur la protection des donnĂ©es).

16. Visualisation

TL;DR : Vive React.js - une source inépuisable d'interfaces sophistiquées.

Il existe peut-ĂȘtre un meilleur terme, mais je ne le connais pas. Je veux simplement dire une reprĂ©sentation graphique d'un maillage de services ou de certains de ses composants. Ces visualisations peuvent inclure des indicateurs tels que les latences moyennes, les informations de configuration du side-car, les rĂ©sultats du contrĂŽle de santĂ© et les alertes.

Travailler dans un environnement orientĂ© service implique une charge cognitive beaucoup plus Ă©levĂ©e que celle de Sa MajestĂ© le Monolithe. Il faut donc Ă  tout prix rĂ©duire la pression cognitive. Une interface graphique simple pour un service maillĂ© avec la possibilitĂ© de cliquer sur un bouton et d'obtenir le rĂ©sultat souhaitĂ© pourrait ĂȘtre dĂ©cisive pour la croissance de la popularitĂ© de cette technologie.

N'étaient pas inclus dans la liste

Au départ, j'avais l'intention d'inclure quelques cas d'utilisation supplémentaires dans la liste, mais j'ai ensuite décidé de ne pas le faire. Les voici, ainsi que les raisons de ma décision :

  • Centre de donnĂ©es multi. À mon avis, il ne s'agit pas tant d'un cas d'utilisation que d'un domaine d'application Ă©troit et spĂ©cifique des maillages de services ou d'un ensemble de fonctions telles que la dĂ©couverte de services.
  • EntrĂ©e et sortie. Il s'agit d'un domaine connexe, mais je me suis limitĂ© (peut-ĂȘtre artificiellement) au cas d'utilisation du "trafic est-ouest". Les entrĂ©es et sorties mĂ©ritent un article sĂ©parĂ©.

Conclusion

C'est tout pour le moment! Encore une fois, cette liste est trÚs arbitraire et probablement incomplÚte. Si vous pensez que j'ai raté quelque chose ou que je me suis trompé, contactez-moi sur Twitter (@luckerkins). Merci de respecter les rÚgles de décence.

PS du traducteur

L’illustration du titre de l’article est basĂ©e sur une image de l’article «Qu’est-ce qu’un Service Mesh (et quand en utiliser un) ?" (par Gregory MacKinnon). Il montre comment certaines fonctionnalitĂ©s des applications (en vert) ont Ă©tĂ© dĂ©placĂ©es vers un maillage de services qui assure les interconnexions entre elles (en bleu).

A lire aussi sur notre blog :

Source: habr.com

Ajouter un commentaire