¿Qué es gRPC?, gRpc es un protocolo RPC (Remote Procedure Call), el cual puede ser ejecutado sobre cualquier entorno para realizar conexiones o llamadas entre microservicios. Este protocolo fue creado por Google y puede ser utilizado como una alternativa a REST, WebHook o GraphQL.

Entre sus principales características podemos encontrar:

  • Transmisión bidireccional y autenticación conectable totalmente integrada con transporte basado en HTTP / 2.
  • Destaca el rendimiento, debido a su bajo consumo de CPU, ancho de banda,etc.
  • Ofrece JSON encondings y serialización con PROTO 3.
  • Genera automáticamente stubs idiomáticos de cliente y servidor para su servicio en una variedad de idiomas y plataformas
  • Autenticación incorporada soportando SSL.

Componentes principales

En el siguiente diagrama se puede ver el flujo a realizar para poder hacer uso de gRPC, que será detallado a continuación.

Protocol Buffers o protobuf

Protocol Buffer o Protobuf, ya que pueden ser llamados de la misma manera, es un lenguaje implementado, independiente de Google.

El objetivo que hay que intentar conseguir al crear un Protobuf es la de que sea Contract First, es decir, hagamos un esfuerzo para definir primero el contrato.

Para poder realizar a continuación su desarrollo nos vamos a basar en su IDL (Interface Definition Languaje), que gracias a RPC, podremos configurar nuestras comunicaciones entre el cliente y el microservicio. Con protobuf crearemos tanto la interfaz del servicio, como sus métodos y sus mensajes. Para poder llevar a cabo su implementación, se realizará en un tipo de fichero con extensión .proto, de manera que pueda ser legible por un humano.

El hecho de que se piense en API First, es básicamente, porque si después de su implementación, tenemos que hacer cambios en nuestro fichero .proto, podemos tener consecuencias, tanto en el cliente, como en el servicio que es consumido, y los cambios nos podrían llevar demasiado esfuerzo.

Proto Compiler

El objetivo de gRPC es que fuera multilenguaje y multiplataforma, por lo que teniendo en cuenta estas premisas, tan solo nos tendremos que preocupar de generar nuestro Protobuf y compilarlo en el lenguaje que necesitemos.

Por lo que para poder generar nuestro fichero Protobuf en el lenguaje que necesitamos, se hace uso de Proto Compiler (protoc).

Implementación

Teniendo claro, o al menos entendiendo, los puntos anteriores sobre protobuf y proto compiler, podemos dar paso a la implementación y desarrollo del código.

Para poder realizar el desarrollo y que tanto la parte cliente como servidora, se puedan comunicar será necesario hacerlo a través de Proto Request y Proto Response. Es decir, haremos uso de unos tipos concreto tanto para realizar las peticiones como para las respuestas que devolverá el servicio.

Conclusión

En esta entrada hemos visto un pequeño resumen de lo que es gRPC y sus partes básicas. En futuras entradas veremos su uso y desarrollo mediante un ejemplo en una aplicación Spring Boot.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *