Interview mit Thomas Bandixen zur BASTA! 2019

Microservices: „gRPC bringt Daten schneller, sicherer und optimierter ans Ziel“

Dominik Mohilo

Thomas Bandixen

Microservices müssen miteinander kommunizieren, damit sie richtig funktionieren. Ein Framework, das dafür sorgt, ist gRPC. Wir haben mit Thomas Bandixen, Senior Consultant bei der Trivadis AG, über das Open Source RPC (Remote Procedure Call) Framework gesprochen. Im Interview vergleicht er gRPC mit dem klassichen REST, geht auf Vor- bzw. Nachteile der beiden ein und erklärt, welche Rolle Istio und andere Service Meshes in dem Zusammenhang spielen.

JAXenter: Hallo Thomas und danke, dass du dir die Zeit für das Interview genommen hast. Du befasst Dich mit gRPC, ein Tool für die Kommunikation zwischen Microservices. Kannst du vielleicht zum Einstieg eine Übersicht geben, welche Funktionalität gRPC genau bereitstellt?

Thomas Bandixen: Als erstes möchte ich mich bedanken, dass ich die Möglichkeit erhalten habe, das leistungsstarke Framework gRPC einem breiten Publikum vorstellen zu dürfen. gRPC ist ein Framework, welches ermöglicht, Daten zwischen unterschiedlichen Applikationen auszutauschen. Es spielt dabei keine Rolle, ob es Microservices sind, die Daten untereinander austauschen, oder ob es eine mobile App ist, die ihre Daten mit einem Server teilt. gRPC ist hochskalierbar und optimiert für verteilte Systeme mit geringer Latenzzeit. Zudem bringt gRPC den Vorteil, dass es mehrschichtig aufgebaut und daher leicht zu erweitern ist, sei es für Authentifizierung, Lastausgleich, Protokollierung oder Überwachung.

JAXenter: Was kann gRPC besser als REST?

Dank gRPC kann sich der Entwickler voll und ganz auf die Implementierung der Methoden konzentrieren.

Thomas Bandixen: Bei gRPC definieren Kontrakte die Schnittstellen der Services. Dies wird mit Hilfe von Protobuf gemacht. Protobuf ist ein flexibler, effizienter und automatisierter Mechanismus zur Serialisierung strukturierter Daten. Dies kann mit XML verglichen werden, ist allerdings schneller, schlanker und einfacher. Anhand der Definitionen kann mit den mitgelieferten Tools direkt verwendbarer Quellcode generiert werden. Durch den mehrschichtigen Aufbau muss man sich um das Serialisieren und die Kommunikation nicht direkt kümmern. Der Entwickler kann sich also voll und ganz auf die Implementierung der Methoden konzentrieren.

Ein weiterer Vorteil von gRPC gegenüber REST ist die Möglichkeit, Daten bi-direktional zwischen den Parteien über die gleiche Verbindung zu Streamen, ohne sich gegenseitig zu blockieren. Sollten sich die Anforderungen an die Schnittstelle im Laufe des Applikationszyklus‘ ändern und man muss den Kontrakt erweitern, kann dies, sofern gewisse Regeln eingehalten werden, ohne weitere Folgen für bereits generierte Clients gemacht werden.

JAXenter: Und welche Funktionen bietet REST, die gRPC (noch) nicht liefern kann?

Thomas Bandixen: Leider ist es noch nicht möglich einen gRPC-Service direkt aus einer Webapplikation anzubinden, um von den vielen Vorteilen zu profitieren. Natürlich gibt es Wege, wie dies mit geringem Aufwand erreicht werden kann. So bleibt es weiter möglich, denselben Dienst für eine Webapplikation und eine mobile App zu verwenden.

JAXenter: Was ist mit GraphQL, wo liegen die Unterschiede dazu?

Thomas Bandixen: Mit GraphQL kann die klassische Vorgabe von der REST-Schnittstelle umgekehrt werden. Der grosse Vorteil von GraphQL liegt darin, dass der Server nur die Daten liefert, die der Client angefordert hat. Dies ergibt vor allem bei einem Dienst Sinn, bei dem man seine Benutzer oder eben Clients nicht genau kennt und auch nicht kennen kann. Als Beispiel möchte ich das GraphQL API von GitHub nennen. GitHub hat sich bei der neusten Version entschieden, eine GraphQL-Schnittstelle anzubieten. So können die Integrationspartner definieren, welche Daten und in welcher Ausprägung sie erhalten möchten. GraphQL liefert standardmässig die kleinstmöglichste Anfrage zurück, wobei REST in der Regel alles auf einmal zurücksendet. Bei gRPC werden die Daten so, wie sie im Kontrakt definiert sind, ausgeliefert.

JAXenter: Ein derzeit sehr populäres Thema ist das Service Mesh. Wie spielt es in die Kommunikation via gRPC hinein? Gibt es Möglichkeiten, etwa Istio mit gRPC gemeinsam einzusetzen?

gRPC bringt Daten schneller, sicherer und optimierter ans Ziel.

Thomas Bandixen: Istio als „Service Mesh Organisator“ setzt standardmäßig den Envoy Proxy für seine interne Kommunikation ein und Envoy seinerseits unterstützt das gRPC-Protokoll. Somit ist es ohne Weiteres möglich, gRPC Requests an ein Service Mesh zu schicken. Um auf die Frage, „welche Funktionen bietet REST, die gRPC (noch) nicht liefern kann“ Bezug zu nehmen, mit Hilfe des Envoy Proxys kann eine Webapplikation über einen HTTP Request mit einem gRPC-Service kommunizieren. Envoy transformiert den Request in einen gRPC Request und umgekehrt. Das Angenehme dabei ist, dass alles direkt per Konfiguration gesteuert werden kann.

JAXenter: Was ist die Kernbotschaft deiner Session, die jeder mit nach Hause nehmen sollte?

Thomas Bandixen: Mein Publikum soll für zukünftige Evaluation in Projekten eine weitere Option kennen, die es ihnen ermöglicht, ihre Daten schneller, sicherer und optimierter ans Ziel zu bringen.

JAXenter: Vielen Dank für das Interview, Thomas!

Thomas Bandixen arbeitet als Senior Consultant bei der Trivadis AG. Momentan fokussiert er sich auf moderne Webarchitekturen, .NET-Enterprise-Anwendungen und die Frontend-Entwicklung mit C#/XAML/TypeScript/Angular. Alles über ihn gibt es auf https://thomasbandixen.ch/ und auf Twitter.
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: