GraphQL - Arquitectura
GraphQL es una especificación que describe el comportamiento de un servidor GraphQL. Es un conjunto de pautas sobre cómo las solicitudes y respuestas deben manejarse como protocolos compatibles, el formato de los datos que pueden ser aceptados por el servidor, el formato de la respuesta devuelta por el servidor, etc. La solicitud realizada por un cliente a GraphQL El servidor se llama Consulta. Otro concepto importante de GraphQL son los agnósticos de la capa de transporte. Se puede utilizar con cualquier protocolo de red disponible como TCP, websocket o cualquier otro protocolo de capa de transporte. También es neutral para las bases de datos, por lo que puede usarlo con bases de datos relacionales o NoSQL.
GraphQL Server se puede implementar mediante cualquiera de los tres métodos que se enumeran a continuación:
- Servidor GraphQL con base de datos conectada
- Servidor GraphQL que integra sistemas existentes
- Enfoque híbrido
Servidor GraphQL con base de datos conectada
Esta arquitectura tiene un servidor GraphQL con una base de datos integrada y, a menudo, se puede utilizar con nuevos proyectos. Al recibir una consulta, el servidor lee la carga útil de la solicitud y obtiene datos de la base de datos. A esto se le llama resolver la consulta. La respuesta devuelta al cliente se adhiere al formato especificado en la especificación oficial de GraphQL.
En el diagrama anterior, el servidor GraphQL y la base de datos están integrados en un solo nodo. El cliente (escritorio / móvil) se comunica con el servidor GraphQL a través de HTTP. El servidor procesa la solicitud, obtiene datos de la base de datos y los devuelve al cliente.
GraphQL Server que integra sistemas existentes
Este enfoque es útil para las empresas que tienen una infraestructura heredada y diferentes API. GraphQL se puede utilizar para unificar microservicios, infraestructura heredada y API de terceros en el sistema existente.
En el diagrama anterior, una API GraphQL actúa como una interfaz entre el cliente y los sistemas existentes. Las aplicaciones cliente se comunican con el servidor GraphQL, que a su vez resuelve la consulta.
Enfoque híbrido
Finalmente, podemos combinar los dos enfoques anteriores y construir un servidor GraphQL. En esta arquitectura, el servidor GraphQL resolverá cualquier solicitud que se reciba. Recuperará datos de la base de datos conectada o de las API integradas. Esto se representa en la siguiente figura: