BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Google publie gRPC, un Framework HTTP/2 RPC pour Microservices

Google publie gRPC, un Framework HTTP/2 RPC pour Microservices

Google a rendu open-source gRPC, un framework RPC utilisé en interne pour connecter des microservices. gRPC offre le support de 10 langages, le rendant attractif pour la création de services cloud d'un back-end polyglotte, servant des applications mobiles.

gRPC est un système RPC agnostique aux langages et aux plateformes, développé et utilisé en interne par Google dans différents domaines, incluant les services de cloud computing. Ils vont également exposer la plupart de leurs APIs publiques via ce protocole. Google considère gRPC comme "un moyen de créer des systèmes massivement distribués qui relie les data-centers, et renforçant les applications mobiles, les communications en temps réel, les appareils IoT et les APIs, tout en étant efficace en termes de CPU et de bande passante, et à faible latence".

Bien qu'il puisse être utilisé dans de nombreux scénarios, gRPC vise principalement les architectures microservices. L'interface et le type de données supportées par un service est défini en utilisant un IDL Protocol Buffers. Avec l'aide des compilateurs disponibles, il est possible de générer des stubs serveurs et clients pour 10 langages : C, C++, C#, Go, Java, Node.js, Objective-C, PHP, Python, Ruby. L'implémentation Java semble mature, alors que les autres sont en Alpha (prêtes pour les early-adopters) ou pre-Alpha. A l'exception des implémentations Go et Java, elles sont en fait construites par dessus la core librairie en C. Il n'y a pas encore d'implémentation pour le navigateur, mais Google "explore activement" cette option et accepte les contributions sur le sujet.

Le format de sérialisation des données utilisé par défaut est Protocol Buffers, une nouvelle version Proto3 venant de sortir. En plus d'une syntaxe simplifiée, Proto3 apporte le support de plus de langages et l'encoding JSON. gRPC peut être étendu pour supporter d'autres formats.

A la question "Pourquoi choisir gRPC plutôt que REST pour des microservices", Google a répondu :

gRPC suit largement la sémantique HTTP de HTTP/2, mais nous apportons explicitement la possibilité de faire du full-duplex streaming. Nos conventions divergent des conventions typiques de REST puisque nous utilisons des routes statiques pour des raisons de performances durant la répartition des appels : le parsing des paramètres et du corps du payload ajoutent de la latence et de la complexité. Nous avons également formalisé un set d'erreurs qui, nous le croyons, sont plus directement applicables aux cas d'utilisations des APIs que ne le sont les codes de statut HTTP.

En fournissant le support de librairies clientes pour iOS et Android fonctionnant avec HTTP/2, Google espère que les développeurs utiliseront gRPC pour la création de services back-end pour des applications mobiles. Ils considèrent que "le streaming bi-directionnel, le contrôle du débit, la compression des headers, et le multiplexage des requêtes via une unique connexion TCP" va "réduire la consommation batterie et l'utilisation de data sur les mobiles tout en accélérant les services et applications web fonctionnant dans le cloud".

Le code source de gRPC est disponible sur GitHub sous license BSD.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT