Service Mesh

Définition

Un Service Mesh est une couche d’infrastructure dédiée qui gère la communication service-à-service dans une architecture microservices. Il gère le contrôle du trafic, l’observabilité et la sécurité entre les services sans nécessiter de modifications du code applicatif.

L’implémentation la plus courante utilise des sidecar proxies — des proxies légers déployés à côté de chaque instance de service.

Comment ça fonctionne

Service A Pod
├── Conteneur App (logique métier)
└── Sidecar Proxy (Envoy/Istio) — intercepte tout le trafic entrant/sortant

Service B Pod
├── Conteneur App (logique métier)
└── Sidecar Proxy (Envoy/Istio)

Flux de trafic : App A → Sidecar A → Réseau → Sidecar B → App B
                  ↑ tout le trafic intercepté et contrôlé

Capacités du Service Mesh

|| Capacité | Description | ||———-|————-| || Gestion du trafic | Routing, canary, blue-green, tests A/B | || Observabilité | Tracing distribué, métriques, logs | || Sécurité | mTLS, authentification, autorisation | || Résilience | Retries, timeouts, circuit breakers, rate limiting | || Application des politiques | Politiques cohérentes sur tous les services |

Service Mesh populaires

|| Mesh | Fournisseur | Notes | ||——|————-|——-| || Istio | Google/IBM/Lyft | Le plus populaire, riche en fonctionnalités | || Linkerd | Buoyant | Léger, simple, CNCF graduated | || Consul Connect | HashiCorp | Intégré avec la découverte de services Consul | || App Mesh | AWS | Spécifique AWS, basé sur Envoy | || OpenServiceMesh | Linux Foundation | Multi-cluster, CNCF sandbox | || Kuma | Kong | Multi-mesh, support Kubernetes + VM |

Service Mesh vs API Gateway

|| Fonctionnalité | Service Mesh | API Gateway | ||—————-|————-|————-| || Portée | Service-à-service interne | Client externe vers service | || Couche | L4-L7 dans le cluster | L7 au bord | || Trafic | Est-ouest (interne) | Nord-sud (externe) | || Cas d’utilisation | Communication microservices | Gestion d’API externe | || Exemple | Istio, Linkerd | Kong, AWS API Gateway |

Compromis du Service Mesh

Avantages :

  • Transparent pour le code applicatif
  • Politiques cohérentes sur tous les services
  • Observabilité intégrée
  • mTLS pour l’authentification des services

Inconvénients :

  • Complexité ajoutée et surcharge opérationnelle
  • Surcharge de performance due aux sidecar proxies
  • Courbe d’apprentissage pour la configuration
  • Non nécessaire pour les petits déploiements (< 10 services)

Termes associés

  • Kubernetes — proxy utilisé par Istio, App Mesh
  • mTLS — mutual TLS pour l’authentification des services
  • Microservices — service mesh pour la communication microservices
  • Distributed Tracing — observabilité dans le service mesh
  • API Gateway — complète le service mesh (externe vs interne)

Références