¿Qué es gRPC?

Home » Blog » ¿Qué es gRPC?


* Este post es el segundo de la serie sobre gRPC


¿Qué es gRPC?

Cuando se desarrolla una aplicación gRPC lo primero que se hace es definir una interfaz de servicio. La definición de la interfaz de servicio contiene información sobre cómo tu servicio puede ser consumido por los consumidores, qué métodos permite a los consumidores llamar remotamente, qué parámetros de método y formatos de mensaje utilizar cuando se invocan esos métodos, etc. El lenguaje en el que especificamos la definición del servicio se conoce como lenguaje de definición de interfaces (IDL) y en gRPC se utiliza Protocol Buffers. Además, para el transporte de la información se utiliza HTTP/2.

Usando Protocol Buffers, puedes generar el código del lado del servidor conocido como esqueleto del servidor, que simplifica la lógica del lado del servidor proporcionando abstracciones de comunicación de bajo nivel. También se puede generar el código del lado del cliente, conocido como stub del cliente, que simplifica la comunicación del lado del cliente con abstracciones para ocultar la comunicación de bajo nivel para diferentes lenguajes de programación. Los métodos que se especifican en la definición de la interfaz del servicio pueden ser invocados remotamente por el lado del cliente tan fácilmente como si se tratara de una invocación de una función local. gRPC maneja todas las complejidades que normalmente se asocian con la aplicación de contratos de servicio estrictos, serialización de datos, comunicación de red, autenticación, control de acceso, observabilidad, etc.

Te voy a mostrar un ejemplo para que entiendas mejor cómo funciona gRPC. Imagina que estás construyendo un ecommerce de bebidas, compuesto por varios microservicios. Quieres que uno de ellos proporcione los detalles de las bebidas que están disponibles en tu app. El servicio DrinkInfo está modelado de tal manera que se expone a través de la red como un servicio gRPC.

La definición del servicio se especifica en el archivo DrinkInfo.proto, que es utilizado tanto por el lado del servidor como del cliente para generar el código. En este ejemplo, he asumido que el consumidor se implementa utilizando Node y que el servidor se implementa utilizando Python. La comunicación de red entre el servicio y el consumidor tiene lugar a través de HTTP/2.

En el siguiente post profundizaré en los detalles de esta comunicación gRPC.

Aprovecho para recomendarte algunos libros que te pueden interesar:



Learning HTTP/2: A Practical Guide for Beginners

Stephen Ludin


Modern API Development with Spring and Spring Boot: Design highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive paradigm

Sourabh Sharma