Impulsojunte-se à Impulso
GraphQL

30/09/19

5 min de leitura

GraphQL

Introdução ao GraphQL

Rodrigo KiefferRodrigo Kieffer

GraphQL é uma especificação de Query Language para APIs baseada no conceito de grafos. Esse possui vários pontos, chamados de nó e ligados uns aos outros. Cada nó pode ser entendido como um recurso do sistema. Assim, um recurso pode ser um usuário, um cliente, uma pessoa, ou, o país do usuário, a peça fornecida pelo fornecedor, e assim por diante. Desta forma, ele permite a ligação entre recursos do sistema em forma de grafo.

Este também permite que as interfaces de usuário interajam declarativamente com dados e as isolem de como esses dados são resolvidos no servidor. Quem controla quais informações são necessárias é o cliente, e não mais o servidor, conforme estamos acostumados com o REST.

Além disso, o GraphQL é agnóstico de banco de dados. Isso significa que você pode utilizar qualquer banco de dados em sua API.

Quais problemas o GraphQL resolve?

Criada pela equipe do Facebook, em 2012, GraphQL começou a ser usada em seus aplicativos e, em 2015, a especificação se tornou open source, permitindo que várias empresas adotassem a tecnologia, desde então.

Atualmente muitas empresas o utilizam, como Facebook, Amazon, GitHub, Twitter, PayPal, The New York Times, KLM, GetNinjas, Dailymotion, Shopify e Pinterest. Até a própria Netflix, que possui um projeto próprio, chamado Falcor, hoje em dia também usa.

Segundo Lee Byron, um dos desenvolvedores do GraphQL, o problema que o Facebook enfrentava – e que serviu de motivação para criar a solução – era obter os dados necessários para o feed de notícias em dispositivos móveis, usando conexões de rede lentas. Dentro de cada post tinha que vir uma lista dos usuários que curtiram e, dentro de cada objeto de usuário, deveria vir o nome, foto e link do perfil, além da informação se o usuário já é seu amigo, etc.

Ao invés de ter que ficar criando uma API para cada estrutura diferente de dados e depois juntar esses dados, que tal simplesmente dizer a “alguém” o que você precisa? Esse “alguém” é o GraphQL.

Benefícios

A seguir veremos alguns dos benefícios que uso do GraphQL pode trazer:

  • Performance:
    As requisições se tornam mais rápidas, pois o payload trafegado na rede é reduzido. Afinal, serão enviadas apenas as informações necessárias.

    Em um cenário com REST, podemos precisar de mais de uma requisição para retornar as informações necessárias. Sendo assim, o GraphQL tem um ganho para as aplicações, sendo este ainda maior em redes mais lentas ou limitadas, como as redes móveis, por exemplo.
  • Versionless:
    No GraphQL temos o conceito de ser versionless, ou seja, sem controle de versão para a API. Para isso, basta estender o Schema para adicionar novas informações, sem impactar as aplicações antigas, que não utilizarão essas informações.

    Caso seja necessário remover um atributo futuramente, basta colocá-lo como deprecated, indicando qual novo atributo deve ser usado e, futuramente, não haverá mais o atributo deprecated no Schema.

Princípios Segundo a empresa Apollo

A empresa Apollo estima que seu framework seja utilizado em mais de 90% das implementações de GraphQL, possuindo alguns princípios de boas práticas, listadas abaixo:

Princípios de Integridade: Garantir que o Schema GraphQL seja bem definido, estável e consistente.

  1. GraphQL Schema único — A empresa deve possuir um unificado, ao invés de um por equipe;
  2. Implementação compartilhada — A implementação deve ser compartilhada entre as equipes/times;
  3. Rastreie o Schema em Registros — Deve haver uma única fonte verdadeira para rastrear o GraphQL Schema.

Princípios de Agilidade: Distribuir e adaptar-se rapidamente às mudanças necessárias.

  1. Schema Abstrato e Orientado à Demanda — O esquema deve agir como uma camada de abstração que fornece flexibilidade aos consumidores, ocultando os detalhes da implementação;
  2. Abordagem Ágil para o desenvolvimento dos Schemas — O esquema deve ser construído de forma incremental, com base nos requisitos reais, e evoluir ao longo do tempo;
  3. Melhorar o Desempenho de forma iterativa — O gerenciamento de desempenho deve ser um processo contínuo, adaptando-se às mudanças nas cargas de consulta e nas implementações de serviços;
  4. Use os Metadados para Capacitar as pessoas Desenvolvedoras — As pessoas desenvolvedoras devem ter conhecimento da API GraphQL durante todo o processo de desenvolvimento.

Princípios de Operação: Implementar a API GraphQL com segurança para produção.

  1. Acesso e Controle de Demanda — Conceda acesso por cliente e gerencie o que e como poderão acessá-lo;
  2. Log Estruturado — Capture logs estruturados de todas as operações e aproveite-os como ferramenta para entender o uso da API GraphQL;
  3. Separe a Camada GraphQL da Camada de Serviço — Adote uma arquitetura em camadas com a funcionalidade da API GraphQL em uma camada separada, ao invés desta ser incorporada em todos os serviços.

5 motivos para adotar GraphQL em seus projetos

  1. Possui Schema fortemente tipado — O GraphQL Schema é a “espinha dorsal” da API GraphQL. Ele define as operações (queriesmutations e subscriptions) suportadas pela API, incluindo argumentos de entrada e respostas. Pode-se dizer que o Schema é o contrato entre o cliente e a API.
  2. Não há mais overfetching ou underfetching — Como o cliente diz quais dados ele precisa receber, os problemas de receber dados desnecessários (overfetching), ou precisar de mais de uma requisão por não ter todos os dados em apenas uma chamada (underfetching), são solucionados. E esse é considerado um dos maiores benefícios do GraphQL.
  3. Permite o desenvolvimento rápido de produtos — Existe um ganho muito grande, principalmente, para equipes de frontend. Com ele é possível redesenhar completamente a UI de um frontend sem ter que alterar nada no backend. Com GraphQL Faker os times de frontend ainda podem utilizar mocks das APIs.
  4. APIs GraphQL Compostas — O Schema permite combinar e mesclar várias APIs GraphQL em apenas uma. Semelhante aos componentes React, que podem ser compostos por componentes existentes, ela pode ser composta de outras APIs. Isso é extremamente benéfico para os clientes pois, caso contrário, teriam que acessar vários endpoints de API GraphQL.
  5. Ecossistema de código-aberto e uma comunidade incrível — GraphQL foi oficialmente lançado pelo Facebook em 2012 e se tornou open source em 2015 (um tempo bem curto) e, mesmo assim, é incrível o quanto todo seu ecossistema amadureceu desde então.


Quer saber mais sobre o assunto, veja o nosso meetup: 

 

Referências:

Nós usamos cookies para melhorar sua experiência no site. Ao aceitar, você concorda com nossa Política de Privacidade

Assine nossa newsletter

Toda semana uma News com oportunidades de trabalho, conteúdos selecionados, eventos importantes e novidades sobre o Mundo da Tecnologia.

Pronto, em breve você vai receber novidades 👍