
Note de traduction.: cet article est Ă©crit par Luc Perkins â dĂ©veloppeur advocate au sein de l'organisation CNCF, qui est le foyer de projets Open Source tels que Linkerd, SMI (Service Mesh Interface) et Kuma (d'ailleurs, vous vous ĂȘtes demandĂ© pourquoi Istio n'est pas dans cette liste ?). En essayant une fois de plus d'apporter une meilleure comprĂ©hension dans la communautĂ© DevOps autour de la tendance actuelle appelĂ©e « service mesh », il prĂ©sente 16 caractĂ©ristiques distinctes proposĂ©es par de telles solutions.
Aujourd'hui â l'un des sujets les plus chauds dans le domaine de l'ingĂ©nierie logicielle (et Ă juste titre !). Je trouve cette technologie incroyablement prometteuse et je rĂȘve d'assister Ă sa large adoption (bien sĂ»r, quand cela a du sens). Cependant, elle reste entourĂ©e d'un halo de mystĂšre pour la plupart des gens. MĂȘme ceux qui sont bien familiarisĂ©s avec cela ont souvent du mal Ă formuler ses avantages et ce qu'elle reprĂ©sente vraiment (y compris votre humble serviteur). Dans cet article, je vais essayer d'Ă©claircir les choses en Ă©numĂ©rant divers scĂ©narios d'utilisation des « service meshes »*.
* Note du traducteur : ici et dans la suite de l'article, ce terme sera traduit par « service mesh » pour ce terme encore nouveau.
Mais d'abord, je voudrais faire quelques remarques :
- Je n'ai jamais travaillĂ© avec des service meshes et ne les ai utilisĂ©s que pour des projets entrepris pour mon propre apprentissage. D'autre part, c'est moi qui ai rĂ©digĂ© une quantitĂ© de documentation pour le service mesh interne de l'entreprise Twitter en 2015 (Ă l'Ă©poque, cela ne s'appelait mĂȘme pas encore « service mesh ») et qui ai participĂ© Ă l'Ă©laboration du site et de la documentation pour , donc cela signifie quelque chose.
- Ma liste est indicative et incomplÚte. Il peut exister des scénarios d'utilisation inconnus pour moi, et de nouveaux cas émergeront sans aucun doute au fur et à mesure que la technologie évolue et que sa popularité grandit.
- Cependant, il ne faut pas penser que chaque implĂ©mentation existante de service mesh prend en charge tous les cas d'utilisation Ă©numĂ©rĂ©s. Par consĂ©quent, mes phrases comme « un service mesh peut⊠» doivent ĂȘtre lues comme « certaines, voire toutes les implĂ©mentations populaires de service mesh peuvent⊠».
- L'ordre des exemples n'a pas d'importance.
Liste succincte :
- découverte de services ;
- cryptage ;
- authentification et autorisation ;
- répartition de charge ;
- circuit breaking ;
- autoscaling ;
- déploiements canari ;
- déploiements bleu-vert ;
- vérification de la santé ;
- load shedding ;
- miroir du trafic;
- isolement;
- limitation de la frĂ©quence des requĂȘtes, tentatives rĂ©pĂ©tĂ©es et dĂ©lais d'attente;
- télémetrie;
- audit;
- visualisation.
1. Détection des services
TL;DR: Connectez-vous à d'autres services sur le réseau avec des noms simples.
Les services doivent ĂȘtre capables de se « trouver » automatiquement les uns les autres avec des noms appropriĂ©s â par exemple, service.api.production, pets/staging ou cassandra. Les environnements cloud se distinguent par leur Ă©lasticitĂ©, et un seul nom peut masquer de multiples instances de service. Il est Ă©vident que, dans cette situation, il est physiquement impossible de coder en dur toutes les adresses IP.
De plus, lorsqu'un service trouve un autre, il doit ĂȘtre en mesure d'envoyer des requĂȘtes Ă ce service, sans craindre qu'elles aboutissent Ă une instance non fonctionnelle. En d'autres termes, la service mesh doit surveiller l'Ă©tat de fonctionnement de toutes les instances de services et maintenir la liste des hĂŽtes Ă jour.
Chaque service mesh implémente le mécanisme de détection des services à sa maniÚre. Actuellement, la méthode la plus répandue consiste à déléguer à des processus externes tels que le DNS de Kubernetes. Par le passé, chez Twitter, nous utilisions pour ces objectifs un systÚme de noms . De plus, la technologie service mesh permet l'émergence de mécanismes de nommage personnalisés (bien que je n'aie pas encore rencontré d'implémentation SM avec cette fonctionnalité).
2. Chiffrement
TL;DR: Ăliminez le trafic non chiffrĂ© entre les services et laissez ce processus ĂȘtre automatisĂ© et Ă©volutif.
Il est rassurant de savoir que les intrus ne peuvent pas pĂ©nĂ©trer votre rĂ©seau interne. Les pare-feu font cela trĂšs bien. Mais que se passe-t-il si un hacker rĂ©ussit Ă s'introduire ? Pourra-t-il faire tout ce qu'il veut avec le trafic inter-services ? EspĂ©rons que cela ne se produise pas. Pour Ă©viter un tel scĂ©nario, il est nĂ©cessaire de mettre en Ćuvre un rĂ©seau de confiance zĂ©ro (zero-trust), oĂč tout le trafic entre les services est chiffrĂ©. La plupart des rĂ©seaux de services modernes y parviennent grĂące Ă l'utilisation de l'authentification mutuelle (mutual TLS, mTLS). Dans certains cas, le mTLS fonctionne dans des clouds et des clusters entiers (je pense que mĂȘme les communications interplanĂ©taires seront un jour organisĂ©es de la mĂȘme maniĂšre).
Bien sûr, pour le mTLS, la service mesh n'est pas obligatoireChaque service peut gérer son propre TLS, mais cela signifie qu'il faudra trouver un moyen de générer des certificats, de les distribuer aux hÎtes du service et d'inclure dans l'application un code qui chargera ces certificats à partir de fichiers. N'oubliez pas non plus de mettre à jour ces certificats à intervalles réguliers. Les maillages de services automatisent le mTLS avec des systÚmes comme , qui, à leur tour, automatisent le processus d'émission et de rotation des certificats.
3. Authentification et autorisation
TL;DR: Identifiez qui est l'initiateur de la demande et déterminez ce qu'il est autorisé à faire avant que la demande n'atteigne le service.
Les services veulent souvent savoir, qui effectue la demande (authentification), et, en utilisant cette information, décident ce que ce sujet est autorisé à faire (autorisation). Dans ce cas, le pronom « qui » peut désigner :
- D'autres services. Cela s'appelle l'« authentification peer». Par exemple, un service
webveut accéder au servicedb. Les maillages de services résolvent généralement de tels problÚmes via le mTLS : les certificats jouent alors le rÎle d'identifiant nécessaire. - Certains utilisateurs humains. Cela s'appelle l'« authentification de la demande». Par exemple, un utilisateur
haxor69veut acheter une nouvelle lampe. Les maillages de services fournissent divers mécanismes, par exemple, .Beaucoup d'entre nous ont fait cela dans le code de l'application. Une demande arrive, nous consultons la table
users, trouvons l'utilisateur et comparons le mot de passe, puis vĂ©rifions la colonnepermissionsetc. Dans le cas du maillage de services, cela se produit avant mĂȘme que la demande n'atteigne le service.
AprÚs avoir identifié l'origine de la demande, il faut déterminer ce que ce sujet est autorisé à faire. Certains maillages de services permettent de définir des politiques de base (qui peut faire quoi) sous forme de fichiers YAML ou dans la ligne de commande, tandis que d'autres proposent une intégration avec des frameworks comme . L'objectif final est de s'assurer que vos services acceptent toutes les demandes, en supposant qu'elles proviennent d'une source fiable et cette action est autorisée.
4. Répartition de la charge
TL;DR: Distribuez la charge entre les instances de service selon un modÚle précis.
Le « service » au sein d'une secte de services se compose trĂšs souvent de nombreux exemples identiques. Par exemple, aujourd'hui, le service cache se compose de 5 copies, et demain, leur nombre peut passer Ă 11. Les requĂȘtes envoyĂ©es vers cachedoivent ĂȘtre rĂ©parties en fonction d'un objectif spĂ©cifique. Par exemple, minimiser la latence ou maximiser la probabilitĂ© d'atteindre un exemplaire fonctionnel. L'algorithme d'Ă©quilibrage de charge le plus couramment utilisĂ© est celui du round-robin, mais il en existe de nombreux autres â comme la mĂ©thode des requĂȘtes pondĂ©rĂ©es, (weighted) l'hachage en anneau (ring) ou la mĂ©thode du moindre nombre de requĂȘtes (la prĂ©fĂ©rence est donnĂ©e Ă l'exemplaire ayant le moins de requĂȘtes).
Les Ă©quilibreurs de charge classiques ont Ă©galement d'autres fonctions, telles que la mise en cache HTTP et la protection contre les DDoS, mais elles ne sont pas trĂšs pertinentes pour le trafic de type est-ouest (c'est-Ă -dire pour le trafic circulant au sein du centre de donnĂ©es â note de l'Ă©diteur) (domaine d'application typique des service meshes). Bien sĂ»r, il n'est pas obligatoire d'utiliser un service mesh pour l'Ă©quilibrage de charge, cependant, il permet de dĂ©finir et de contrĂŽler les politiques d'Ă©quilibrage pour chaque service Ă partir d'une couche de gestion centralisĂ©e, supprimant ainsi la nĂ©cessitĂ© de dĂ©ployer et de configurer des Ă©quilibreurs de charge sĂ©parĂ©s dans la pile rĂ©seau.
5. Coupure de circuit
TL;DR : ArrĂȘtez le trafic vers un service problĂ©matique et contrĂŽlez les dommages dans les pires scĂ©narios.
Si pour une raison quelconque le service ne peut pas gĂ©rer le trafic, le service mesh offre 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 stricte pour dĂ©connecter un service du trafic. Cependant, cela n'a de sens que si un plan de secours est prĂ©vu. Il pourrait y avoir une contre-pression () sur les services effectuant des requĂȘtes (n'oubliez pas de configurer votre service mesh pour cela !), ou, par exemple, teinter la page de statut en rouge et rediriger les utilisateurs vers une autre page avec un « grand dauphin tombant » (« Twitter is down »).
Les service meshes permettent non seulement de dĂ©terminer quand la coupure aura lieu et ce que Cela sera suivi. Dans ce cas, «quand» peut inclure n'importe quelle combinaison de paramĂštres spĂ©cifiĂ©s : le nombre total de requĂȘtes sur une certaine pĂ©riode, le nombre de connexions parallĂšles, les requĂȘtes en attente, les tentatives de rĂ©pĂ©tition actives, etc.
Vous ne voudriez probablement pas abuser du circuit breaking, mais c'est agréable de savoir qu'il y a un plan de secours en cas de besoin.
6. Auto-scaling
TL;DR : Augmentez ou réduisez le nombre d'instances du service en fonction des critÚres spécifiés.
Les service meshes ne sont pas des planificateurs, donc ils ne réalisent pas le scaling de maniÚre autonome. Cependant, ils peuvent fournir des informations sur lesquelles les planificateurs prendront des décisions. Comme les service meshes ont accÚs à tout le trafic entre les services, ils disposent d'une vaste information sur ce qui se passe : quels services rencontrent des problÚmes, lesquels sont sous-utilisés (les ressources qui leur sont allouées sont gaspillées), etc.
Par exemple, Kubernetes redimensionne les services en fonction de l'utilisation du CPU et de la mĂ©moire par les pods (voir notre rapport «» â note du trad.), mais si vous dĂ©cidez de procĂ©der Ă une mise Ă l'Ă©chelle en fonction de tout autre indicateur (dans notre cas - liĂ© au trafic), une mĂ©trique spĂ©ciale sera nĂ©cessaire. Un guide montre comment le faire avec , et , mais le processus est assez complexe. Nous aimerions que le service mesh le simplifie, permettant simplement de dĂ©finir des conditions telles que «augmentez le nombre d'instances du service auth, si le nombre de requĂȘtes en attente dĂ©passe le seuil pendant une minute».
7. Déploiements canary
TL;DR : Testez de nouvelles fonctionnalités ou versions du service sur un sous-ensemble d'utilisateurs.
Disons que vous dĂ©veloppez un produit SaaS et que vous prĂ©voyez de lancer sa nouvelle version amĂ©liorĂ©e. Vous l'avez testĂ©e en staging, et tout s'est bien passĂ©. Cependant, vous avez quelques inquiĂ©tudes concernant son comportement en conditions rĂ©elles. Autrement dit, il est nĂ©cessaire de tester la nouvelle version sur des cas rĂ©els, sans risquer la confiance des utilisateurs. Les dĂ©ploiements canari sont parfaits pour cela. Ils permettent de montrer une nouvelle fonction Ă un sous-ensemble de utilisateurs. Ce sous-ensemble peut ĂȘtre constituĂ© des utilisateurs les plus fidĂšles, de ceux qui utilisent une version gratuite du produit, ou de ceux qui se sont portĂ©s volontaires pour ĂȘtre des « cobayes ».
Les meshes de service mettent cela en Ćuvre en permettant de spĂ©cifier des critĂšres qui dĂ©terminent qui et quelle version de l'application verra, en acheminant le trafic en consĂ©quence. Pour les services eux-mĂȘmes, rien ne change. La version 1.0 du service suppose que toutes les demandes proviennent dâutilisateurs qui doivent voir cette version, tandis que la version 1.1 fait de mĂȘme pour ses propres utilisateurs. Pendant ce temps, vous pouvez ajuster le pourcentage de trafic entre lâancienne et la nouvelle version, redirigeant un nombre croissant d'utilisateurs vers la nouvelle si elle fonctionne de maniĂšre stable et que vos « cobayes » donnent leur approbation.
8. Déploiements bleu-vert
TL;DR : DĂ©ployez une nouvelle fonction impressionnante, mais soyez prĂȘt Ă revenir immĂ©diatement en arriĂšre.
Sens est de dĂ©ployer un nouveau service « bleu » en parallĂšle avec lâancien « vert ». Si tout se passe bien et que le nouveau service fonctionne correctement, lâancien pourra ĂȘtre progressivement dĂ©sactivĂ©. (Malheureusement, un jour, ce nouveau service « bleu » connaĂźtra le sort du « vert » et disparaĂźtra...) Les dĂ©ploiements bleu-vert diffĂšrent des dĂ©ploiements canari en ce sens que la nouvelle fonction couvre tous les utilisateurs (et non une partie); l'idĂ©e ici est d'avoir un « refuge » prĂȘt en cas de problĂšme.
Les maillages de services offrent un moyen trĂšs pratique de tester un service « bleu » et de basculer instantanĂ©ment vers un « vert » opĂ©rationnel en cas de problĂšmes. Sans parler du fait qu'ils fournissent en parallĂšle une multitude d'informations (voir la section « TĂ©lĂ©mĂ©trie » ci-dessous) sur le fonctionnement du « bleu », ce qui aide Ă comprendre s'il est prĂȘt pour une exploitation complĂšte.
Note de traduction.: Vous pouvez en savoir plus sur les différentes stratégies de déploiement dans Kubernetes (y compris les mentions canari, blue/green et d'autres) dans .
9. Vérification de la santé
TL;DR : Surveillez quels instances de services sont opĂ©rationnels et rĂ©agissez Ă celles qui cessent de l'ĂȘtre.
VĂ©rification de la santĂ© (health check) aide Ă dĂ©cider si les instances du service peuvent accepter et traiter le trafic. Par exemple, pour les services HTTP, la vĂ©rification de la santĂ© peut ressembler Ă une requĂȘte GET vers un endpoint /health. Une rĂ©ponse 200 OK signifie que l'instance est en bonne santĂ©, toute autre rĂ©ponse indique qu'elle n'est pas prĂȘte Ă accepter du trafic. Les maillages de services permettent de spĂ©cifier la mĂ©thode de vĂ©rification de la santĂ© ainsi que la frĂ©quence Ă laquelle cette vĂ©rification sera effectuĂ©e. Ces informations peuvent ensuite ĂȘtre utilisĂ©es Ă d'autres fins, comme par exemple pour l'Ă©quilibrage de charge et le circuit breaking.
Ainsi, la vĂ©rification de la santĂ© ne constitue pas un scĂ©nario d'utilisation autonome, mais est gĂ©nĂ©ralement utilisĂ©e pour atteindre d'autres objectifs. De plus, en fonction des rĂ©sultats des vĂ©rifications de santĂ©, des actions externes (vis-Ă -vis des autres objectifs des maillages de services) peuvent ĂȘtre nĂ©cessaires : par exemple, mettre Ă jour la page d'Ă©tat, crĂ©er une issue sur GitHub ou remplir un ticket JIRA. Et le maillage de services propose un mĂ©canisme pratique pour automatiser tout cela.
10. Déviation de charge (load shedding)
TL;DR : Redirigez le trafic en réponse à un pic temporaire d'utilisation.
Si un service est surchargĂ© par le trafic, vous pouvez temporairement rediriger une partie de ce trafic ailleurs (c'est-Ă -dire « lĂącher », « dĂ©verser » (shed) vers un autre endroit). Par exemple, vers un service de secours ou un centre de donnĂ©es, ou vers un permanent En consĂ©quence, le service continuera Ă traiter une partie des requĂȘtes au lieu de tomber en panne et de cesser complĂštement de traiter toutes les requĂȘtes. Le rĂ©tablissement de la charge est prĂ©fĂ©rable Ă la rupture de la chaĂźne, mais il est tout de mĂȘme indĂ©sirable d'en abuser. Cela permet de prĂ©venir les pannes en cascade, qui entraĂźnent l'Ă©chec des services en aval.
11. Parallélisation/Miroitage du trafic
TL;DR : Envoyez une requĂȘte Ă plusieurs endroits en mĂȘme temps.
Il arrive parfois qu'il soit nĂ©cessaire d'envoyer une requĂȘte (ou un certain Ă©chantillon de requĂȘtes) Ă plusieurs services en mĂȘme temps. Un exemple typique est d'envoyer une partie du trafic de production vers un service de staging. Le serveur web principal de la production envoie une requĂȘte au service en aval products.production et uniquement Ă celui-ci. Le service mesh copie intelligemment cette requĂȘte et l'envoie vers products.staging, dont le serveur web n'a mĂȘme pas connaissance.
Un autre scĂ©nario d'utilisation liĂ© au service mesh qui peut ĂȘtre implĂ©mentĂ© par-dessus la parallĂ©lisation du trafic est le . Il consiste Ă envoyer les mĂȘmes requĂȘtes Ă diffĂ©rentes versions du service et Ă vĂ©rifier si toutes les versions se comportent de la mĂȘme maniĂšre. Je n'ai pas encore rencontrĂ© d'implĂ©mentation de service mesh avec un systĂšme intĂ©grĂ© de test de rĂ©gression comme , mais l'idĂ©e elle-mĂȘme semble prometteuse.
12. Isolement
TL;DR : Divisez votre service mesh en mini-réseaux.
Ăgalement connue sous le nom de segmentation, l'isolement est l'art de diviser le service mesh en segments logiquement distincts, qui ne savent rien les uns des autres. L'isolement ressemble un peu Ă la crĂ©ation de rĂ©seaux privĂ©s virtuels. La diffĂ©rence fondamentale est que vous pouvez toujours bĂ©nĂ©ficier de tous les avantages du service mesh (comme la dĂ©couverte des services), mais avec une sĂ©curitĂ© supplĂ©mentaire. Par exemple, si un attaquant parvient Ă pĂ©nĂ©trer dans un service dans l'une des sous-rĂ©seaux, il ne pourra pas voir quels services sont en cours d'exĂ©cution dans d'autres sous-rĂ©seaux, ni intercepter leur trafic.
De plus, les avantages peuvent ĂȘtre organisationnels. Vous pourriez avoir envie de diviser les services en sous-rĂ©seaux en fonction de la structure de l'entreprise et de libĂ©rer les dĂ©veloppeurs du poids cognitif causĂ© par la nĂ©cessitĂ© de garder en tĂȘte l'ensemble du service mesh.
13. Limitation du taux de requĂȘtes, nouvelles tentatives et dĂ©lais d'attente
TL;DR : Plus besoin d'inclure dans la base de code les tĂąches urgentes de gestion des requĂȘtes.
Toutes ces choses pourraient ĂȘtre considĂ©rĂ©es comme des cas d'utilisation distincts, mais j'ai dĂ©cidĂ© de les regrouper 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 en Ruby on Rails (pas intĂ©grĂ© avec une service mesh), qui fait des requĂȘtes aux services backend via , l'application devra elle-mĂȘme dĂ©cider quoi faire si N requĂȘtes Ă©chouent. Il faudra Ă©galement dĂ©terminer quel volume de trafic ces services pourront traiter et 'hardcoder' ces paramĂštres Ă l'aide d'une bibliothĂšque spĂ©cifique. De plus, l'application devra dĂ©cider quand il sera temps d'abandonner et de laisser expirer la requĂȘte (en cas de timeout). Et pour modifier l'un des paramĂštres mentionnĂ©s ci-dessus, le serveur web devra ĂȘtre arrĂȘtĂ©, reconfigurĂ© et redĂ©marrĂ©.
Le transfert de ces tĂąches Ă la service mesh signifie non seulement que les dĂ©veloppeurs de services n'auront plus Ă y penser, mais aussi qu'elles pourront ĂȘtre considĂ©rĂ©es de maniĂšre plus globale. Si une chaĂźne complexe de services est utilisĂ©e, par exemple A â B â C â D â E, il est nĂ©cessaire de prendre en compte tout le cycle de vie de la requĂȘte. Si l'objectif est d'augmenter les timeouts dans le service C, il est logique de le faire en une seule fois, et non en plusieurs Ă©tapes : en mettant Ă jour le code du service et en attendant que la demande de tirage 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) des services.
La tĂ©lĂ©mĂ©trie est un terme gĂ©nĂ©ral englobant les mĂ©triques, le traçage distribuĂ© et les logs. Les service meshes offrent des mĂ©canismes pour collecter et traiter ces trois types de donnĂ©es. Ici, cela devient un peu flou, car le nombre d'options possibles est trop grand. Pour collecter des mĂ©triques, il y a et d'autres outils, pour collecter les logs, on peut utiliser , , et autres. (par exemple, ClickHouse avec notre pour K8s â note du traducteur), pour le traçage distribuĂ©, il existe et autres. Chaque service mesh peut prendre en charge certains outils et ne pas en prendre d'autres. Il sera intĂ©ressant de voir si le projet peut offrir une certaine convergence.
Dans ce cas, l'avantage de la technologie service mesh est que les conteneurs sidecar peuvent, en principe, collecter toutes les données mentionnées ci-dessus à partir de leurs services. Autrement dit, vous disposez d'un systÚme unique pour collecter la télémétrie, et le service mesh peut traiter toutes ces informations de diverses maniÚres. Par exemple :
- suivre les logs d'un certain service dans le CLI;
- surveiller le volume des requĂȘtes depuis le tableau de bord du service mesh;
- collecter des traces distribuées et les rediriger vers un systÚme comme Jaeger.
Attention, jugement subjectif : En gĂ©nĂ©ral, la tĂ©lĂ©mĂ©trie est un domaine oĂč l'intervention forte du service mesh est indĂ©sirable. La collecte d'informations de base et le suivi en temps rĂ©el de certaines « mĂ©triques clĂ©s » comme le pourcentage de requĂȘtes rĂ©ussies et les dĂ©lais sont normales, mais espĂ©rons que nous ne serons pas tĂ©moins de l'Ă©mergence de ces sortes de stacks Frankenstein qui tenteraient 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 : Celui qui oublie les leçons de l'histoire est condamné à les revivre.
L'audit est l'art d'observer des Ă©vĂ©nements importants dans le systĂšme. Dans le cas du service mesh, cela peut signifier suivre qui a effectuĂ© des requĂȘtes Ă des points d'extrĂ©mitĂ© spĂ©cifiques de certains services ou combien de fois, au cours du dernier mois, un Ă©vĂ©nement liĂ© Ă la sĂ©curitĂ© a eu lieu.
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 choses telles que la performance et l'efficacitĂ© technique, tandis que l'audit peut avoir trait Ă des questions juridiques et autres qui dĂ©passent le strict domaine technique (par exemple, la conformitĂ© au RGPD â RĂšglement GĂ©nĂ©ral sur la Protection des DonnĂ©es de l'UE).
16. Visualisation
TL;DR : Vive React.js â source interminable d'interfaces excentriques.
Il existe peut-ĂȘtre un terme plus appropriĂ©, mais je ne le connais pas. Je fais simplement rĂ©fĂ©rence Ă la reprĂ©sentation graphique du service mesh ou de certains de ses composants. Ces visualisations peuvent inclure des indicateurs tels que les dĂ©lais moyens, les informations sur la configuration des conteneurs sidecar, les rĂ©sultats des vĂ©rifications de santĂ© et des alertes.
Travailler dans un environnement orientĂ© services entraĂźne une charge cognitive beaucoup plus forte par rapport Ă Sa MajestĂ© le Monolithe. Par consĂ©quent, la pression cognitive doit ĂȘtre rĂ©duite Ă tout prix. Une interface graphique banale pour une service mesh avec la possibilitĂ© de cliquer sur un bouton et d'obtenir le rĂ©sultat souhaitĂ© peut avoir une importance cruciale pour la popularitĂ© croissante de cette technologie.
Non inclus dans la liste
Au départ, j'avais l'intention d'inclure quelques scénarios d'utilisation supplémentaires dans la liste, mais j'ai ensuite décidé de ne pas le faire. Voici ceux-ci avec les raisons de ma décision :
- Multi-data center. à mon avis, ce n'est pas tant un scénario d'utilisation qu'un domaine trÚs spécifique d'application des service meshes ou d'un ensemble de fonctionnalités comme la découverte de services.
- Ingress et egress. C'est un domaine connexe, mais je me suis limitĂ© (peut-ĂȘtre artificiellement) au scĂ©nario d'utilisation « trafic est-ouest ». Ingress et egress mĂ©ritent un article Ă part.
Conclusion
C'est tout pour l'instant ! Encore une fois, cette liste est assez conditionnelle et, trÚs probablement, incomplÚte. Si vous pensez que j'ai omis quelque chose ou que je me suis trompé, contactez-moi sur Twitter (). Merci de respecter les rÚgles de courtoisie.
P.S. de l'auteur
Pour l'illustration en tĂȘte de l'article, j'ai utilisĂ© une image de l'article «» (auteur : Gregory MacKinnon). Elle montre comment une partie des fonctionnalitĂ©s des applications (en vert) a Ă©tĂ© transfĂ©rĂ©e Ă la service mesh, assurant les interconnexions entre elles (en bleu).
Lisez aussi dans notre blog :
- «»;
- «»;
- «».
Source : habr.com
