© Jozsef Bagota/Shutterstock.com
Entwickler Magazin
Eine Infrastruktur für Microservices

Service Mesh und Istio

Die Flexibilität und die Geschwindigkeit von Microservices [1], [2] haben den hohen Preis eines verteilten Systems. Während der Betrieb dank Kubernetes kaum herausfordernd ist, müssen andere Funktionen aufwendig mit Bibliotheken implementiert und Werkzeuge für die Datenauswertung installiert werden. Ein Service Mesh wie Istio hilft, indem es viele Funktionen auf die Infrastrukturebene hebt und Analysetools mitbringt.

Hanna Prinz, Eberhard Wolff


Es gibt sehr viele unterschiedliche Technologien für die Implementierung von Microservices-Architekturen [3], [4]. Kubernetes [5] ist gerade für den Betrieb von Microservices eine hervorragende Infrastruktur: Docker-Container laufen nicht mehr auf einzelnen Knoten, sondern im Cluster; das erlaubt Ausfallsicherheit und Skalierung. Außerdem hilft Kubernetes beim Deployment der Anwendungen. Durch Rolling Updates können neue Versionen schrittweise eingeführt werden, indem Container mit der neuen Version gestartet und dann die Container mit der alten Version entfernt werden.

Außerdem ermöglicht Kubernetes Service Discovery: Container können andere Container anhand des DNS-Namens finden. DNS dient auch im Internet zum Auflösen von Hostnamen zu IP-Adressen und hat daher eine breite Unterstützung über viele Programmiersprachen hinweg. Load Balancing löst Kubernetes ebenfalls: Die Last kann auf mehrere Instanzen verteilt werden; dabei wird der Netzwerkverkehr transparent auf IP-Ebene umgeleitet.

Aus diesen Gründen ist Kubernetes mittlerweile eine der wichtigsten Plattformen für Microservices: Ohne Eingriffe in den Code werden wichtige Herausforderungen für Microservices gelöst. So bleibt die Technologiefreiheit bestehen. Aber Kubernetes löst noch nicht alle Herausforderungen von Microservices.

Service Mesh: Proxies im Einsatz

Der Zweck von Kubernetes ist der zuverlässige Betrieb von beliebigen Containern. Der Orchestrierer bildet deshalb keine Microservice-spezifischen Funktionen ab. Genau dort setzt ein Service Mesh an. Es handelt sich um eine zusätzliche Infrastrukturebene für das Management der Service-zu-Service-Kommunikation. Anders als ein ESB ist ein Service Mesh jedoch dezentral und implementiert keine Geschäftslogik, da es typischerweise kein contentbasiertes Routing umsetzt. Ähnlich wie Kubernetes beliebige Container orchestriert, ist der Zweck eines Service Mesh, beliebige Microservices zu verwalten.

Im Detail betrachtet besteht ein Service Mesh aus zwei zusätzlichen Ebenen, die zwischen einem Orchestrierer wie Kubernetes und den Anwendungen liegen. Ein Service Mesh stellt jeder Service-Instanz einen sogenannten Sidecar-Container zur Seite. In Kubernetes wird dieser in den gleichen Pod, der Deployment-Einheit von Kubernetes, platziert. Daher laufen beide Container auf demselben physischen Host, teilen sich ein Netzwerkinterface und können sich Dateisysteme teilen. Im Sidecar-Container befindet sich ein Service Proxy, durch den jegliche eingehende und ausge...

Entwickler Magazin
Eine Infrastruktur für Microservices

Service Mesh und Istio

Die Flexibilität und die Geschwindigkeit von Microservices [1], [2] haben den hohen Preis eines verteilten Systems. Während der Betrieb dank Kubernetes kaum herausfordernd ist, müssen andere Funktionen aufwendig mit Bibliotheken implementiert und Werkzeuge für die Datenauswertung installiert werden. Ein Service Mesh wie Istio hilft, indem es viele Funktionen auf die Infrastrukturebene hebt und Analysetools mitbringt.

Hanna Prinz, Eberhard Wolff


Es gibt sehr viele unterschiedliche Technologien für die Implementierung von Microservices-Architekturen [3], [4]. Kubernetes [5] ist gerade für den Betrieb von Microservices eine hervorragende Infrastruktur: Docker-Container laufen nicht mehr auf einzelnen Knoten, sondern im Cluster; das erlaubt Ausfallsicherheit und Skalierung. Außerdem hilft Kubernetes beim Deployment der Anwendungen. Durch Rolling Updates können neue Versionen schrittweise eingeführt werden, indem Container mit der neuen Version gestartet und dann die Container mit der alten Version entfernt werden.

Außerdem ermöglicht Kubernetes Service Discovery: Container können andere Container anhand des DNS-Namens finden. DNS dient auch im Internet zum Auflösen von Hostnamen zu IP-Adressen und hat daher eine breite Unterstützung über viele Programmiersprachen hinweg. Load Balancing löst Kubernetes ebenfalls: Die Last kann auf mehrere Instanzen verteilt werden; dabei wird der Netzwerkverkehr transparent auf IP-Ebene umgeleitet.

Aus diesen Gründen ist Kubernetes mittlerweile eine der wichtigsten Plattformen für Microservices: Ohne Eingriffe in den Code werden wichtige Herausforderungen für Microservices gelöst. So bleibt die Technologiefreiheit bestehen. Aber Kubernetes löst noch nicht alle Herausforderungen von Microservices.

Service Mesh: Proxies im Einsatz

Der Zweck von Kubernetes ist der zuverlässige Betrieb von beliebigen Containern. Der Orchestrierer bildet deshalb keine Microservice-spezifischen Funktionen ab. Genau dort setzt ein Service Mesh an. Es handelt sich um eine zusätzliche Infrastrukturebene für das Management der Service-zu-Service-Kommunikation. Anders als ein ESB ist ein Service Mesh jedoch dezentral und implementiert keine Geschäftslogik, da es typischerweise kein contentbasiertes Routing umsetzt. Ähnlich wie Kubernetes beliebige Container orchestriert, ist der Zweck eines Service Mesh, beliebige Microservices zu verwalten.

Im Detail betrachtet besteht ein Service Mesh aus zwei zusätzlichen Ebenen, die zwischen einem Orchestrierer wie Kubernetes und den Anwendungen liegen. Ein Service Mesh stellt jeder Service-Instanz einen sogenannten Sidecar-Container zur Seite. In Kubernetes wird dieser in den gleichen Pod, der Deployment-Einheit von Kubernetes, platziert. Daher laufen beide Container auf demselben physischen Host, teilen sich ein Netzwerkinterface und können sich Dateisysteme teilen. Im Sidecar-Container befindet sich ein Service Proxy, durch den jegliche eingehende und ausge...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang