Introducción a gRPC

Home » Blog » Introducción a gRPC


* Este post es el primero de la serie sobre gRPC


Allá por los 90, cuando yo empecé en este mundillo, si eras afortunado y tenías un ordenador, lo único que podías hacer era trabajar en local, jugando a tus juegos instalados o escribiendo tus documentos en Word Perfect.

En la actualidad ocurre justamente todo lo contrario. Casi todos los dispositivos están conectados a algún tipo de red y todos los nuevos desarrollos se hacen enfocándolos a la nube. Esto nos permite tener máquinas menos potentes y que toda la potencia de cómputo se transfiera a esas mega máquinas que tienen Amazon, Google, Microsoft ... pero esa es otra historia.

Los nuevos desarrollos se hacen enfocándolos a la nube

El software actual se compone de servicios que interactúan con otros servicios para conseguir un fin más o menos complejo. Estos servicios suelen ser pequeños y con una funcionalidad muy específica, de ahí que se los llame microservicios.

La comunicación entre microservicios se realiza a través de redes informáticas y, al igual que las personas, los procesos también se comunican enviándose mensajes. Al software basado en microservicios se lo denomina software distribuido. Tiene, como todo en esta vida, ventajas e inconvenientes que te iré contando.

Los procesos pueden intercambiarse mensajes de manera síncrona o asíncrona:

  • Comunicación Síncrona: el proceso cliente envía un mensaje al proceso servidor a través de la red y espera un mensaje de respuesta. Un ejemplo de intercambio de información síncrono de la vida cotidiana sería una conversación telefónica. Una persona pregunta y la otra responde. Todo ello está sincronizado y ocurre en tiempo real.

  • Comunicación Asíncrona: los procesos intercambian mensajes asíncronos utilizando un intermediario conocido como gestor de eventos(events broker). Un ejemplo sería el intercambio de información a través de Whatsapp. Yo te envío un mensaje y tú lo respondes cuando puedas.

No hay una opción mejor que otra. Sólo tienes que seleccionar la que mejor se adapte a tu caso de uso.

La mayoría de aplicaciones en la actualidad se comunican de manera síncrona, enviando una petición y esperando una respuesta más o menos inmediata. Los microservicios se construyen como servicios RESTful, que implementan recursos a los que se puede acceder y cambiar su estado a través de llamadas de red y utilizando el protocolo HTTP/2. A estos servicios se les llama APIs (Application Programming Interface).

Para la mayoría de los casos de uso, los servicios RESTful son bastante pesados, ineficientes y propensos a errores. Muchas veces necesitarás que la comunicación entre tus procesos sea altamente escalable y poco acoplada, o sea, que sea más eficiente que los servicios RESTful. Aquí es donde entra en escena gRPC, que no es más que un método de comunicación entre procesos para construir aplicaciones distribuidas y microservicios.

Google desarrolló gRPC y puedes pensar que la g de gRPC se refiera a Google, pero el significado de la g ha cambiado con cada versión. La versión en el momento de escribir este artículo es la 1.41 y en esta versión la g de gRPC significa "goat". Puedes encontrar todos los significados de la g para las diferentes versiones aquí.

En el siguiente post te explicaré lo que es gRPC y te pondré un ejemplo.

Si quieres profundizar en el tema de gRPC, aquí te dejo algunos libros que te pueden interesar:



Learning HTTP/2: A Practical Guide for Beginners

Stephen Ludin


Distributed Services with Go: Your Guide to Reliable, Scalable, and Maintainable Systems

Travis Jeffrey