Wenn Sie mit Microservices arbeiten, bestehen Ihre Anwendungen aus vielen verschiedenen kleinen Diensten, die kommunizieren müssen, um als System zusammenzuarbeiten.

Die Microservices kommunizieren in vielen Fällen direkt zwischen den einzelnen Diensten miteinander, was sie ineffizient und störanfällig macht, aber genau hier könnte Service Mesh Abhilfe schaffen.

Was ist ein Service-Mesh? 

Der Begriff Service Mesh beschreibt zunächst eine Möglichkeit, den Datenaustausch zwischen verschiedenen Microservices einer Anwendung zu steuern. Konkret geht es um den Einsatz von Software, die die Kommunikation zwischen Microservices ermöglicht:

  • Anwendungsidentifikation
  • Lastverteilung
  • Beglaubigung
  • Verschlüsselung

Durch parallele Verbindungen, die über ihre Proxys laufen, entsteht ein Mesh-Netzwerk aus miteinander verbundenen Microservices. Dazu wird ein vernetztes Microservices-Netzwerk in ein übergeordnetes Data Center Networking Management System integriert. Es ist dann einfacher, die Kommunikation zu optimieren, ohne während der Weiterentwicklung der Anwendung Ausfallzeiten zu erleiden. In Wirklichkeit benötigt jeder Anwendungsdienst andere Dienste, um die Benutzeranforderungen zu erfüllen. 

Beispielsweise erfährt der Nutzer bei einer Online-Verkaufsanwendung vor jedem Kauf, ob der betreffende Artikel tatsächlich verfügbar ist. Dazu muss eine Kommunikation zwischen dem Dienst in Bezug auf die Datenbank und der Webseite des Produkts hergestellt werden. Dieser muss dann mit dem Online-Warenkorb des Nutzers kommunizieren. 

Darüber hinaus kann der Wiederverkäufer einen Produktvorschlagsdienst in der Anwendung einrichten, um Benutzer besser zu führen. In diesem Fall muss dieser neue Dienst nicht nur mit einer Datenbank von Produktetiketten austauschen, um die Vorschläge auszugeben, sondern auch mit der Inventar Datenbank, die vorher mit der Produktseite kommunizieren sollte. Es ist eigentlich eine Reihe von wiederverwendbaren Produkten. 

Moderne Anwendungen werden in der Regel so als Netzwerk von Diensten eingerichtet, deren Zweck es ist, eine bestimmte Geschäftsfunktion auszuführen. 

Wie funktioniert ein Service Mesh und welche Vorteile hat es?

Zu beachten ist, dass ein Service Mesh keine weiteren Funktionalitäten in der Arbeitsumgebung einer Anwendung schafft. Das in einer Anwendung erstellte Service Mesh hat die Form einer Gruppe von Netzwerk-Proxys, was im Enterprise-Computing-Sektor nach wie vor ein bekannter Begriff ist. 

Sie verwenden wahrscheinlich jedes Mal Proxys, wenn Sie Webseiten mit einem Arbeitscomputer besuchen. Proxys, die auf der Infrastrukturschicht von Microservices basieren, helfen beim Weiterleiten von Anfragen zwischen ihnen. Daher das Wort „Seitenwagen“ bezeichnet die Proxys, die in einem Service Mesh enthalten sind, und das liegt daran, dass ihre Ausführung neben den Diensten und nicht in ihnen erfolgt. Die „Sidecar“-Proxys der verschiedenen Dienste bauen ein Mesh-Netzwerk auf. 

Darüber hinaus müssen Entwickler in Ermangelung eines Service-Mesh jeden Microservice entsprechend der Kommunikationsstrategie zwischen den Diensten codieren. Da die Kommunikationslogik zwischen den Abteilungen in jeder Abteilung verborgen ist, haben Entwickler Schwierigkeiten, die Unternehmensziele zu erreichen. 

Außerdem unterliegen sie Schwierigkeiten bei der Diagnose von Kommunikationsproblemen. Schließlich ermöglicht ein Netzwerk von Diensten, Lösungen für einige der Probleme zu finden, die mit der Verwaltung der Kommunikation zwischen Diensten verbunden sind.

Mit Service Mesh können Sie diese Kommunikation automatisieren, da die benötigten Daten und Erkenntnisse in der ausgelagerten Infrastruktur des Mesh-Netzwerks leicht zugänglich sind. Es erleichtert das Lokalisieren und Beheben von Problemen und Störungen. Zudem wird die IT des Unternehmens entlastet und kann sich anderen, wertschöpfenden Aufgaben widmen.

Durch die Kommunikationsabstraktion können auch ausgefallene Dienste automatisch umgangen werden und beeinträchtigen den Datenaustausch funktionierender Anwendungsteile nicht. Die leicht zugänglichen Daten des Service-Mesh-Systems lassen sich zudem einfach analysieren und ermöglichen so eine Betriebsverbesserung und Leistungssteigerung der Anwendung.

