Zuerst waren es „Anwendungen überall und für alles“ , dann waren es Microservices (und die Containertechnologien, die sie ermöglichen). Welche Innovation wird als Nächstes dazu beitragen, mithilfe von Apps ein herausragendes Benutzererlebnis zu bieten? Service-Netz.
Der Microservices-Ansatz basiert auf kleinen, zweckgebundenen Komponenten, aus denen größere, komplexere Anwendungen gebildet werden. Sie können für praktisch alles einen Microservice erstellen und da sich jeder auf eine einzelne Funktion konzentriert, lässt er sich relativ schnell entwickeln. Je mehr Funktionen Sie jedoch wünschen, desto komplexer wird die Koordination der Microservice-Komponenten.
Die Entwicklung herkömmlicher Anwendungen (manchmal auch monolithische Anwendungen genannt) dauert zwar länger, bietet aber Vorteile. Da viele separate Funktionen von einem einzigen Programm ausgeführt werden, ist die Koordination zwischen den Komponenten im Allgemeinen in das System integriert. Es gibt nur eine einzige Codequelle, was die Fehlersuche und Fehlerbehebung bei herkömmlichen Apps erleichtert.
Ein Service Mesh ist eine transparente Infrastrukturschicht, die die Kommunikation zwischen Microservices erleichtert . Dadurch verfügen mit Microservices erstellte Apps über dieselben Vorteile wie herkömmliche Apps, beispielsweise Ausfallsicherheit, Beobachtbarkeit und Sicherheit.
Der Wechsel vom Monolithen zu Microservices war vor allem auf die Notwendigkeit zurückzuführen, dass Anwendungsteams agiler sein und schneller reagieren mussten. Durch die Reduzierung einer großen Anwendung in viele kleine Elemente konnten sich einzelne Teams spezialisieren. Dadurch konnten sie schneller iterieren, als wenn sie sich um jeden Aspekt des Monolithen hätten kümmern müssen.
Allerdings hat diese Geschwindigkeit und Agilität ihren Preis: eine erhöhte Komplexität. Microservices vereinfachen die Entwicklung, bringen jedoch neue Herausforderungen mit sich, insbesondere im Hinblick auf die Sicherung und Orchestrierung mehrerer kurzlebiger Komponenten. Service Mesh ist für Entwickler eine Möglichkeit, die Komplexität bei der Skalierung von Microservices-fähigen Anwendungen zu reduzieren .
In einem kürzlich erschienenen Podcast drückte es Andrew Jenkins, Mitbegründer und CTO von Aspen Mesh , folgendermaßen aus: „In einer Service-Mesh-Umgebung besteht die größte Veränderung nicht darin, was App-Entwickler tun müssen, sondern in all den Dingen, die sie nicht tun sollen.“ Beispielsweise sorgt die Sicherheitskomponente eines Service Mesh für die Authentifizierung und verwaltet, ob eine Anwendung einer anderen vertraut. Wenn eine Anforderung fehlschlägt, verfügt der Plattformbetreiber über die entsprechenden Tools, um festzulegen, ob der Microservice einen erneuten Versuch startet oder abgebrochen wird.
In dieser neuen Umgebung können sich die Entwickler darauf konzentrieren, Anfragen bis auf die Service-Mesh-Ebene zu übermitteln. Der Plattformbetreiber kann dem App-Entwickler eine völlig neue Palette an Daten und Messwerten anbieten, da er Zugriff auf Tools hat, die die gesamte Kommunikation zwischen Microservices überwachen. „In einem Service Mesh müssen Sie den Fehler nur an einer Stelle beheben, und dann ist er überall behoben. „Diese Geschichte der Beständigkeit taucht immer wieder auf“, sagt Jenkins.
Stellen Sie sich Service Mesh als eine leistungsstarke neue Toolbox vor. Es gibt Tools für Sicherheit, Transaktionsverarbeitung, Verschlüsselung, Empfehlungsmaschinen, verteiltes Tracing … die Liste geht noch weiter. Aber leistungsstarke Tools helfen Ihnen nicht, wenn Sie nicht wissen, wie Sie sie verwenden sollen. Erfolgreiche Early Adopter von Service Mesh benötigen eine starke Cloud-Architekturpraxis und ein Plattformteam mit Erfahrung in der Definition von Infrastrukturdiensten für Entwickler.
Viele Organisationen betreiben Kubernetes und andere Containertechnologien erfolgreich ohne Service Mesh. Standardimplementierungen von Kubernetes beheben integrierte Bereitstellungsprobleme sehr gut. Allerdings entwickeln Kubernetes-Anwendungen im großen Maßstab Laufzeitprobleme, die nicht so gut berücksichtigt werden, beispielsweise Probleme wie Verschlüsselung, Unterbrechung der Stromkreise und dynamische Verkehrsführung. Lösungen wie NGINX und andere Container-Ingress-Lösungen füllen einen Großteil dieser Lücke, indem sie Möglichkeiten bieten, den Netzwerkverkehr beim Eintreffen in einer Anwendung zu erfassen, zu formen, zu steuern und zu visualisieren. Wenn Entwickler jedoch an die Grenzen dessen stoßen, was diese Tools leisten können, verspricht Service Mesh eine neue Ebene der Transparenz hinsichtlich der Leistungsfähigkeit containerisierter Microservices.
Derzeit ist Service Mesh immer noch hochaktuell. Für Organisationen, die bereits voll auf Kubernetes setzen oder eine Entwicklung mit Kubernetes planen, ist es einfacher, ein Service Mesh frühzeitig zu implementieren, als es erst später zu integrieren. Wenn Sie Kubernetes skalieren und den Verwaltungsaufwand minimieren möchten, benötigen Sie ein Service Mesh.
Für Organisationen mit komplexen Sicherheitsanforderungen oder solche, die in hohem Maße auf aus Microservices abgeleitete Anwendungen angewiesen sind, kann ein Service Mesh die Bereitstellung und Wartung beschleunigen, die Sicherheit erhöhen und zur Optimierung des Ressourcenverbrauchs beitragen. Service-Mesh-Umgebungen erhöhen die Sichtbarkeit und liefern Daten auf Mikro- und Makroebene, die zur Optimierung von Anwendungen verwendet werden können.
Service Mesh ist die nächste Weiterentwicklungsstufe für Microservices- und Containertechnologien. Mit der richtigen Strategie kann es ein wirkungsvolles Werkzeug sein.