Was ist ein Service-Mesh?
Ein Service-Mesh ist ein vorkonfigurierter Anwendungsservice, der Services ermöglicht, miteinander zu kommunizieren und Daten sowie Konsistenz über den Lebenszyklus einer Anwendung hinweg gemeinsam zu nutzen. Sie werden zum Management der Microservices mit der dünnen, beschreibbaren Schicht eines Containers verwendet. Ein Service-Mesh wurde für die einfache Einrichtung und Bereitstellung entwickelt und erschließt den Wert von Microservices, sodass Unternehmen auf einfache Weise neue Services entwickeln und als API-Produkte verwalten können.
Um ein Service-Mesh zu implementieren, benötigen Sie eine moderne Integrationsstrategie, die für das digitale Zeitalter geeignet ist. Sie muss agil sein, Innovationen fördern und die Geschäftsanforderungen erfüllen. Effizienz ist ebenfalls wichtig, hat aber keine hohe Priorität.
Vorteile eines Service-Mesh
Die Standardisierung von Microservice-basierten Anwendungen. Das Verhalten verteilter Anwendungen hängt vom Netzwerk ab, das sie unterstützt. Verschiedene Verhaltensweisen können eine Herausforderung für ein Konfigurationsverwaltungssystem darstellen. Ein Service-Mesh lässt ein eindeutiges Rechenzentrum für den Orchestrator weniger umständlich erscheinen.
Überwachung und Verbesserung des Verhaltens verteilter Anwendungen. Ein gutes Service-Mesh platziert stark nachgefragte Komponenten an einer Stelle auf der Steuerungsebene der Anwendung, an der sie am leichtesten zugänglich sind. Das heißt, die Komponenten müssen reibungslos und effizienter arbeiten. Mit einem Service-Mesh werden Daten gemeinsam genutzt, sodass Entwickler sehen können, was in der nächsten Iteration verbessert werden muss.
Erhöhte Transparenz bei komplizierten Interaktionen. Den Informationsfluss in einer Cloud-nativen Umgebung zu verfolgen, kann schwierig sein. Ein Service-Mesh sorgt für Transparenz in der Art und Weise, wie wichtige Anwendungsdienste bereitgestellt werden, sodass Sie ihr Verhalten verfolgen können.
Verschlüsselung. Ein Service-Mesh verwaltet Schlüssel, Zertifikate und die TLS-Konfiguration, um eine kontinuierliche Verschlüsselung zu gewährleisten, die Sie nicht im Stich lässt. Benutzer müssen keine Verschlüsselung mehr implementieren oder Zertifikate verwalten. Diese Pflichten werden stattdessen vom App-Entwickler auf die Framework-Ebene verlagert.

Wie funktioniert eine Service-Mesh-Architektur?
Ein Service-Mesh bietet eine Sammlung von leichten Proxys, die zusammen mit Containern arbeiten. Jeder Proxy dient als Gateway zu Interaktionen zwischen den Containern. Der Proxy erleichtert die Anforderung über das Service-Mesh an die entsprechenden nachgeschalteten Container, die die Anforderung bearbeiten, wobei im Wesentlichen die Logik für die Service-zu-Service-Kommunikation aus einzelnen Service herausgenommen und auf eine Infrastrukturschicht abstrahiert wird.
Zu diesem Zweck wird ein Service-Mesh als eine Sammlung von Netzwerk-Proxys in eine App integriert. Der Controller in der Steuerungsebene verwaltet die Verbindungen zwischen den Proxys. Der Controller ermöglicht den Zugriff auf die Kontrollrichtlinien und sammelt Metriken von Containern. In einem Service-Mesh werden Anforderungen zwischen Microservices über Proxys in ihrer eigenen Infrastrukturschicht weitergeleitet. Aus diesem Grund werden einzelne Proxys, die ein Service-Mesh bilden, manchmal als „Sidecars“ (Beiwagen) bezeichnet, da sie parallel zu den einzelnen Services und nicht in ihnen ausgeführt werden. In Verbindung bilden diese von den einzelnen Services entkoppelten „Sidecar“-Proxys ein Mesh-Netzwerk.
Komponenten eines Service-Mesh
Service Discovery
Proxys bilden den Weg für die Kommunikation zwischen Microservices und anderen Anwendungen. Die Erkennung erfolgt dynamisch, wenn neue Replikate hinzugefügt oder entfernt werden.
Service-Mesh-Routing
Leichte Service-Mesh-Proxys verfügen über integrierte intelligente Routing-Mechanismen, die dazu beitragen, die besten Routen für Abfragen bereitzustellen. Das Routing erfolgt dynamisch zwischen Services.
Service-Mesh-Beobachtbarkeit
Moderne Service-Meshes verfügen über Komponenten in der Steuerungsebene, die bei der Protokollierung, Nachverfolgung von Anforderungen und Antworten zwischen Services, Überwachung und Alarmierung helfen. Ausfallmuster werden über Dashboards erkannt.
Service-Mesh-Sicherheit
Service-Meshes ermöglichen Authentifizierung, Autorisierung und Verschlüsselung der Kommunikation zwischen Services.
Bereitstellung eines optimierten Erlebnisses
Bei der Erstellung eines Service-Netzes sollten Sie separate, zweckmäßige Apps erstellen, die in Design, Funktion und Fähigkeiten auf die Arbeitsabläufe der einzelnen Personas und Modalitäten abgestimmt sind. Damit können Sie zweckgebunden entwickelte Anwendungen erstellen, die einfacher zu entwerfen, zu entwickeln und bereitzustellen sind. Darüber hinaus kann sich die Anwendung stärker auf den Kanal konzentrieren, den der Benutzer bei der Ausführung einer Aufgabe bevorzugt, unabhängig davon, ob es sich um eine webbasierte Anwendung handelt, die mit einem Laptop, einer mobilen App auf einem Smartphone oder auf einer herkömmlichen Oberfläche ausgeführt wird.
Der Entwurf eines Service-Mesh, das mehrere Funktionen und Erlebnisse unterstützt, erfordert ein flexibles Backend, um die verschiedenen Funktionen und Workflows für jede verwendete Anwendung zu unterstützen. Das Backend muss ein kontinuierliches Erlebnis bieten. Daher muss es bei der Implementierung so zusammengestellt werden, dass es die spezifischen Anforderungen einer optimierten, für den Zweck geeigneten App unterstützt. Eine bestimmte Art von Backend, „Backends for Frontends“ (auch bekannt als BFF), unterstützt benutzerdefinierte Workflows für diese optimierten Apps. Die Services müssen auch auf eine bestimmte Benutzererfahrung abgestimmt sein. Dieses Modell ermöglicht den Entwicklungsteams, schnell neue Frontends zu implementieren, um neue Akteure oder Geräte zu unterstützen, ohne andere Apps oder Services zu beeinträchtigen.

