GraphQL - Arquitetura
GraphQL é uma especificação que descreve o comportamento de um servidor GraphQL. É um conjunto de diretrizes sobre como as solicitações e respostas devem ser tratadas como protocolos suportados, formato dos dados que podem ser aceitos pelo servidor, formato da resposta retornada pelo servidor, etc. A solicitação feita por um cliente ao GraphQL servidor é chamado de Consulta. Outro conceito importante do GraphQL são seus agnósticos de camada de transporte. Ele pode ser usado com qualquer protocolo de rede disponível como TCP, websocket ou qualquer outro protocolo de camada de transporte. Também é neutro para bancos de dados, portanto, você pode usá-lo com bancos de dados relacionais ou NoSQL.
O GraphQL Server pode ser implantado usando qualquer um dos três métodos listados abaixo -
- Servidor GraphQL com banco de dados conectado
- Servidor GraphQL que integra sistemas existentes
- Abordagem híbrida
GraphQL Server com banco de dados conectado
Esta arquitetura possui um GraphQL Server com um banco de dados integrado e pode frequentemente ser usada com novos projetos. No recebimento de uma consulta, o servidor lê a carga útil da solicitação e busca os dados do banco de dados. Isso é chamado de resolução da consulta. A resposta retornada ao cliente segue o formato especificado na especificação oficial do GraphQL.
No diagrama acima, o servidor GraphQL e o banco de dados estão integrados em um único nó. O cliente (desktop / móvel) se comunica com o servidor GraphQL por HTTP. O servidor processa a solicitação, busca dados do banco de dados e os retorna ao cliente.
GraphQL Server Integrando Sistemas Existentes
Essa abordagem é útil para empresas que possuem infraestrutura legada e APIs diferentes. GraphQL pode ser usado para unificar microsserviços, infraestrutura legada e APIs de terceiros no sistema existente.
No diagrama acima, uma API GraphQL atua como uma interface entre o cliente e os sistemas existentes. Os aplicativos cliente se comunicam com o servidor GraphQL que, por sua vez, resolve a consulta.
Abordagem Híbrida
Finalmente, podemos combinar as duas abordagens acima e construir um servidor GraphQL. Nesta arquitetura, o servidor GraphQL resolverá qualquer solicitação recebida. Ele recuperará dados do banco de dados conectado ou das APIs integradas. Isso é representado na figura abaixo -