Hace ya más de un año de mi trilogía sobre Microservicios. Y concretamente «Arquitectura de Microservicios con contenedores usando .NET5», aunque estamos en la versión 6, continúa siendo útil. Pero no vengo a recordar ese punto, si no, volver al resumen de estas tecnologías, es algo que conviene recordar. Acompáñame y veamos el resumen.

En esta ocasión no voy a mencionar SOAP, ya solo me lo encuentro en proyectos legacy y a nadie se le está ocurriendo iniciar proyectos nuevos con esta tecnología.

Con este resumen quiero poner un poco más de tallado los pros y contras, puntos fuertes y débiles, problemas, etc. Que puedan ayudarte a elegir el mejor protocolo para tu proyecto.

GraphQL

Es el más moderno de los tres, cada se usa más pero no termina de despuntar en ciertos ambientes como puede ser el desarrollo en .NET. Pasará como con cualquier tecnología convivirá con las otras tres.

Lo que sugiere el nombre Graph Query Language, es que debe ser una aproximación a un lenguaje de consultas de grafos, es decir, unos objetos y una estrecha relación con ellos (al igual que SQL).

Por ejemplo, esto es aplicable a cualquier red social, tal y como expliqué en mi potencia sobre “Grafos la tercera vía para tus datos”.

Un punto a su favor es que es el único que tiene un esquema estandarizado:  Schemas & Types.

Aplicación

Proyectos a partir de un tamaño medio de objetos y una clara relación entre ellos.

Pros
    • Esquema de datos autodocumentado
    • Validación incorporada
    • Posibilidad de trabajar con suscripciones
Contras
    • Es más complejo de entender que REST y RPC
    • Cache
    • Rate limit

REST

Exista o no interacción entre los objetos es muy sencillo poder llevar a cabo cualquier operación CRUD.

Permite una semántica muy clara que nos permite comprender de forma muy sencilla el sistema incluso con ausencia de documentación.

Aplicación

Cualquier sistema que necesite realizar CRUD.

Pros
    • Muy robusto, mejor dicho: consolidado
    • Esta muy difundido
    • Funciona sobre la capa HTTP
    • Semántica clara y sencilla con verbos y sustantivos
Contras
    • La falta de estado que obliga a usar otros mecanismos auxiliares
    • La seguridad no esta impuesta por definición como en SOAP

RPC

En Arquitectura de Microservicios con contenedores usando .Net5 podrás encontrar un buen ejemplo de gRPC, una evolución del protocolo.

Aplicación

Tal y como muestra la imagen, en microservicios y aplicaciones comandos/acciones simples.

Pros
    • Es muy sencillo de implementar
Contras
    • La simplicidad subyacente implica mucha complejidad en la evolución
    • Complejo en ampliación en arquitecturas de microservicios

Conclusión

¿Cuál es mejor o peor?, pues como todo en informática: depende. Lo bueno de tener opciones es que tendrás herramientas suficientes para evaluar pros y contras de tu caso particular.