Alternative zu REST: gRPC-Web jetzt allgemein verfügbar
Die CNCF hat das Release der JavaScript-Client-Bibliothek gRPC-Web verkündet, die Web-Apps die Kommunikation zwischen gRPC-Diensten ermöglicht.
- Björn Bohn
Die JavaScript-Client-Bibliothek gRPC-Web (gRPC Remote Procedure Calls) ist jetzt allgemein verfügbar. Sie soll es Web-Applikationen ermöglichen, direkt zwischen gRPC-Diensten im Backend zu kommunizieren, ohne einen HTTP-Server als Zwischenstation ansprechen zu müssen. Dadurch können Entwickler gRPC-Architekturen für ihre Applikationen "end-to-end" entwickeln. Dazu müssen sie die Datentypen auf Client- und Serverseite sowie die Service-Interfaces in einer .proto-Datei definieren. Damit soll gRPC-Web eine Alternative zu REST in der Webentwicklung bieten.
Was ist gRPC?
gRPC ist ein ursprünglich von Google entwickeltes, quelloffenes System für Remote Procedure Calls (RPC). Es nutzt HTTP/2 als Transport und Protocol Buffers als Interface Description Language (IDL). Es besitzt Features wie Authentifizierung und bidirektionales Streaming. Außerdem funktioniert es sprachen- und plattformübergreifend.
Die Cloud Native Computing Foundation (CNCF) erklärt in ihrer Ankündigung weiterhin, dass gRPC-Web es Anwendern ermöglicht, einen "Servicevertrag" zwischen Webapplikationen und den gRPC-Servern im Backend zu schließen. Dazu verwendet die Bibliothek die .proto-Definitionen und automatisch generiertes JavaScript. Entwickler haben die Wahl, ob sie Closure Compiler JavaScript oder CommonJS verwenden.
Nicht notwendig für den Entwicklungsprozess sind hingegen JSON-Logik und das Verwalten von HTTP-Status-Codes. Im Vergleich zu REST spricht also ein Client Protocoll Buffers zu einem gRPC-Backend-Server, der sich in derselben Art und Weise mit anderen Backend-Diensten austauscht. Bei REST spricht die Web-App HTTP zur REST API im Backend, die dann Protocol Buffers an die anderen Dienste weitergibt.
Mögliche Vorteile von gRPC
Mit der End-To-End-Anknüpfung von gRPC kehrt laut der CNCF ebenfalls der Vorteil einher, dass Client-Bibliotheken eben nur noch gRPC-Bibliotheken benötigen und auf den HTTP-Client verzichten können. Außerdem soll die Koordination zwischen Frontend- und Backend-Teams deutlich einfacher werden.
Der Beitrag der CNCF bietet neben einer Beispielanwendung auch einen Ausblick auf die Zukunft. Angedacht sind eine Integration in beliebte Frontend-Frameworks wie Angular, React und Vue sowie eine Entwicklung sprachspezifischer Proxies. (bbo)