GraphQL - Architettura

GraphQL è una specifica che descrive il comportamento di un server GraphQL. È un insieme di linee guida su come devono essere gestite le richieste e le risposte come i protocolli supportati, il formato dei dati che possono essere accettati dal server, il formato della risposta restituita dal server, ecc. La richiesta fatta da un client a GraphQL il server è chiamato Query. Un altro concetto importante di GraphQL è il suo livello di trasporto agnostico. Può essere utilizzato con qualsiasi protocollo di rete disponibile come TCP, websocket o qualsiasi altro protocollo di livello di trasporto. È anche neutro per i database, quindi puoi usarlo con database relazionali o NoSQL.

GraphQL Server può essere distribuito utilizzando uno dei tre metodi elencati di seguito:

  • Server GraphQL con database connesso
  • Server GraphQL che integra i sistemi esistenti
  • Approccio ibrido

Server GraphQL con database connesso

Questa architettura ha un server GraphQL con un database integrato e può essere spesso utilizzata con nuovi progetti. Alla ricezione di una query, il server legge il payload della richiesta e recupera i dati dal database. Questo si chiama risoluzione della query. La risposta restituita al client aderisce al formato specificato nella specifica GraphQL ufficiale.

Nel diagramma sopra, il server GraphQL e il database sono integrati su un singolo nodo. Il client (desktop / mobile) comunica con il server GraphQL su HTTP. Il server elabora la richiesta, recupera i dati dal database e li restituisce al client.

GraphQL Server che integra i sistemi esistenti

Questo approccio è utile per le aziende che dispongono di infrastrutture legacy e API diverse. GraphQL può essere utilizzato per unificare microservizi, infrastruttura legacy e API di terze parti nel sistema esistente.

Nel diagramma sopra, un'API GraphQL funge da interfaccia tra il client e i sistemi esistenti. Le applicazioni client comunicano con il server GraphQL che a sua volta risolve la query.

Approccio ibrido

Infine, possiamo combinare i due approcci precedenti e creare un server GraphQL. In questa architettura, il server GraphQL risolverà qualsiasi richiesta ricevuta. Recupererà i dati dal database connesso o dalle API integrate. Questo è rappresentato nella figura seguente: