Service Mesh ist ein bekanntes Architekturmuster für die Integration von Microservices und die Umstellung auf die Cloud-Infrastruktur. In der Cloud-Container-Welt ist es heute ziemlich schwierig, darauf zu verzichten. Auf dem Markt sind bereits mehrere Open-Source-Service-Mesh-Implementierungen verfügbar, deren Funktionalität, Zuverlässigkeit und Sicherheit jedoch bei weitem nicht immer ausreichen, insbesondere wenn es um die Anforderungen großer Finanzunternehmen im ganzen Land geht. Aus diesem Grund haben wir bei Sbertech beschlossen, Service Mesh anzupassen und darüber zu sprechen, was in Service Mesh cool ist, was nicht sehr ist und was wir damit machen werden.

Die Popularität der Service Mesh-Vorlage wächst mit der Popularität der Cloud-Technologie. Es handelt sich um eine dedizierte Infrastrukturschicht, die die Interaktion zwischen verschiedenen Netzwerkdiensten vereinfacht. Moderne Cloud-Anwendungen bestehen aus Hunderten und sogar Tausenden solcher Dienste, von denen jeder Tausende von Kopien haben kann.

Die Interaktion zwischen diesen Diensten und ihrer Verwaltung ist eine Schlüsselaufgabe von Service Mesh. Tatsächlich ist dies ein Netzwerkmodell vieler Proxys, die zentral verwaltet werden und eine Reihe sehr nützlicher Funktionen ausführen.
Auf Proxy-Ebene (Datenebene):- Zuweisen und Verteilen von Routing- und Verkehrsausgleichsrichtlinien
- Verteilung von Schlüsseln, Zertifikaten, Token
- Telemetriesammlung, Bildung von Überwachungsmetriken
- Integration in die Sicherheits- und Überwachungsinfrastruktur
Auf der Ebene der Steuerebene:- Wenden Sie Routing- und Verkehrsausgleichsrichtlinien an
- Management von Wiederholungsversuchen und Zeitüberschreitungen, Definition von "toten" Knoten (Unterbrechung des Stromkreises), Management von Fehlersituationen (Injizieren von Fehlern) und Aufrechterhaltung der Ausfallsicherheit von Diensten durch andere Mechanismen
- Anrufauthentifizierung / -autorisierung
- Verwerfen von Metriken (Beobachtbarkeit)
Der Anwenderkreis, der an der Entwicklung dieser Technologie interessiert ist, ist sehr groß - von kleinen Startups bis zu großen Internetunternehmen, beispielsweise PayPal.
Wofür ist Service Mesh im Unternehmenssektor?
Die Verwendung von Service Mesh bietet viele offensichtliche Vorteile. Erstens ist es für Entwickler nur praktisch: Es wird
eine Technologieplattform zum Schreiben von Code
angezeigt , die die Integration in die Cloud-Infrastruktur erheblich vereinfacht, da die Transportschicht vollständig von der Anwendungslogik isoliert ist.
Darüber hinaus
vereinfacht Service Mesh die Beziehung zwischen Lieferanten und Verbrauchern. Heutzutage ist es für Anbieter und Verbraucher der API viel einfacher, Schnittstellen und Verträge selbst zu vereinbaren, ohne dafür einen speziellen Integrationsvermittler und Schiedsrichter einzubeziehen - einen Corporate Service Bus. Dieser Ansatz wirkt sich erheblich auf zwei Indikatoren aus. Die Geschwindigkeit, mit der neue Funktionen auf den Markt gebracht werden (Time-to-Market), steigt, gleichzeitig steigen jedoch auch die Kosten für die Lösung, da die Integration unabhängig erfolgen muss. Die Verwendung von Service Mesh durch Geschäftsentwicklungsteams trägt hier zur Aufrechterhaltung des Gleichgewichts bei. Infolgedessen können sich API-Anbieter ausschließlich auf die Anwendungskomponente ihres Dienstes konzentrieren und diese einfach im Dienstnetz veröffentlichen. Die API wird sofort für alle Kunden verfügbar, und die Integrationsqualität ist produktionsbereit und erfordert keine einzige Zeile zusätzlichen Codes.
Ein weiterer Vorteil ist, dass sich der
Entwickler, der das Service Mesh verwendet, ausschließlich auf die Geschäftsfunktionalität konzentriert - auf das Produkt und nicht auf die technologische Komponente seines Service. Sie müssen beispielsweise nicht daran denken, dass in einer Situation, in der der Dienst über das Netzwerk aufgerufen wird, die Verbindung möglicherweise unterbrochen wird. Darüber hinaus hilft Service Mesh dabei, den Datenverkehr zwischen Kopien desselben Dienstes auszugleichen: Wenn eine der Kopien "gestorben" ist, schaltet das System den gesamten Datenverkehr auf die verbleibenden Live-Kopien um.
Service Mesh ist
eine gute Grundlage für die Erstellung verteilter Anwendungen , die dem Kunden die Details der internen und externen Bereitstellung von Anrufen für seine Dienste verbirgt. Alle Anwendungen, die Service Mesh verwenden, sind auf der Transportschicht sowohl vom Netzwerk als auch voneinander isoliert: Es besteht keine Verbindung zwischen ihnen. In diesem Fall erhält der Entwickler die volle Kontrolle über seine Dienste.
Es ist zu beachten, dass das
Aktualisieren verteilter Anwendungen in einer Umgebung, in der Service Mesh verwendet wird, immer einfacher wird. Beispiel: Blau / Grün-Bereitstellung, in der zwei Anwendungsumgebungen für die Installation verfügbar sind, von denen eine nicht aktualisiert wird und sich im Standby-Modus befindet. Das Rollback auf die vorherige Version im Falle einer nicht erfolgreichen Freigabe wird von einem speziellen Router ausgeführt, dessen Rolle Service Mesh perfekt bewältigt
. Sie können die
kanarische Version verwenden , um sie in der neuen Version auszuführen. Schalten Sie nur 10% des Datenverkehrs oder der Anforderungen der Pilot-Client-Gruppe auf die neue Version um. Der Hauptverkehr geht zur alten Version, nichts bricht.
Service Mesh bietet uns auch Echtzeit-SLA-Kontrolle . Das System der verteilten Proxys erlaubt es nicht, den Dienst zu überfluten, wenn einer der Clients das ihm erteilte Kontingent überschreitet. Wenn die API-Bandbreite begrenzt ist, kann niemand sie mit einer großen Anzahl von Transaktionen erwürgen: Das Service Mesh befindet sich vor dem Service und lässt keinen zusätzlichen Datenverkehr zu. Es wird einfach in der Integrationsschicht abgeschaltet, und die Dienste selbst werden weiterhin funktionieren, ohne es zu bemerken.
Wenn das Unternehmen die Kosten für die Entwicklung von Integrationslösungen senken möchte, hilft Service Mesh ebenfalls:
Sie können von kommerziellen Produkten auf die Open-Source-Version umsteigen . Unser Enterprise Service Mesh basiert auf der Open-Source-Version von Service Mesh.
Ein weiterer Vorteil ist die
Verfügbarkeit eines einzigen vollwertigen Satzes von Integrationsdiensten . Da die gesamte Integration über diese Zwischenschicht erfolgt, können wir den gesamten Integrationsverkehr und die Verbindungen zwischen den Anwendungen verwalten, die den Geschäftskern des Unternehmens bilden. Es ist sehr bequem.
Schließlich
treibt Service Mesh das Unternehmen zum Übergang zu einer dynamischen Infrastruktur. Jetzt streben viele nach Containerisierung. Wenn man einen Monolithen in Microservices zerlegt, ist es schön, alles zu implementieren - das Thema ist auf dem Vormarsch. Wenn Sie jedoch versuchen, ein System, das seit vielen Jahren in Produktion ist, auf eine neue Spur zu übertragen, treten sofort eine Reihe von Problemen auf: Es ist nicht einfach, alles in Container zu verschieben und auf der Plattform bereitzustellen. Die Implementierung, Synchronisation und Interaktion dieser verteilten Komponenten ist ein weiteres schwieriges Thema. Wie werden sie miteinander kommunizieren? Wird es kaskadierende Fehler geben? Mit Service Mesh können Sie einige dieser Probleme lösen und die Migration von der alten auf die neue Architektur erleichtern, da Sie die Logik des Netzwerkaustauschs vergessen können.
Warum Service Mesh anpassen?
In unserem Unternehmen existieren Hunderte von Systemen und Modulen gleichzeitig, und die Laufzeit ist sehr voll. Ein einfaches Muster, wenn ein System ein anderes anruft und eine Antwort erhält, reicht also nicht aus, weil wir in der Produktion mehr wollen. Was benötigen Sie mehr von einem Corporate Service Mesh?

