Ein Service-Mesh ermöglicht es den Entwicklern von Diensten, die Arbeit der Netzwerkkommunikation abzuladen und sich mehr auf die Geschäftslogik zu konzentrieren.
Ein Service Mesh ist eine konfigurierbare Infrastrukturebene für eine Microservices-Anwendung. Es macht die Kommunikation zwischen Dienstinstanzen flexibel, zuverlässig und schnell. Das Mesh bietet Service Discovery, Lastausgleich, Verschlüsselung, Authentifizierung und Autorisierung, Unterstützung für das Sicherungsmuster und andere Funktionen.
Das Service-Mesh wird in der Regel durch die Bereitstellung einer Proxy-Instanz, eines so genannten Sidecars, für jede Dienstinstanz implementiert. Sidecars übernehmen die Kommunikation zwischen den Diensten, die Überwachung und sicherheitsrelevante Belange – also alles, was von den einzelnen Diensten abstrahiert werden kann. Auf diese Weise können sich Entwickler um die Entwicklung, den Support und die Wartung des Anwendungscodes in den Diensten kümmern; Betriebsteams können das Service-Mesh warten und die Anwendung ausführen.
Istio, das von Google, IBM und Lyft unterstützt wird, ist derzeit die bekannteste Service-Mesh-Architektur. Kubernetes, das ursprünglich von Google entwickelt wurde, ist derzeit das einzige Container-Orchestrierungs-Framework, das von Istio unterstützt wird.
Ein Service-Mesh arbeitet mit einem Service-Discovery-Protokoll, um Dienste zu erkennen, wenn sie auftauchen. Das Mesh lässt sie dann ordnungsgemäß altern, wenn sie verschwinden. Die Service-Discovery ist ein Container-Management-Framework, das eine Liste von Instanzen führt, die bereit sind, Anforderungen zu empfangen oder von anderen Diensten entdeckt zu werden. Zusammen sorgen sie für Ausfallsicherheit bei der Kommunikation von Dienst zu Dienst.