Was ist ein Service Mesh? Was sind die verfügbaren Open-Source-Service-Meshes?
Bei der Entwicklung in einer Microservice-Architektur gibt es viele einzelne Komponenten, die das DevOps-Team konfigurieren muss. 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 Infrastrukturebene, die der Microservice-Architektur hinzugefügt wird. Seine Hauptaufgabe besteht darin, eine schnelle und sichere Service-to-Service-Kommunikation zu gewährleisten. Dieses Tool mit geringer Latenz verwaltet und überwacht die Kommunikation zwischen Diensten und die gemeinsame Nutzung von Daten.
Es besteht aus einer Steuerungsebene von dem aus Entwickler spezifische Regeln und Richtlinien für die Netzwerkschicht implementieren. Die Steuerungsebene arbeitet direkt mit der Datenebene zusammen, einer Sammlung von Sidecar-Proxys, die neben den Diensten ausgeführt werden. 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 Diensterkennung
- Lastenausgleich
- Gesundheitsprüfungen
- Verschlüsselung
- Beobachtbarkeit
- Leistungsschalter
- Gestaffelte Rollouts mit prozentualer Traffic-Aufteilung
- Authentifizierung
- Reichhaltige Messwerte
- Autorisierung
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 hat sich als Lösung für eine Reihe von Problemen im Zusammenhang mit Microservices herausgestellt.
Viele Entwicklungsteams wechselten von der Entwicklung monolithischer Anwendungen zur Microservice-Architektur . Dies teilte eine Anwendung von einer monolithischen Einheit in ein System von einzelnen Diensten, die zusammenarbeiten. 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. Die Anwendungsleistung hängt davon ab, dass die Dienste zusammenarbeiten und Daten austauschen, um die beste Benutzererfahrung zu bieten. Ein Webshop könnte beispielsweise aus einem Anmeldedienst bestehen die mit einem Kaufservice kommuniziert das erfordert Informationen aus einer Inventardatenbank und so weiter.
Da Mikrodienste über APIs kommunizieren, finden Sie die beste Lösung, um Discovery zu lösen und Routing war wichtig. Außerdem mussten die 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 Mikrodienstarchitektur ein flaches, offenes Netzwerk.
Vor der Mesh-Dienstarchitektur wurde diese Aufgabe von Load-Balancern erledigt . Aufgrund von Bereitstellungs- und Kostenproblemen war dies jedoch keine praktische Lösung, insbesondere in größerem Maßstab. Das Service Mesh wurde als ultimative Lösung für alle oben genannten Probleme entwickelt. Es stellte eine Netzwerkschicht mit einer zentralisierten Registrierung (Steuerungsebene) 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 nach oben und unten skalieren und die Routing-Regeln ändern, ohne die Dienste zu ändern.
Service Mesh-Vorteile
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 eine automatische Autorisierung ein , Authentifizierung , Verschlüsselung und Richtliniendurchsetzung . Es verwendet Mutual Transport Layer Security (mTLS) um sicherzustellen, dass die gesamte Kommunikation von Dienst zu Dienst sicher ist. Dienste identifizieren sich mit ihren TLS-Zertifikaten, um eine Verbindung aufzubauen. 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 Verkehrssteuerung. Es verwaltet den Ost-West-Verkehr sowie den Verkehr zwischen Diensten. Die gesamte Kommunikation erfolgt über die Sidecar-Proxys, die von der Steuerungsebene verwaltet werden. Der Datenverkehr wird transparent geroutet, wodurch Entwickler den gesamten Datenaustausch besser einsehen können. Mit einem klareren Einblick in die Anwendungsleistung ist es einfacher, potenzielle Probleme innerhalb des Systems zu erkennen.
- Beobachtbarkeit – Da die Plattform den gesamten Datenverkehr verwaltet, sammelt sie wertvolle Erkenntnisse über das Verkehrsverhalten und die Benutzerinteraktion. Mit solch großen Datenmengen können Geschäftsanalysten eine Strategie zur Verbesserung der Anwendung planen.
- Entwickler, die sich auf die App-Entwicklung statt auf das Networking konzentrieren – Anstatt dass das Entwicklungsteam die gesamte Netzwerkschicht einrichtet und verwaltet, kann es Service Mesh in die Architektur implementieren. Während die Plattform eine anfängliche Konfiguration erfordert, automatisiert sie zeitaufwändige Aufgaben im Zusammenhang mit der Netzwerkverwaltung. Dadurch können sich Entwickler auf Microservices konzentrieren. Das Service Mesh zu verlassen, um Service-zu-Service-Interaktionen zu verwalten, spart Zeit und Geld und verbessert gleichzeitig die Produktivität.
- Resilienz – Ein Service Mesh bietet Funktionen, die dabei helfen, robuste Microservice-Anwendungen zu erstellen. Eine dieser Funktionen ist das Trennschaltermuster, das dabei hilft, Ausfälle und Latenzspitzen zu erkennen. Darüber hinaus verwendet ein Service Mesh Load Balancing für die Diensterkennung und das Routing des Datenverkehrs über das Microservice-Netzwerk. Andere Funktionen, die die Widerstandsfähigkeit erhöhen, sind Wiederholungen, 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 codieren, stellen sie Proxys bereit und verbinden sie mit dem Dienst. Dies beschleunigt die gesamten Entwicklungs- und Testzyklen.
Liste der Open-Source-Service-Meshes
Es gibt eine Reihe von Open-Source-Service-Meshes. Istio, Linkerd und Consul werden am häufigsten verwendet.
Nachfolgend finden Sie weitere Details zu jeder Plattform.
Istio
Istio ist eine Open-Source-Infrastruktur, die von Google, IBM und Lyft entwickelt wurde. Es ist eine der frühesten Service-Mesh-Plattformen. Es verwendet Istiod , eine Steuerungsebene, die aus mehreren Komponenten besteht (Pilot , Zitadelle und Mixer ) für den Betrieb und die Konfiguration des Service Mesh. Die Datenebene besteht aus Envoy Proxys, entwickelt in C++ . HTTP/TCP-Verbindungen werden vom Gateway verwaltet , dem Load-Balancer von Istio. Der VirtualService und Zielregeln Routing-Regeln und -Richtlinien definieren.