Ereignisverarbeitungsdienst
Stellen Sie sich vor, wir müssen eine Echtzeit-Ereignisverarbeitung durchführen - ein System, das die Aktionen des Kunden in Echtzeit analysiert und ihm sofort ein relevantes Angebot unterbreiten kann. Um diese Funktionalität zu implementieren, wird ein
Architekturmuster verwendet, das als ereignisgesteuerte Architektur (EDA) bezeichnet wird . Keines der relevanten Service Mesh unterstützt solche Muster von Haus aus, aber dies ist sehr wichtig, insbesondere für die Bank!
Es ist seltsam, dass der Remote Procedure Call (RPC) alle Versionen des Service Mesh unterstützt und sie nicht mit EDA befreundet sind. Weil Service Mesh ein Anschein moderner verteilter Integration ist und EDA ein sehr relevantes Architekturmuster ist, mit dem Sie einzigartige Dinge in Bezug auf das Kundenerlebnis tun können.
Unser Enterprise Service Mesh sollte dieses Problem lösen. Darüber hinaus möchten wir die Implementierung von garantierter Zustellung, Streaming und integrierter Ereignisverarbeitung unter Verwendung einer Vielzahl von Filtern und Vorlagen sehen.
Dateiübertragungsdienst
Neben EDA wäre es schön, Dateien übertragen zu können: Im Enterprise-Maßstab ist sehr oft nur die Dateiintegration möglich. Insbesondere wird das architektonische ETL-Muster verwendet (Extrahieren, Transformieren, Laden - „Extrahieren, Transformieren, Laden“). Darin tauscht in der Regel jeder ausschließlich Dateien aus: Sie verwenden Big Data, was unpraktisch ist, um separate Anforderungen einzugeben. Die Möglichkeit, Dateiübertragungen im Enterprise Service Mesh nativ zu unterstützen, bietet Ihnen die Flexibilität, die Sie für Ihr Unternehmen benötigen.
Orchestrierungsservice
In großen Organisationen gibt es fast immer unterschiedliche Teams, die unterschiedliche Produkte herstellen. In einer Bank arbeiten beispielsweise einige Teams mit Einlagen, während andere mit Kreditprodukten arbeiten, und es gibt viele solcher Fälle. Dies sind verschiedene Personen, verschiedene Teams, die ihre Produkte herstellen, ihre APIs entwickeln und sie anderen zur Verfügung stellen. Und sehr oft besteht Bedarf an der Zusammensetzung dieser Dienste sowie an der Implementierung der komplexen Logik des sequentiellen Aufrufs des API-Satzes. Um dieses Problem zu lösen, wird in der Integrationsschicht eine Lösung benötigt, die die gesamte zusammengesetzte Logik vereinfacht (Aufrufen mehrerer APIs, Beschreiben der Route von Anforderungen usw.). Dies ist der Orchestrierungsdienst im Enterprise Service Mesh.
AI und ML
Wenn Microservices über eine einzige Integrationsschicht kommunizieren, weiß Service Mesh natürlich alles über die Aufrufe der einzelnen Services. Wir sammeln Telemetrie: Wer hat wen angerufen, wann, wie lange, wie oft und so weiter. Wenn es Hunderttausende dieser Dienste und Milliarden von Anrufen gibt, sammelt sich all dies an und bildet Big Data. Diese Daten können mithilfe von KI, maschinellem Lernen usw. analysiert werden und dann basierend auf den Ergebnissen der Analyse einige nützliche Dinge tun. Es wäre angebracht, die Verwaltung des gesamten in das Service Mesh integrierten Netzwerkverkehrs und der Anwendungsaufrufe zumindest teilweise auf die künstliche Intelligenz zu übertragen.
API-Gateway-Dienst
In der Regel verfügt Service Mesh über Proxys und Services, die innerhalb des vertrauenswürdigen Perimeters aufeinander zugreifen. Es gibt aber auch externe Gegenparteien. Die API-Anforderungen für diese Verbrauchergruppe sind viel schwerwiegender. Wir teilen diese Aufgabe in zwei Hauptteile.
- Sicherheit Probleme im Zusammenhang mit ddos, Verwundbarkeit von Protokollen, Anwendungen, Betriebssystemen usw.
- Die Skala . Wenn die API-Rechnung, die den Kunden ausgehändigt werden muss, an Tausende oder sogar Hunderttausende geht, sind einige Mittel zum Verwalten dieses Satzes von APIs erforderlich. Sie müssen die API ständig überwachen: Funktionieren sie oder nicht, in welchem Status, welcher Datenverkehr läuft, welche Statistiken usw. Das API-Gateway muss diese Aufgabe übernehmen, damit der gesamte Prozess verwaltet und sicher ist. Dank dieser Komponente lernt das Enterprise Service Mesh, sowohl die internen als auch die externen APIs ohne allzu große Schwierigkeiten zu veröffentlichen.
Support-Service für bestimmte Protokolle und Datenformate (AS-Gateway)
Derzeit können die meisten Service Mesh-Lösungen nur nativ mit HTTP- und HTTP2-Verkehr oder im abgeschnittenen Modus auf TCP / IP-Ebene arbeiten. Das Enterprise Service Mesh verfügt über viele andere sehr spezifische Datenübertragungsprotokolle. Einige Systeme verwenden möglicherweise Nachrichtenbroker, andere sind auf Datenbankebene integriert. Wenn das Unternehmen über SAP verfügt, kann es auch ein eigenes Integrationssystem verwenden. Und das alles funktioniert und ist ein wichtiger Teil des Geschäfts.
Sie können nicht einfach sagen: "Lassen Sie uns das Erbe aufgeben und neue Systeme erstellen, die das Service Mesh verwenden können." Um mit allen alten Systemen neue zu finden (in Bezug auf die Microservice-Architektur), benötigen Systeme, die Service Mesh verwenden können, einen Adapter, einen Vermittler und ein Gateway. Stimmen Sie zu, es wäre schön, wenn es zusammen mit dem Service in einer Box geliefert würde. Das AS-Gateway kann jede Integrationsoption unterstützen. Stellen Sie sich vor, Sie installieren einfach das Enterprise Service Mesh und es ist bereit, mit allen benötigten Protokollen zu interagieren. Für uns ist dieser Ansatz sehr wichtig.
So präsentieren wir die Unternehmensversion von Service Mesh (Enterprise Service Mesh). Die beschriebene Anpassung löst die meisten Probleme, die beim Versuch auftreten, vorgefertigte Open-Source-Versionen der Integrationsplattform zu verwenden. Die Service Mesh-Architektur, die erst vor ein paar Jahren aufgetaucht ist, entwickelt sich weiter und wir sind froh, dass wir zu ihrer Entwicklung beitragen können. Wir hoffen, dass unsere Erfahrung für Sie nützlich sein wird.