Wir sind durchgegangen, wie Service Mesh funktioniert; Schauen wir uns nun einige der besten Service-Mesh-Manager an:

Meshery

Meshery ist ein Mesh-Service-Manager, mit dem Sie verschiedene Service-Mesh-Lösungen ausführen können. Es kann auf bereitgestellt werden Kubernetes und Docker. Mastery bietet eine UI und CLI, um den Maßstab für alle wichtigen Mesh-Service-Lösungen zu setzen, einschließlich Linkerd und Istio. Meshery kann direkt auf dem Cluster oder lokal bereitgestellt werden.

Amazon App Mesh

YouTube-Video

AWS-App-Mesh ist ein Netzwerk-Mesh-Dienst für Amazon's Kubernetes-Plattform (EKS). Es bietet Verwaltung auf Anwendungsebene über den Envoy-Sidecar-Proxy für ein- und ausgehenden Datenverkehr und verwendet Circuit Breaking, um Beobachtbarkeitsmetriken mit AWS X-Ray bereitzustellen. AWS App Mesh kann auch zusammen mit anderen Diensten wie Amazon EC2 und AWS Fargate verwendet werden.

Linkerd

YouTube-Video

Linkerd ist ein Open-Source-Netzwerk-Mesh-Manager, der einen auf Rust basierenden, benutzerdefinierten Proxy verwendet, um Microservices zu verwalten. Es wird mit vorinstalliertem Grafana geliefert, um Beobachtbarkeitsmetriken bereitzustellen. Linkerd bietet im Gegensatz zu anderen Open-Source-Mesh-Managern eine GUI und unterstützt nicht nur Prometheus, sondern auch Ingress-Controller wie Traefik, Kong und Gloo. Linkerd unterstützt auch automatische Bereitstellungs-Upgrades über Cluster hinweg.

Istio

Istio ist ein Open-Source-Service-Mesh, das den Envoy-Proxy verwendet, um Microservices zu verwalten. Istio bietet mehrere Funktionen wie Lastenausgleich, Richtlinienerstellung, Datenverkehrsrouting, Zeitüberschreitungen, Verbindungsunterbrechung, Datenverkehrsverschiebung und Wiederholungsversuche. ‌Istio bietet auch verteilte Ablaufverfolgungsfunktionen über Container oder Maschinen hinweg, ohne dass zusätzliche Software installiert werden muss.

Kuma

Kuma ist ein von Kong erstelltes Service-Mesh, das verwendet wird, um die Funktionsweise bestehender Dienste über den Envoy-Proxy zu erweitern. Kuma unterstützt verschiedene Microservices und bietet verbesserte Sicherheit und Überwachung für die Netzwerke. Es enthält eine Reihe vorkonfigurierter Richtlinien für Routing, mTLS, Verkehrssteuerung und verschiedene Sicherheitsfunktionen. Mit Kuma können Sie ganz einfach verschiedene isolierte Meshes über eine einzige Steuerungs- und Datenebene steuern.

Nginx Mesh

Nginx ist ein Service-Mesh für Kubernetes, das den Datenverkehr zwischen Containern mithilfe der von Nginx Plus betriebenen Datenebene verschlüsselt. Nginx verwendet Ratenbegrenzung und Trennschalter, um den Datenverkehr zwischen Diensten zu verwalten, und verfügt über ein Grafana-Dashboard zur Beobachtung von Service-Mesh-Metriken. 

Consul

Konsul von HashiCorp ist ein Service-Mesh, das eine integrierte Proxy-Schicht bereitstellt und auch den Envoy-Sidecar-Proxy unterstützt. Es bietet pfadbasiertes Routing, Traffic-Shifting und Load-Balancing. Consul ist in HashiCorp Vault integriert und unterstützt auch mTLS. Es kann in Prometheus und Grafana integriert werden, um Beobachtbarkeitsmetriken anzuzeigen.

Gloo Mesh

Gloo Mesh ist ein Service-Mesh, das auf dem Istio-Mesh aufbaut und den Envoy-Proxy verwendet, mit dem Sie ein Zero-Trust-Sicherheitsmodell implementieren können. Gloo unterstützt mandantenfähige Kubernetes, VMs und andere Microservices. Es ist sowohl CI/CD- als auch GitOps-freundlich, was die Bereitstellung vereinfacht. 

Final Words

Service Mesh löst das Kommunikationsproblem zwischen verschiedenen Microservices und bietet verschiedene Sicherheitsvorteile; Aufgrund von Hunderten unterschiedlicher Mesh-Lösungen, die auf dem Markt erhältlich sind, ist es jedoch unerlässlich, einen Mesh-Service zu wählen, der Ihren Anforderungen am besten entspricht und einfach zu verwalten ist.