Bonnes pratiques concernant les services canoniques
Remarque : Les services canoniques sont automatiquement pris en charge dans les versions 1.6.8 et ultérieures de Cloud Service Mesh.
Les services canoniques vous permettent de gérer de nombreuses configurations différentes. Pour une expérience optimale avec les tableaux de bord de services Cloud Service Mesh, tenez compte des pratiques standards suivantes lors de la configuration de vos services :
- Réservez un élément [espace de noms, nom] unique au service sur l'ensemble du maillage.
- Définissez une application logicielle par service canonique.
- Ne regroupez pas les services canoniques à travers plusieurs environnements (par exemple, production/préproduction/développement).
- Utilisez les tableaux de bord Cloud Monitoring pour obtenir une vue d'ensemble de plusieurs services.
- Tablez sur une longue durée de vie pour les services canoniques.
Réservez un élément [espace de noms, nom] unique au service sur l'ensemble du maillage
Si un service canonique déployé dans un cluster ou une région possède le même identifiant et le nom du service canonique comme celui déployé dans un autre cluster, ou Cloud Service Mesh suppose qu'il s'agit du même service logique.
Ce comportement est conforme au principe d'uniformité des parcs, selon lequel un espace de noms doit avoir la même signification et représenter la même entité sur l'intégralité du parc.
Une application logicielle par service canonique
Les services canoniques sont conçus pour représenter un unique service ou microservice logique. Ils sont destinés à couvrir des binaires/charges de travail homogènes représentant la même application logicielle et la même fonction métier.
Vous pouvez définir un service canonique pour regrouper plusieurs ressources conceptuelles microservices ensemble, les tableaux de bord des services n'offrent pas Les tableaux de bord des services affichent une agrégation des composants dont les performances et la configuration peuvent être très différentes. Il serait difficile, voire impossible, de comprendre l'état, les performances et la configuration de l'ensemble.
Les pratiques suivantes ne sont pas nécessairement mauvaises, mais votre service canonique peut être trop étendu si :
- il existe du trafic réseau entre différentes charges de travail au sein d'un même service canonique ;
- un service canonique comprend plusieurs charges de travail déployées suivant différents calendriers de versions ;
- différentes équipes au sein de votre organisation sont responsables du fonctionnement des différents éléments d'un même service canonique.
Ne regroupez pas un service canonique à travers plusieurs environnements
De nombreuses organisations du secteur des technologies exploitent plusieurs environnements de déploiement afin de garantir la qualité des logiciels et de limiter les risques. Ces environnements incluent le plus souvent des environnements de développement, de test, de préproduction et de production, ou un sous-ensemble de ces environnements.
Même si vous déployez le même service conceptuel dans chacun des différents environnements, il est déconseillé de les regrouper au sein d'un même service canonique. Ces sont différents et n'offrent pas le même niveau ou un objectif spécifique pour votre organisation.
Par exemple, la défaillance d'un service de production critique peut entraîner des problèmes des incendies. Vous ne devez alerter personne si le « dev » le déploiement échoue au milieu de la nuit. Il en va de même pour la compréhension des performances, des capacités et de la sécurité des versions.
Du plus simple mais le moins rigoureux au plus difficile mais le plus puissant, il existe trois façons de séparer les services en différents environnements:
- Séparez-les en utilisant plusieurs noms de service, par exemple
payments-prod
etpayments-test
. - Séparez-les en utilisant plusieurs espaces de noms, par exemple
billing-team
etbilling-team-test
. - Séparez-les en utilisant plusieurs parcs, un pour chaque environnement.
Préférez les tableaux de bord personnalisés Cloud Monitoring pour créer des agrégations arbitraires
Plutôt que d'augmenter artificiellement et à l'excès le champ d'application des services canoniques pour agréger leurs données, utilisez des tableaux de bord Cloud Monitoring afin de créer des vues d'ensemble pour plusieurs services logiques à la fois.
Les services canoniques sont destinés à durer longtemps
En dehors des cas d'utilisation de développement, d'exploration et de test, les services canoniques doivent représenter des services logiques globaux de haut niveau. Ces services évoluent lentement et ont tendance à avoir une longue durée de vie. Cette longévité implique de ne pas modifier les noms des services. Bien que vous puissiez modifier leur nom, cette action a une incidence sur les métriques, les SLO et les journaux. Cependant, vous pouvez ajuster librement le champ Display name
sans que cela n'occasionne d'interruption.
L'apparition d'un nouveau service canonique coïncide fréquemment avec un nouveau logiciel ou une mise à jour, tandis que la disparition d'un service canonique correspond souvent à l'abandon d'un service. Votre capacité à consulter l'historique des performances de votre service, de votre plan et de la capacité de votre projet, dépend entièrement de la préservation d'une notion unique correspondant à ce service dans Cloud Service Mesh et ce, durant toute sa vie.
Notez que ce principe diffère des ressources de niveau inférieur telles que les instances de VM, les pods/déploiements Kubernetes et même les clusters entiers, qui sont souvent créés et supprimés dans le cadre de la mise à jour et de la maintenance des systèmes de production.