gRPC, ha sido el framework usado internamente por Google para conectar microservicios. Mejorado obviamente durante el tiempo ha llegado a una potente evolución que ha unido a este framework RPC (Remote Procedure Call) con el reciente y casi casi estandarizado HTTP/2. Google ha decidido lanzarlo públicamente a la comunidad Open Source.
¿Por qué es tan interesante gRPC?
El foco principal es el rendimiento, hablamos en términos observables de CPU y de ancho de banda, mejora de latencia al propagar datos de forma masiva a distintos datacenters, mayor eficiencia en comunicaciones con dispositivos móviles (batería, disponibilidad, …), tiempo real, desarrollo de APIs más responsives y escalables.
Construido sobre HTTP/2 aporta capacidades nativas de bidirecionalidad, control de flujo de datos, compresión de cabeceras, multiple de peticiones sobre una única conexión TCP. No es una reescritura del actual HTTP/1.1 sino que los status code o la semantica se mantiene.
Librerías de implementación y serialización
gRPC viene con librerías para distintos lenguajes para empezar a construir implementaciones: C, C++, C#, Go, Java, Node.js, Objective-C, PHP, Python, Ruby. Entre todas ellas Java es la que se encuentra más madura actualmente, el resto se encuentran en fase alpha o pre-alpha.
Otro aporte interesante es la evolución de la serialización de objetos con Proto3, la nueva versión de Protocol Buf que simplifica la sintaxis y con soporte para más lenguajes y JSON encodings. gRPC puede ser extendido para soportar más formatos.
Todo el código está disponible en GitHub, tanto los primeros ejemplos y la documentación de gRPC.
Vía | Google Developers Blog