Service Mesh

Quand vous avez de plus en plus de services il peut devenir très compliqué de gérer l’ensemble des communications inter-service.

Problématique

Les microservices communiquent énormément entre eux, par conséquent de nombreux problèmes peuvent survenir :

  • Timeout
  • Securité
  • Rejouer

Première approche

En conséquence, les développeurs ont fini par utiliser des bibliothèques et des composants tiers tels qu’Eureka, Ribbon, Hystrix pour fournir ces fonctionnalités communes supplémentaires : service discovery, load balancing, circuit breaker, logging, etc …

without_service_mesh without_service_mesh

Mais avec cette approche, notre logique métier et la configuration sont fortement couplées. La compléxité augmente et il peut vite devenir compliquer de maintenir toute cette architectures sur plusieurs dizaines de microservices.

Service Mesh

Un Service Mesh est un ensemble de composants logiciels qu’on positionne à côté du microservice et qui gère l’ensemble des communications inter-services.

Le Service Mesh est un service dédié qui va gérer l’ensemble des communications inter-services :

  • Load balancing
  • Service discovery
  • Health checks
  • Authentication
  • Traffic management and routing
  • Circuit breaking and failover policy
  • Security and policy management
  • Metrics and telemetry
  • Fault injection

Par conséquent, l’ensemble des microservices ne communiquent maintenant qu’avec le Service Mesh. En général, le pattenr Sidecar est utilisé pour mettre en œuvre le Service Mesh, c’est-à-dire que le Service Mesh est déployé à côté (et non avec) de la logique métier.

Service Mesh Service Mesh

Aller un peu plus loin

Tous les Service Mesh sont gérés de manière centralisée par un Control Panel. Ceci est très utile pour soutenir les capacités de maillage de services : contrôle d’accès, l’observabilité, la découverte de services, etc.

service mesh control panel service mesh control panel