Was ist ein Service Mesh und wie funktioniert es? {Top 8 Service Mesh-Tools}
Bei der Entwicklung in einer Microservice-Architektur muss das DevOps-Team viele einzelne Komponenten konfigurieren. Damit Microservices zusammenarbeiten können, benötigen sie etablierte Kommunikationskanäle für den Informationsaustausch und die Datenübertragung.
Eine Möglichkeit, die Kommunikation zwischen Diensten zu verwalten und zu überwachen, ist die Verwendung eines Service Mesh.
Was ist ein Service Mesh?
Ein Service Mesh ist eine dedizierte Infrastrukturschicht, die der Microservice-Architektur hinzugefügt wird. Seine Hauptaufgabe besteht darin, eine schnelle und sichere Service-to-Service-Kommunikation sicherzustellen. Dieses Tool mit geringer Latenz verwaltet und überwacht die Kommunikation zwischen Diensten und den Datenaustausch.
Es besteht aus einer Kontrollebene, von der aus Entwickler spezifische Regeln und Richtlinien auf der Netzwerkebene implementieren. Die Kontrollebene arbeitet direkt mit der Datenebene zusammen, einer Sammlung von Sidecar-Proxys, die neben den Diensten laufen. Diese Proxys sind für die gesamte Kommunikation zwischen den Diensten verantwortlich. Darüber hinaus überwachen und liefern sie wertvolle Einblicke in die Gesamtleistung der Anwendung und helfen dabei, potenzielle Probleme zu finden und Ausfallzeiten zu vermeiden.

