Le nouveau protocole RPC
GRPC : de quoi s’agit-il ?
GRPC est un nouveau protocole RPC initialement développé en interne par Google. Le G signifie Google d’ailleurs.
GRPC s’appuie sur 2 briques techniques:
- Protocole HTTP/2 pour le transport
- Sécurisé (TLS)
Il propose nativement divers services tels:
- Des fonctions d’authentification
- transmission bidirectionnelle
- scalling
- annulation
- timeout
GRPC est un protocole à contrat. Le langage de description s’appelle Protocol Buffer (PB) que l’on utilise pour écrire des fichiers dits protobuf. Les fichiers PB seront ultérieurement transtypés dans le langage de votre choix pour assurer le caractère multi plateforme de GRPC.
Avant d’aller plus loin, le site officiel se trouve ici: https://grpc.io/
Le mécanisme
Comment marche le GRPC ?
Un service est déclaré par un contrat, on l’a dit rédigé en Proto Buffer (PB), le contrat est commun au service et aux clients (heureusement !).
- Côté service, on implémente ce contrat et lance un service GRPC capable de recevoir et répondre aux requêtes des clients.
- Côté client on dialogue avec le service appelé un stub GRPC ou un client GRPC selon le framework utilisé.
La notion clef de PB est le message. Tout passe par des messages. Les messages transmettent des données structurées et typées. De plus il est transmis en binaire et pas en texte. Un message va typiquement ressembler à ceci :
Les services
Quels services proposés par GRPC ?
- Service unaire (unary RPC)
Le client envoie une seule requête et reçoit une seule réponse du service. Fonctionne comme l’appel d’une fonction - Service de flux (server streaming)
le client envoie une requête vers le service et reçoit un flux de message lus séquentiellement. GRPC garantit que les messages sont reçus dans l’ordre - Client de flux (client streaming)
Le client envoie un flux de messages vers le service - Flux bidirectionnel (bidirectional streaming)
Une combinaison des deux modes qui précèdent
En image on a ceci :
Un fichier protobuf décrit un contrat, on l’a dit. Typiquement il ressemble à ceci :
On est loin de la complexité de SOAP. Sans entrer dans les détails, on y trouve quoi ?
La description du service avec le mot clef service. Il est composé d’une seule API : GreeterService. On comprend dans les grandes lignes que le service reçoit un message HelloRequest et renvoie un message HelloReply.
Les messages sont décrits dans le contrat bien entendu.
Conclusion
Ce qu’il faut retenir du GRPC
GRPC fait le buzz ces derniers temps. Il est difficile de dire comment il va se répandre.
Les navigateurs Web gèrent tous HTTP/2 en principe. Malheureusement il s’agit d’une gestion incomplète ce qui rend difficile GRPC en contexte Web.
On va plutôt le rencontrer comme protocole léger sur des applis desktop, dialogue de serveur à serveur par des microservices ou bien des applis mobiles qui ne peuvent se permettre la lourdeur d’un outil comme SignalR.
Si vous souhaitez aller plus loin dans GRPC, le tuto suivant démontre des exemples de tous les types de service ainsi que quelques aspects de GRPC :
Ecrit par Fréderic DE LENE MIROUZE