Linkerd
Linkerd ist ein leichtgewichtiges Open-Source-Service-Mesh, das vom Projekt Cloud Native Computing Foundation (CNCF) entwickelt wurde. Es ist einfach in einem Kubernetes-Cluster auf jeder Plattform zu installieren, ohne zusätzliche Konfiguration. Keine Konfiguration ist vorteilhaft, wenn Sie mit kleineren Clustern arbeiten. Große Projekte erfordern jedoch die Möglichkeit der Konfiguration, um alle Dienste im Cluster erfolgreich zu verwalten.
Die Sidecar-Proxys sind in Rust geschrieben . Linkerd verwendet den Controller für die Steuerungsebene und die Webbereitstellung für das Armaturenbrett. Außerdem wurde Prometheus zum Erkunden und Speichern von Messwerten und Grafana zum Rendern und Anzeigen von Dashboards verwendet.

Consul Connect
Consul wurde zunächst als Service-Discovery-Tool entwickelt und entwickelte sich später zu einem Service-Mesh. Im Gegensatz zu Linkerd enthält Consul Connect viele Konfigurationsmöglichkeiten, die Ihnen mehr Kontrolle über die Netzwerkumgebung geben. Dementsprechend ist es schwieriger zu verwenden als Linkerd. Dieses Open-Source-Service-Mesh ist plattformunabhängig, d. h. es erfordert weder Kubernetes noch Nomad. Trotzdem Nomad vereinfacht den Prozess der Verwaltung der Microservice-Kommunikation über Consul.

Offenes Service Mesh von Microsoft
Open Service Mesh (OSM) ist ein CNCF Envoy-Projekt das eine Service-Mesh-Schnittstelle implementiert, um dynamische Microservice-Anwendungen zu verwalten und zu sichern. Es verwendet Envoy xDS als Beiwagencontainer. Zu den Hauptfunktionen gehören Traffic-Shifting, Zertifikatsverwaltung, Aktivierung von mTLS, automatische Sidecar-Injektion und Zugriffskontrollrichtlinien.
Kuma
Kuma ist eine Open-Source-Steuerungsebene für Kubernetes und VMs, die in einem Service Mesh ausgeführt werden. Es verfügt über eine L4+L7-Richtlinienarchitektur das Funktionen wie Diensterkennung, Routing, Zero-Trust-Sicherheit und Beobachtbarkeit implementiert. Die Plattform ist hochgradig 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 Sicherheitskontextbeschränkung . 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-Sichtbarkeit für Ihre Microservice-Anwendung. AWS App Mesh lässt sich in AWS Fargate integrieren , Amazon ECS , Amazon EC2 , Amazon EKS , Kubernetes und AWS-Außenposten . Mit seinen Überwachungstools werden Überwachungsdaten automatisch exportiert.
Network Service Mesh
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. Nach der Implementierung sind nur minimale Änderungen an Kubernetes erforderlich.
Fazit
Ein Service Mesh vereinfacht die Verwaltung und Wartung einer Anwendung, die mit der Microservice-Architektur entwickelt wurde. Es verbessert die Gesamtsicherheit innerhalb der Microservice-Architektur und gewährleistet die Sichtbarkeit und Beobachtbarkeit des Verkehrsflusses. Insgesamt verbessern die Service-Mesh-Funktionen die Leistung und beschleunigen den Entwicklungszyklus. Finden Sie aus einer Vielzahl verfügbarer Open-Source-Lösungen diejenige, die den Anforderungen Ihrer Anwendungen am besten entspricht.
Cloud Computing
- Was sind die besten Cloud-Computing-Kurse?
- Was sind die Vorteile des Wasserstrahlschneidens?
- Was sind die Vorteile des Sandstrahlens?
- Was sind die Haupteigenschaften von Graphit?
- Was sind die Vorteile des Wasserstrahlschneidens?
- Was sind die 7 Arten von Technologien?
- Welche Arten von Prototyping gibt es?
- Was sind die 4 Arten von Herstellungsprozessen?
- Was sind die 5 Bearbeitungsachsen?
- Welche Arten von Lagern gibt es?