Die Proxys bieten wertvolle Funktionen, darunter:
- Dynamische Serviceerkennung
- Lastverteilung
- Gesundheitschecks
- Verschlüsselung
- Beobachtbarkeit
- Leistungsschalter
- Gestaffelte Einführungen mit prozentualer Traffic-Aufteilung
- Authentifizierung
- Umfangreiche Messwerte
- Genehmigung
Der Aufstieg der Service-Mesh-Architektur
Um vollständig zu verstehen, wie ein Service-Mesh funktioniert, müssen wir untersuchen, warum ein solches Tool entwickelt wurde. Der Aufstieg der Service-Mesh-Architektur erwies sich als Lösung für eine Reihe von Problemen im Zusammenhang mit Microservices.
Viele Entwicklungsteams haben den Wechsel von der Entwicklung monolithischer Anwendungen zur Microservice-Architektur vollzogen. Dadurch wurde eine Anwendung von einer monolithischen Einheit in ein System einzelner, zusammenarbeitender Dienste aufgeteilt. Die Anwendung besteht aus mehreren autonomen Diensten mit ihren individuellen Funktionalitäten.
Die Schwierigkeit bei der Entwicklung einer solchen Anwendung besteht darin, die beste Art und Weise zu konfigurieren, wie diese Dienste miteinander kommunizieren können. Die Anwendungsleistung hängt davon ab, dass die Dienste zusammenarbeiten und Daten austauschen, um das beste Benutzererlebnis zu bieten. Beispielsweise könnte ein Webshop aus einem Anmeldedienst bestehen, der mit einem Kaufdienst kommuniziert, der Informationen aus einer Bestandsdatenbank anfordert und so weiter.
Da Mikrodienste über APIs kommunizieren, war es wichtig, die beste Lösung für die Lösung von Erkennung und Routing zu finden. Darüber hinaus mussten Entwickler sicherstellen, dass die Kommunikation innerhalb des Systems sicher war. Während Firewalls die Anwendung vor Angriffen von außen schützten, gab es innerhalb der Microservice-Architektur ein flaches, offenes Netzwerk.
Vor der Mesh-Service-Architektur wurde diese Aufgabe von Load Balancern übernommen. Aufgrund von Bereitstellungs- und Kostenproblemen war dies jedoch keine praktische Lösung, insbesondere im größeren Maßstab. Das Service Mesh wurde als ultimative Lösung für alle oben genannten Probleme entwickelt. Es stellte eine Netzwerkschicht mit einer zentralen Registrierung (Kontrollebene) dar, die alle Dienste mit ihren Sidecar-Proxys verwaltete. Sie sind im Vergleich zu Load Balancern viel einfacher zu konfigurieren und zu skalieren. Entwickler können die Proxys nach Bedarf vergrößern und verkleinern und Routing-Regeln ändern, ohne die Dienste zu ändern.
Vorteile von Service Mesh
Die wichtigsten Vorteile von Service Mesh sind:
- Verbesserte Sicherheit - Die Implementierung eines Service Mesh in eine Microservice-Architektur verbessert die Gesamtsicherheit. Diese Netzwerkschicht führt automatische Autorisierung, Authentifizierung, Verschlüsselung und Richtliniendurchsetzung ein. Es verwendet Mutual Transport Layer Security (mTLS), um sicherzustellen, dass die gesamte Dienst-zu-Dienst-Kommunikation sicher ist. Dienste identifizieren sich mit ihren TLS-Zertifikaten, um eine Verbindung herzustellen. Sobald sie ihre Identität bestätigt haben, richten sie einen verschlüsselten Kanal für den Datenaustausch ein.
- Verkehrskontrolle und Sichtbarkeit - Eine der Hauptfunktionen eines Service Mesh ist die Verkehrskontrolle. Es verwaltet den Ost-West-Verkehr sowie den Verkehr zwischen den Diensten. Die gesamte Kommunikation erfolgt über die Sidecar-Proxys, die von der Kontrollebene verwaltet werden. Der Datenverkehr wird transparent weitergeleitet, sodass Entwickler den gesamten Datenaustausch besser einsehen können. Durch einen klareren Einblick in die Anwendungsleistung ist es einfacher, potenzielle Probleme im System zu erkennen.
- Beobachtbarkeit - Da die Plattform den gesamten Datenverkehr verwaltet, sammelt sie wertvolle Erkenntnisse über das Verkehrsverhalten und die Benutzerinteraktion. Bei solch großen Datenmengen können Geschäftsanalysten eine Strategie zur Verbesserung der Anwendung planen.
- Entwickler, die sich auf die App-Entwicklung statt auf Netzwerke konzentrieren - Anstatt dass das Entwicklungsteam die gesamte Netzwerkschicht einrichten und verwalten muss, können sie Service Mesh in die Architektur implementieren. Während die Plattform eine Erstkonfiguration erfordert, automatisiert sie zeitaufwändige Aufgaben im Zusammenhang mit der Netzwerkverwaltung. Dadurch können sich Entwickler auf Microservices konzentrieren. Die Verwaltung der Service-zu-Service-Interaktionen dem Service Mesh zu überlassen, spart Zeit und Geld und verbessert gleichzeitig die Produktivität.
- Resilienz - Ein Service Mesh bietet Funktionen, die bei der Erstellung robuster Microservice-Anwendungen helfen. Eine dieser Funktionen ist das Leistungsschaltermuster, das bei der Erkennung von Ausfällen und Latenzspitzen hilft. Darüber hinaus nutzt ein Service Mesh den Lastausgleich für die Serviceerkennung und die Weiterleitung des Datenverkehrs über das Microservice-Netzwerk. Zu den weiteren Funktionen, die die Ausfallsicherheit erhöhen, gehören Wiederholungsversuche, Zeitüberschreitungen und Fristen.
- Schnellere Test- und Bereitstellungszyklen - Die Verwendung von Sidecar-Proxys für die Pod-zu-Pod-Kommunikation ist viel einfacher und schneller einzurichten. Anstatt redundante Funktionen in jeden Dienst zu programmieren, stellen sie Proxys bereit und verbinden sie mit dem Dienst. Dies beschleunigt die gesamten Entwicklungs- und Testzyklen.
Liste der Open Source Service Meshes
Es stehen eine Reihe von Open-Source-Service-Meshes zur Verfügung. Istio, Linkerd und Consul werden am häufigsten verwendet.
Nachfolgend finden Sie weitere Details zu den einzelnen Plattformen.
Istio
Istio ist eine Open-Source-Infrastruktur, die von Google, IBM und Lyft entwickelt wurde. Es handelt sich um eine der frühesten Service-Mesh-Plattformen. Es verwendet Istiod, eine Steuerungsebene, die aus mehreren Komponenten (Pilot, Citadel und Mixer) für den Betrieb und besteht Konfigurieren des Service Mesh. Die Datenebene besteht aus Envoy Proxys, die in C++ entwickelt wurden. HTTP/TCP-Verbindungen werden vom Gateway, dem Load Balancer von Istio, verwaltet. Der VirtualService und DestinationRules definieren Routingregeln und -richtlinien.