Anwendungsfälle für Service-Meshes
Blau-Grün-Bereitstellungen
Wenn es um Websites geht, insbesondere um Websites, die für den E-Commerce bestimmt sind, wirkt sich jede Sekunde Ausfallzeit direkt auf den Umsatz aus. Mit Blau-Grün-Bereitstellungen können Sie komplexe Aktualisierungen Ihrer Anwendungen durchführen, ohne teure Serviceausfälle zu verursachen. Obwohl es viele Arten von Blau-Grün-Bereitstellungen gibt, folgen sie alle demselben Muster:
- Website Blau läuft mit Live-Verkehr.
- Eine aktualisierte Version der Website (Website Grün) wird bereitgestellt und getestet, während der Verkehr noch auf Website Blau fließt.
- Die Bereitstellung erfolgt, ein kleiner Teil des Live-Verkehrs wird auf Website Grün umgeleitet (und Sie stellen fest, dass alles ordnungsgemäß funktioniert).
- Der Verkehr auf Website Grün wird ganz allmählich erhöht, da der Verkehr auf Website Blau abnimmt. Dies wird fortgesetzt, bis DER GESAMTE Verkehr auf Website Grün umgeleitet wird.
- Website Blau wird heruntergefahren.
Indem Sie den Verkehr auf die neue Site ganz allmählich erhöhen, anstatt alles gleichzeitig zu aktualisieren, geben Sie Ihrem Betriebsteam die Möglichkeit, Änderungen rückgängig zu machen, bevor es zu systemweiten Konsequenzen kommt. Dies ist besonders nützlich in Fällen, in denen der zu aktualisierende Service komplexe Abhängigkeiten von anderen Services aufweist.
Ein Service-Mesh ist eine besonders geeignete Technologie für die Durchführung von Blau-Grün-Bereitstellungen, da es die Kontrolle über den gesamten Datenverkehr zwischen den Diensten und eine zentrale Stelle für die Verwaltung der Implementierungen und die Überwachung des globalen Systemzustands bietet.
Optimierung der Kommunikation
Jeder neue Service, der einer App hinzugefügt wird, oder jede neue Instanz eines vorhandenen Services, der in einem Container ausgeführt wird, verkompliziert die Kommunikationsumgebung und führt neue Fehlerquellen ein. In einer komplexen Microservices-Architektur kann es ohne die Lokalisierung eines Service-Mesh umständlich und fast unmöglich werden, festzustellen, wo Probleme aufgetreten sind.
Das liegt daran, dass ein Service-Mesh auch jeden Aspekt der Service-to-Service-Kommunikation als Leistungsmetrik erfasst. Mit der Zeit können die durch das Dienstnetz sichtbar gemachten Daten auf die Regeln für die Service-übergreifende Kommunikation angewendet werden, was zu effizienteren und zuverlässigeren Serviceanfragen führt.
Wenn zum Beispiel ein bestimmter Service fehlschlägt, kann ein Service-Mesh Daten darüber sammeln, wie lange es dauerte, bis ein erneuter Versuch erfolgreich war. Wenn sich die Daten über die Ausfallzeiten für einen bestimmten Service verdichten, können Regeln geschrieben werden, um die optimale Wartezeit vor dem erneuten Versuch dieses Services zu bestimmen und so sicherzustellen, dass das System nicht durch unnötige Wiederholungen überlastet wird.