Was ist ein Service Mesh?
            

Und warum ist das für die Anwendungsentwicklung wichtig?

Ein Service-Mesh ist ein Tool, das die komplizierte Logik, die regelt, wie Dienste in der Cloud kommunizieren, in eine separate Infrastrukturebene auslagert. Dies ist besonders relevant für Microservices-basierte Anwendungen, die aus einem Netzwerk von Services bestehen, von denen jeder eine bestimmte Geschäftsfunktion ausführt.

Damit Benutzer niemals Ausfallzeiten oder langsame Geschwindigkeit erleben müssen, müssen die Verbindungen zwischen den Diensten, die in verschiedenen Containern laufen, sicher, belastbar und beobachtbar sein. Das übergreifende Ziel dahinter ist felsenfeste Stabilität bei hoher Geschwindigkeit; die Fähigkeit, schnell eine schlüsselfertige Implementierung zu liefern, die die zentralen Cloud-nativen Vorteile der Skalierbarkeit und Agilität beibehält, die Unternehmen für Innovationen benötigen. Da alle Netzwerkbelange von einem Service-Mesh gehandhabt werden, können sich Entwickler auf die Geschäftslogik konzentrieren. 

Warum gibt es Service Mesh?

Die Entstehungsgeschichte von Service Meshes ist eng mit der rasanten Ausbreitung von Microservices-basierten Anwendungen verbunden. 

Betrachten Sie eine traditionelle Anwendung, die viele Dienste auf einer einzigen Plattform ausführt. Es gibt einen einzigen Ort, an dem alle Dienste überwacht werden. Sie können sich gegenseitig leicht aufrufen, da die Adresse immer lokal ist. Aber um eine Änderung an einem einzelnen Dienst vorzunehmen, muss die gesamte Anwendung neu implementiert werden. Die Änderung eines Dienstes kann viele andere (die von ihm abhängen) beschädigen, was eine enge Koordination der Entwickler und umfangreiche Testzyklen vor der Freigabe erfordert. Außerdem schränkt die Anwendung die Tools und Sprachen ein, die den Entwicklern zur Verfügung stehen, was ihre Liefergeschwindigkeit verringert. Dieser Mangel an Flexibilität wird zu einer großen Schwäche, wenn Sie schnell neue innovative Produkte für den Wettbewerb entwickeln müssen.

Darüber hinaus sind herkömmliche Anwendungen in ihrer Skalierbarkeit eingeschränkt. Sie können die Kapazität eines einzelnen Dienstes nicht erhöhen, ohne die Kapazität der gesamten Anwendung zu steigern. Um für Leistungsspitzen bei saisonalen Schwankungen gewappnet zu sein, bauen Unternehmen oft eine große, teure Infrastruktur auf, die aber de facto nur an fünf Tagen im Jahr voll genutzt wird.

Dies führte zum Aufkommen von Microservices-Architektur. Bei dieser neuen Art, Anwendungen zu erstellen, bauen kleine Teams ein Netzwerk von Diensten auf, von denen jeder eine bestimmte Geschäftsanwendung ausführt - z. B. die Inventarabfrage oder die Zahlungsabwicklung. Die Dienste laufen unabhängig voneinander, aber sie kommunizieren miteinander, um Daten anzufordern und Anwendungslogik zu implementieren - zum Beispiel muss der Warenkorb-Dienst mit dem Zahlungsverarbeitungsdienst kommunizieren, um einen Kauf abzuschließen.  Die Möglichkeit, einzelne Teile einer App unabhängig voneinander zu steuern, macht es einfacher, sie schnell zu ändern.  Wenn Sie eine bessere Suchmaschine hinzufügen möchten, können Sie einfach den Microservice ersetzen, der die Suche durchführt - ohne einen kompletten Release-Zyklus für die gesamte Anwendung zu durchlaufen. Bei dieser Art der Skalierbarkeit geht es darum, einzelne Dienste, die mehr Kapazität benötigen, zu replizieren, während der Rest in Ruhe gelassen wird.

Cloud-native Anwendungen basieren auf diesem Microservices-Modell und nutzen die On-Demand-Verfügbarkeit von Hardware in der Cloud von AWS oder Azure, um bei Bedarf schnell neue Dienste aufzusetzen.

