Implémentation d'applications avec gRPC

Avec Code Engine, vous pouvez configurer vos applications pour qu'elles s'exécutent en tant que serveurs gRPC pour gérer les appels client en tirant parti des fonctions gRPC.

gRPC est une infrastructure d'appel de procédure à distance (RPC) à haute performance open source moderne qui peut connecter des services dans et entre les centres de données. Fournit une sérialisation binaire efficace, une diffusion en flux bidirectionnelle, un équilibrage de charge pour les clients et les serveurs, un traçage, un contrôle de santé et une authentification. Pour plus d'informations, voir la documentationgRPC.

Avantages de l'utilisation de gRPC

gRPC offre plusieurs avantages pour faciliter les communications entre les clients et les serveurs. Un aspect fondamental de gRPC consiste à définir une interface claire qui encapsule toutes les méthodes et tous les paramètres disponibles pour un appel à distance. Côté serveur, cette interface est implémentée pour gérer et répondre efficacement aux demandes des clients.

Cette approche de l'utilisation de gRPC avec vos applications Code Engine offre des avantages.

  • Interopérabilité-Les clients et les serveurs gRPC peuvent s'exécuter et communiquer entre eux dans divers environnements. Par exemple, vous pouvez définir vos serveurs avec le langage Go, tandis que vos clients sont définis dans Java.

  • Sérialisation- gRPC utilise des tampons de protocole pour la sérialisation des messages, ce qui est plus efficace en termes de taille et de vitesse que l'utilisation de JSON dans les API HTTP.

  • Diffusion en flux- gRPC prend en charge la diffusion en flux bidirectionnelle afin que les clients et les serveurs envoient et reçoivent des messages simultanément sur une seule connexion.

  • Détection des erreurs- gRPC impose un contrat fortement typé entre le client et le serveur via les tampons de protocole (fichiers.proto ). Ce contrat garantit que le client et le serveur sont d'accord sur les interfaces et la structure de données, ce qui permet une meilleure génération de code, une meilleure validation et un meilleur traitement des erreurs.

  • Sécurité- gRPC prend en charge diverses méthodes d'authentification et de chiffrement, y compris le protocole TLS mutuel, qui fournit une communication sécurisée entre le client et le serveur.

Configuration des applications Code Engine pour utiliser gRPC

gRPC est pris en charge pour les applications Code Engine au niveau du projet, ce qui signifie que votre application serveur Code Engine gRPC ne peut servir que le trafic des clients qui s'exécutent dans le même projet.

Vous devez utiliser l'interface de ligne de commande Code Engine pour configurer une application Code Engine gRPC.

Avant de commencer

Depuis Code Engine:

  1. Créez et déployez une application à l'aide de la commande ibmcloud ce application create. Pour indiquer que cette application prend en charge gRPC, qui utilise HTTP/2 comme mode de transport, vous devez spécifier l'option --port avec le format [NAME:]PORT; par exemple, --port h2c:8080. Lorsque [NAME:] a pour valeur h2c, il utilise HTTP/2 en mode non chiffré. Par défaut, Code Engine part de l'hypothèse que les applications sont à l'écoute des connexions entrantes sur le port 8080.

    Dans l'exemple suivant, utilisez myapp-grpcserver comme nom de l'application serveur et spécifiez icr.io/codeengine/grpc-server comme image à référencer.

    ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
    
  2. Exécutez la commande application get pour afficher les détails de l'application.

    ibmcloud ce application get --name myapp-grpcserver
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp-grpcserver
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Port:               h2c:8080
    [...]
    

Maintenant que votre application serveur est créée et déployée pour utiliser gRPC, vous devez déployer une application client dans le même projet pour accéder au serveur avec gRPC. Pour plus d'informations sur l'exemple de code Code Engine pour le déploiement d'un serveur gRPC et d'une application client, voir l'exemple Code Engine grpc.

Les exemples d'images Code Engine générés à partir du référentiel d'exemples IBM Cloud Code Engine sur GitHub sont disponibles dans IBM Cloud® Container Registry dans l'espace de nom icr.io/codeengine public.