Weitere Informationen zur beliebtesten Open-Source-Service-Mesh-Lösung finden Sie unter Was ist Istio? - Architektur, Funktionen, Vorteile und Herausforderungen
Linkerd
Linkerd ist ein leichtes Open-Source-Service-Mesh, das vom Cloud Native Computing Foundation (CNCF)-Projekt entwickelt wurde. Die Installation in einem Kubernetes-Cluster auf einer beliebigen Plattform ist ohne zusätzliche Konfiguration einfach. Bei der Arbeit mit kleineren Clustern ist es von Vorteil, keine Konfiguration zu haben. Großprojekte erfordern jedoch die Möglichkeit der Konfiguration, um alle Dienste im Cluster erfolgreich verwalten zu können.
Seine Sidecar-Proxys sind in Rust geschrieben. Linkerd verwendet den Controller für die Steuerungsebene und das Web Deployment für das Dashboard. Darüber hinaus wurden Prometheus zum Erkunden und Speichern von Metriken und Grafana zum Rendern und Anzeigen von Dashboards verwendet.

Konsul Connect
Consul wurde zunächst als Service-Discovery-Tool konzipiert und entwickelte sich später zu einem Service-Mesh. Im Gegensatz zu Linkerd umfasst Consul Connect viele Konfigurationsschritte, sodass Sie mehr Kontrolle über die Netzwerkumgebung haben. Dementsprechend ist es schwieriger zu verwenden als Linkerd. Dieses Open-Source-Service-Mesh ist plattformunabhängig, d. h. es erfordert weder Kubernetes noch Nomad. Dennoch vereinfacht Nomad den Prozess der Verwaltung der Microservice-Kommunikation über Consul.

Microsofts Open Service Mesh
Open Service Mesh (OSM) ist ein CNCF-Envoy-Projekt , das eine Service-Mesh-Schnittstelle zur Verwaltung und Sicherung dynamischer Microservice-Anwendungen implementiert. Es verwendet Envoy xDS als Sidecar-Container. Zu den Hauptfunktionen gehören Verkehrsverlagerung, Zertifikatsverwaltung, Aktivierung von mTLS, automatische Sidecar-Injektion und Zugriffskontrollrichtlinien.
Kuma
Kuma ist eine Open-Source-Steuerungsebene für Kubernetes und VMs, die innerhalb eines Service Mesh ausgeführt werden. Es verfügt über eine L4+L7-Richtlinienarchitektur, die Funktionen wie Diensterkennung, Routing, Zero-Trust-Sicherheit und Beobachtbarkeit implementiert. Die Plattform ist hoch skalierbar und einfach einzurichten.
OpenShift Service Mesh Red Hat
Red Hat hat sein OpenShift Service Mesh für die Verwaltung von Microservice-Anwendungen entwickelt. Es bietet mehrere Schnittstellen für Netzwerke und erhöhte Sicherheit mit Security Context Constraint. Es misst die Leistung mit Jager und beobachtet Interaktionen zwischen Diensten mit Kiali. Darüber hinaus enthält OpenShift den Red Hat 3scale Istio Mixer Adapter für eine bessere API-Sicherheit.
AWS App Mesh
>Amazon hat App Mesh entwickelt, eine kostenlose Service-Mesh-Software, die alle Ihre Dienste innerhalb einer Microservice-Architektur verwaltet. Es bietet Hochverfügbarkeit und End-to-End-Transparenz für Ihre Microservice-Anwendung. AWS App Mesh lässt sich mit AWS Fargate, Amazon ECS, Amazon EC2, Amazon EKS, Kubernetes< integrieren und AWS Outposts. Mit seinen Überwachungstools exportiert es automatisch Überwachungsdaten.
Lesen Sie unseren Artikel über ECS vs. Kubernetes, um zu erfahren, wie sie im Vergleich zueinander abschneiden.
Netzwerkdienstnetz
Network Service Mesh ist ein Open-Source-CNCF-Sandbox-Projekt. Es handelt sich um ein Hybrid-/Multi-Cloud-IP-Service-Mesh, das einen einfachen Satz von APIs verwendet, um die Konnektivität zu erleichtern. Es stellt eine Verbindung zwischen Diensten her, die in Containern ausgeführt werden, und mit externen Endpunkten. Bei der Implementierung sind nur minimale Änderungen an Kubernetes erforderlich.
Abschließend
Ein Service Mesh vereinfacht die Verwaltung und Wartung einer Anwendung, die mithilfe der Microservice-Architektur entwickelt wurde. Es verbessert die allgemeine Sicherheit innerhalb der Microservice-Architektur und sorgt für Sichtbarkeit und Beobachtbarkeit des Datenverkehrsflusses. Insgesamt steigern die Service-Mesh-Funktionen die Leistung und beschleunigen den Entwicklungszyklus. Finden Sie aus der großen Auswahl an verfügbaren Open-Source-Lösungen diejenige, die den Anforderungen Ihrer Anwendungen am besten entspricht.