Wenn eine Anwendung jedoch in Dutzende oder Hunderte von Teilen aufgeteilt ist, ist es schwieriger, die Kontrolle über sie zu behalten. Die Logik, nach der diese Teile miteinander kommunizieren, wird in der Cloud noch viel komplexer, da es dort viele Sicherheitsrisiken gibt und die Netzwerke instabil sein können. Um sicherzustellen, dass Benutzer niemals Ausfallzeiten oder geringe Geschwindigkeiten erleben, müssen die Verbindungen zwischen den einzelnen Teilen sorgfältig entworfen werden, damit die Anwendung widerstandsfähig ist. Eine Sicherheitsstufe reicht selten aus, um Hacker abzuwehren und private Daten zu schützen. Wenn neue, stärkere Sicherheitsoptionen verfügbar werden, wollen Unternehmen diese so schnell wie möglich übernehmen. Coding für jeden einzelnen Microservice ist aber nicht nachhaltig, wenn Ihre App schnell wächst.

Hier kommt das Service Mesh ins Spiel. Ein Service-Mesh hilft bei grundlegenden Funktionen auf Netzwerkebene, indem es sie in eine separate Infrastrukturebene auslagert.  

Was sind Beispiele für Service Mesh?

Mit einer separaten Infrastrukturebene, die die Kontrolle über die vielen Funktionen übernimmt, die durch Microservices ermöglicht werden, entstanden neue und spannende Anwendungsfälle. Die Möglichkeiten sind endlos, aber stellen Sie sich nur ein paar vor:

  • Sichere Kommunikation: Im Beispiel unserer Einzelhandelsanwendung würde ein Service Mesh eine sichere Netzwerkkommunikation zwischen dem Einkaufswagenservice und dem Zahlungsservice schaffen und die Transaktion auf ihrem Weg durch das Web schützen, ohne dass in jeden Service komplexer Sicherheitscode geschrieben werden muss.
  • Fehlertoleranz: Im Service Mesh könnten Backup-Zahlungsdienste für den Fall bestimmt werden, dass der primäre Zahlungsdienst nicht verfügbar ist, ohne Änderungen am primären Zahlungsdienst.
  • Verkehrssteuerung: In Spitzenzeiten während der Urlaubszeit könnte das Service-Netz dazu beitragen, dass die Anfragen bei voller Kapazität bearbeitet werden, ohne dass der Zahlungsserver überlastet wird.

Durch die Trennung dieser funktionalen Überlegungen von den Zielen von Anwendungen werden diese leichter zu warten und zu betreiben.

Wie funktioniert ein Service Mesh?

Während frühe Service-Mesh-Innovatoren wie Netflix mit lokalisierten, benutzerdefinierten Lösungen begonnen haben, besteht das gängigste Muster bei Service-Mesh-Anbietern heute in der Bereitstellung kleiner Proxys - auch "Sidecars" genannt, weil sie wie ein Motorrad-Beiwagen funktionieren, der mit dem Hauptdienst mitfährt. Die Proxys laufen Seite an Seite und mit jedem Microservice und melden an eine zentrale Verwaltungskonsole zurück. Während der Webverkehr zwischen den Diensten fließt, verfügt jeder Proxy über klare Anweisungen für Routing, Drosselung und Sicherheit, die lokal angewendet werden, wie Verkehrsschilder und Ampeln in Straßennetzen, um sicherzustellen, dass die Online-Fahrzeuge ihr Ziel erreichen. Diese schnelle Echtzeit-Lenkung und -Kontrolle optimiert die Reaktionsfähigkeit der Anwendung.

Der Übergang zur erfolgreichen Bereitstellung von Microservices-basierten Anwendungen geht jedoch über Service Mesh hinaus; es gibt weitere Tools und Konzepte, die ein wesentlicher Bestandteil der neuen Landschaft sind.  Docker und OpenShift bündeln Software in einfach bereitzustellende Pakete, die zusammen mit Service Mesh in Kubernetes-Clustern verwaltet werden. Und keine moderne Methode der Anwendungsbereitstellung ist effektiv ohne die Implementierung von DevOps, einer Philosophie, die Entwicklung und Betrieb zu einem einzigen Team verschmilzt, dem der gesamte Lebenszyklus der Softwareanwendung gehört.

Warum die Vernetzung von Dienstleistungen für Unternehmen wichtig ist

  • Risikominimierung: Die Cloud ist eine Zero-Trust-Umgebung. Aus Sicht der Netzwerksicherheit ist jeder öffentliche Microservice potenziell das schwächste Glied, das die Daten Ihrer Kunden und Ihren Ruf gefährdet. Deshalb ist die Möglichkeit, umfassende Sicherheitsrichtlinien von einer zentralen Stelle aus anzuwenden und diese einfach zu aktualisieren, von entscheidender Bedeutung.
  • Ressourcenkosten: Das Schreiben von Cloud-nativen Anwendungen erfordert Expertenwissen bei den Entwicklern; Wiederholungsversuche, Timeouts, Logging, Application Health sind allesamt entscheidend für den Betrieb in der Cloud. Aber sie bieten keine neuen Funktionen für Ihre Benutzer. Und wenn Sie sie selbst schreiben, laufen Sie Gefahr, Fehler zu machen. Eliminieren Sie diese Arbeit, indem Sie sie an Service Mesh übergeben, und Sie werden viele Stunden an Entwicklerressourcen zurückgewinnen.
  • Ausfallsicherheit: Die massive Verbreitung von mobilen, jederzeit verfügbaren Apps hat die Erwartungen an jede Anwendung auf 100 % Betriebszeit erhöht. Und es wird für Verbraucher immer einfacher, bei einer schlechten Benutzererfahrung zu wechseln. Langsamkeit und Ausfallzeiten sind nicht länger akzeptabel - deshalb ist ein belastbarer, reaktiver Ansatz für die Anwendungsentwicklung unerlässlich. Service Mesh kann Anfragen umleiten und den Datenverkehr drosseln, um Ihren Umsatz zu schützen.

Wo Service Meshes zu kurz greifen

Wenn es um Anwendungen an sich geht, geht Service Mesh nicht weit genug.  Der Schwerpunkt liegt auf der Netzwerkkonnektivität zwischen den Diensten und nicht auf der Anwendung selbst. Wenn sich Anwendungen durchsetzen, müssen sie möglicherweise schnell skaliert und neue Funktionen hinzugefügt werden, um den Geschäftsanforderungen gerecht zu werden. Jede Änderung, die Coding erfordert, verlangsamt Ihren Fortschritt.  Und es kann schwierig sein, Microservices teamübergreifend zu veröffentlichen und wiederzuverwenden, ohne eine Art von zentraler Sichtbarkeit und Governance. 

Es ist klar, dass bei der Weiterentwicklung von Anwendungen die Möglichkeit, Services ohne Code zu personalisieren, zu verbessern und zu steuern, der Weg ist, wie Sie skalieren und schneller entwickeln können.  Statt eines Service Mesh brauchen Sie ein Application Mesh - das WebMethods AppMesh.

AppMesh besteht aus einer Reihe von leichtgewichtigen, leistungsstarken Mikrogateways, die von einer zentralen API Management Platform gesteuert werden. Es gibt Ihnen Einblick in das Verhalten sowohl Ihrer Benutzer als auch Ihrer Microservices auf der Anwendungsebene. Und Sie können diese Microservices genauso einfach wiederverwenden und steuern, wie Sie es mit APIs tun. Es handelt sich um eine ausgeklügelte Service Mesh Architektur, die Ihnen die Möglichkeit gibt, das Verhalten Ihrer Services in Echtzeit zu ändern und erweiterte Richtlinien für die Benutzerautorisierung mit nur einem Knopfdruck anzuwenden.

Und anstatt ein weiteres Tool zu Ihrer Landschaft hinzuzufügen, ist webMethods AppMesh in Ihre API-Verwaltungsschicht eingebettet, so dass Sie nicht nur APIs, sondern auch Microservices und Service Meshes von einer einzigen Stelle aus verwalten können.  Dies ist die Grundlage für die Entwicklung von Cloud-nativen Anwendungen, die Microservices und APIs nutzen.

 

 

ICS JPG PDF WRD XLS