Brauchen asynchrone Microservices und Self-Contained Systems ein Service-Mesh?

Service-Meshes entwickeln sich zu einer Standard-Infrastrukturkomponente. Deshalb ist es nicht zu früh, ihr Potenzial abseits klassischer Microservices-Architekturen abzutasten.

Architektur/Methoden  –  17 Kommentare

Mancher Entwickler staunt über die Geschwindigkeit, in der Tools, Techniken und Frameworks im JavaScript- und Webumfeld erscheinen. Aber mittlerweile stehen die neuen Ideen und Techniken, die aus dem Bereich der Infrastruktur hervorsprudeln, dem Tempo in nichts nach. Ob man das aufregend oder anstrengend findet – es hilft nichts: Früher oder später muss man sich mit aktuellen Ideen wie Service-Meshes beschäftigen. Denn die vielen Verbesserungen durch Automatisierung, um die es letztlich geht, möchte sich niemand entgehen lassen.

Microservices – schön und gut, aber ...

Eine Microservice-Architektur teilt eine Anwendung entlang fachlicher Grenzen in Module, die bis in den Betrieb erhalten bleiben. Netzwerkverbindungen integrieren die einzelnen Microservices erst zur Laufzeit. Damit sind sie nicht nur logisch, sondern ebenso technisch voneinander entkoppelt. Neben der freien Wahl der Methoden und einer einfacheren organisatorischen und technischen Skalierbarkeit ist die schnelle Auslieferung von Software das wichtigste Argument für Microservices.

Microservices haben aber auch viele Schwächen, die zum großen Teil mit den Tücken verteilter Systeme einhergehen. Denn auf das Netzwerk ist kein Verlass, weshalb Microservices jederzeit mit Verzögerungen und Ausfällen rechnen müssen, wenn sie darüber kommunizieren. Durch verschachtelte Aufrufe ist die Latenz außerdem viel höher als Methodenaufrufe innerhalb von Monolithen. Sie sind durch die vielen Netzwerkschnittstellen potenziell angreifbarer, weshalb jeder Microservice die Vertrauenswürdigkeit seiner Kommunikationspartner immer überprüfen muss.

Service-Mesh auf dem Herbstcampus

Service-Meshes sind auch auf dem in Nürnberg stattfindenden Herbstcampus ein wichtiges Thema, das sowohl mit Vorträgen als auch mit einem Workshop besetzt ist. Die von heise Developer, iX, Mathema und dpunkt.verlag veranstaltete Konferenz findet vom 3. bis 5. September statt.

Der Betrieb von Microservices ist eine Herausforderung, die jedoch durch Container, Orchestrierern wie Kubernetes und die Cloud beherrschbar geworden ist. Ein Service-Mesh hat darüber hinaus das Potenzial, viele weitere Probleme von Microservices mit einem Streich zu bewältigen. Beispielsweise könnten Service-Meshes das Monitoring und die Widerstandsfähigkeit gegenüber Netzschwankungen oder Ausfälle anderer Services (Resilienz) ebenfalls in die Infrastruktur verlagern. Das entlastet die mit Bibliotheken und zusätzlichem Code überladenen Microservices. Zentrale Infrastrukturkomponenten wie API Gateways, die Aufrufhierarchien aufblähen und die dezentrale Architektur untergraben, könnten dadurch der Vergangenheit angehören.

Jedoch haben sich Microservices-Architekturen inzwischen weiterentwickelt. Anstatt die Nachteile synchroner Aufrufhierarchien zu akzeptieren, fällt die Wahl häufig auf eine asynchrone Kommunikation oder auf Self-contained Systems (SCS), die einige Schwächen von Microservices im Kern vermeiden.