Eine Übersetzung des Artikels wurde speziell für Studenten des Kurses Kubernetes Based Infrastructure Platform erstellt .
Wenn Sie in den letzten Jahren Trends in verteilten und Cloud-Architekturen gefolgt sind, haben Sie wahrscheinlich mehr als einmal von Microservices gehört. Sie sind vor einigen Jahren aufgetaucht, und seitdem hat ihre Rolle bei der Bereitstellung von Unternehmens-Clouds nur noch zugenommen. Immer mehr Unternehmen wechseln zu Microservices und geben dies in ihren Veröffentlichungen und Pressemitteilungen an.
Ihre Wahl ist gerechtfertigt, aber nur wenige sagen, was hinter einem solchen Übergang steckt. Bei richtiger Implementierung lösen Microservices viele Probleme der monolithischen Architektur: Sie lassen sich leicht iterieren und in Gruppen aufteilen, und der Code lässt sich leicht in verwaltete Komponenten aufteilen. In den meisten Veröffentlichungen gibt es jedoch kein Wort über die anschließende Arbeit mit Mikrodiensten und Werkzeugen, die für ihren effektiven Einsatz erforderlich sind.
Heute schauen wir hinter die Kulissen und sehen, was ein Servicegitter ist, wie diese Technologie zur Lösung von Problemen mit der Mikroservice-Architektur beiträgt und die Arbeit der Entwickler vereinfacht. Ich hoffe, Sie erhalten eine detaillierte Vorstellung von seiner Rolle bei der Bereitstellung von Mikrodiensten.
Was ist ein Servicegitter?
Service Mesh (die Begriffe "Microservice Network", "Mesh-Network of Microservices" werden auch verwendet) sind eine abstrakte Infrastrukturebene, die die Interaktion zwischen Microservices einer Anwendung definiert. Die Technologie verwendet Netzwerkverbindungen zwischen Containern, um die Interaktion verschiedener Anwendungskomponenten zu steuern. Es klingt ziemlich abstrakt, ist aber ein sehr praktisches Konzept. Container interagieren über das Netzwerk. Wenn Sie also die Topologie des Netzwerks ändern, können Sie die Reihenfolge ändern, in der Container interagieren.

Effektive Zusammenarbeit spielt bei Microservices eine Schlüsselrolle. Das Verwalten dieser Interaktion mit dem Servicegitter bietet viele Vorteile. Wenn Sie also neue Versionen von Komponenten bereitstellen, können Sie Netzwerkgeräte ohne zusätzliche Konfiguration sofort von alten auf neue umschalten. Wenn Sie Probleme mit der Skalierung haben, können Sie den Datenverkehr über das
Service-Mesh auf verschiedene Load-Balancer umleiten und die Anzahl der Container für Anwendungskomponenten erhöhen.
Ein beliebter Tipp für diejenigen, die mit Microservices arbeiten, lautet: Behandeln Sie die verschiedenen Komponenten der Anwendung als API völlig unterschiedlicher Anbieter.
Mithilfe der Service Mesh- Technologie können Sie dieses Prinzip auf Netzwerkebene implementieren und genau bestimmen, welche Dienste an verschiedenen Netzwerkstandorten verfügbar sind. Wenn Sie einen Dienst verschieben oder ändern, anstatt eine neue Konfiguration bereitzustellen, reicht es aus, die Netzwerkinteraktion zu ändern.
Was gibt es?
Microservices sind wegen ihrer umfassenden Skalierbarkeit beliebt und eignen sich für die Arbeit mit großen Anwendungen, die in leicht verwaltbare Komponenten zerlegt werden können. Im Gegensatz dazu eignen sich monolithische Architekturen in Bereichen, in denen Zentralisierung wichtig ist. In monolithischen Anwendungen ist es einfacher, Ereignisse aufzuzeichnen, da sie am selben Ort ausgeführt werden. Die Versionskontrolle ist ebenfalls unkompliziert, da eine einzelne Instanz überschrieben wird. Es ist nicht verwunderlich, dass viele Entwickler beim Übergang von monolithischen zu Microservice-Architekturen verloren gehen, bei denen es keinen einzigen Ort für das Journaling gibt und es schwieriger ist, die erforderlichen Versionen von Komponenten auszuwählen.

Der Vorteil der
Service-Mesh- Technologie besteht darin, dass sie die Rolle einer zentralen Datenquelle spielt, insbesondere von Daten zu Netzwerkinteraktionen. Betrachten Sie das obige Beispiel für die Bereitstellung einer neuen Version einer Anwendungskomponente. Anstatt alle Container mit der alten Version zu löschen, neue Container mit der neuen Version zu starten und diesen Vorgang für andere verwandte Komponenten zu wiederholen, können Sie steuern, welche Container für andere Container im Netzwerk sichtbar sind.
Dies bedeutet, dass es für die Bereitstellung der neuen Version ausreicht, die neuen Container einfach über DNS als Ziel festzulegen, den neuen Load Balancer als Ziel festzulegen oder die Container zu ändern, auf die der vorhandene Balancer abzielt.
Indem Sie sich auf die Interaktionen zwischen den Komponenten der Anwendung konzentrieren (auf das Mesh-Netzwerk, in dem sie arbeiten), können Sie einen bestimmten Grad an Zentralisierung beibehalten, was die Verwaltung in einer monolithischen Umgebung vereinfacht. Benötigen Sie weitere Informationen zum Datenverkehr in der App? Fügen Sie dem Netzwerk Überwachungsfunktionen zwischen Komponenten hinzu. Möchten Sie die Sicherheit verbessern? Implementieren Sie starke Verschlüsselung und HTTPS. All dies ist dank des
Servicegitters möglich.
Möchten Sie mehr wissen?
In den nächsten Wochen werden wir den Betrieb des Mesh-Netzwerks und seine praktische Anwendung in einigen Bereitstellungsszenarien von Mikrodiensten genauer untersuchen. Wir werden uns auf die wirklichen Vorteile dieser Technologie konzentrieren: effektive Steuerung, Verwaltbarkeit und die Fähigkeit, die Prozesse großer Anwendungen zu überwachen.