Schlank und schnell: Dies versprechen Architekturmodelle, die Applikationen in kleine Teile (Microservices) zerlegen, welche wiederum in einer schlanken virtuellen Umgebung (Container) untergebracht sind. Der grosse Vorteil ist, dass durch diese verteilten Architekturen die Entwicklungs- und Testprozesse beschleunigt werden können.
Doch es gibt auch Schattenseiten – eine davon ist die Komplexität solcher Systeme. Denn wenn die Applikation auf mehrere Microservices verteilt wird, kann deren Kommunikation untereinander sowie Netzwerkprobleme schnell zu einem Albtraum werden. Mit einem Service Mesh wird hier der Infrastruktur-Layer abstrahiert, sodass die Business-Logik von der Infrastruktur getrennt werden kann.
Was ist ein Service Mesh?
Mit einem Service Mesh werden Microservices nahtlos verbunden, verwaltet und geschützt – unabhängig von Plattform, Quelle oder Anbieter. Der Service Mesh stellt verschiedene Querschnittsfunktionen bereit, die er zentral verwaltet: Authentifizierung, Autorisierung, Transport und Routing sowie Verschlüsselung der Kommunikation, Telemetrie, Monitoring und Logging.
Der Service Mesh ermöglicht es, die Kommunikation zwischen Microservices sehr detailliert und dynamisch zu steuern, abzusichern und zu überwachen, ohne dass der Code für die Business-Logik der einzelnen Services angepasst werden muss. Möglich ist dies durch den Einsatz von Proxies mit einem sogenannten «Sidecar» Pattern. Dabei erhält jeder Service sozusagen als Beiwagen einen eigenen Proxy, der die eingehende und ausgehende Kommunikation vom eigentlichen Business-Code abstrahiert und anhand von zentral verwalteten Konfigurationen und Regeln weiterleitet.
Bis jetzt ist Istio der wohl prominenteste Service Mesh, eine Open-Source-Initiative von Google, IBM und Lyft. Es gibt allerdings auch andere Vertreter, wie z.B. LinkerD oder Consul.
«Sobald ich mehrere Microservices habe, die untereinander kommunizieren, ist der Einsatz eines Service Mesh sinnvoll. Gerade bei Themen wie zentralem Logging oder Tracing bringt er eine Entlastung», so Jan Moser, Senior Software Architekt bei bbv. «Hinzu kommen Vorteile wie Timeout Handling oder Resilience Pattern und die Möglichkeit, Test-Cases einfach zu konfigurieren, ohne dass sich mein Microservice um solche Infrastruktur-Themen kümmern muss.» Der besondere Pluspunkt hier liege in der Funktion, dass Infrastruktur-Themen wie die oben genannten (Transport, Verschlüsselung, Zugriff, Resilienz etc.) einmalig zentral gelöst und konfiguriert werden, und danach diese via Sidecar Pattern mit dem eigentlichen Business-Code «verschmolzen» werden. So können projekt- und domänenübergreifend Service Mesh Sidecars an verschiedene Microservices gekoppelt werden.
Aber nicht nur Kunden, die bereits Microservices einsetzen, profitieren von einem Service Mesh. Unter dem Gesichtspunkt der Software-Modernisierung sind sie auch bei älteren Systemen einsetzbar: «Wenn zum Beispiel eine Legacy-Komponente über ein spezifisches Protokoll oder eine veraltete Programmiersprache verfügt, kann ich diese trotzdem mit einem Proxy ansprechen, ohne die gesamte Architektur darauf anpassen zu müssen», führt Jan Moser aus.
Weniger Komplexität und mehr Speed
Mit einem Service Mesh können sich Entwickler auf die Entwicklung der Business-Logik konzentrieren, ohne sich gross um Themen wie Datentransport, Verschlüsselung etc. kümmern zu müssen. Durch eine zentralisierte Verteilung und Konfiguration von Sidecar Proxies kann zudem sichergestellt werden, dass Firmenstandards in gerade diesen heiklen Themengebieten eingehalten und keine «Eigenbau-Konstrukte» verwendet werden. Kombiniert mit einem hohen Grad an Automatisierung und Methoden wie DevOps, lässt sich so deutlich mehr Speed und Qualität in der Entwicklung solcher Microservices-Architekturen erreichen.
Der Experte
Jan Moser
Jan Moser war Software-Architekt bei bbv. Als Teamworker liebte er es, herausfordernde und spannende Projekte gemeinsam mit dem Kunden zum Erfolg zu bringen. Dazu behielt er die neuesten Technologietrends genau im Auge – und fühlte sich an den bbv-Standorten in der Schweiz und in Vietnam zu Hause.