DEV Community

Nova Script
Nova Script

Posted on

Exemplificando um grande problema que o GraphQL resolve: overfetching.

O problema:

Imagine o seguinte cenário: você é dono de uma aplicação web qualquer que possui: uma API Rest e um frontend qualquer.

No frontend, é dado uma ocasião onde você precisa mostrar pro usuário final uma lista contendo todos os nomes dos usuários que estão online naquele momento.

Então, você faz uma requisição para a sua API, no endpoint:

GET /online_users
Enter fullscreen mode Exit fullscreen mode

Que retorna:

[
    {"name": "Hobbit", "email": "hobbit@csgo.com", "social": {"instagram": "@hobbit" ...}, ...},
    {"name": "Shiro", "email": "shiro@cloud9.com", "social": {"instagram": "@shiro" ...}, ...},
    {"name": "Groove", "email": "groove@gambit.com", "social": {"instagram": "@groove" ...}, ...},
    ...
]
Enter fullscreen mode Exit fullscreen mode

Porém, perceba que para a ocasião dada, não precisamos de todos os dados que o nosso endpoint retorna (email, redes sociais e etc), mas sim apenas do nome de cada usuário.

É exatamente aí que o GraphQL começa a fazer sentido.

Com o GraphQL, é possível pedir ao backend para que o endpoint retorne APENAS as informações que você precisa.

Mas porque não apenas ignorar os campos que não vou utilizar?

Ainda no nosso cenário imaginado, veja também que a sua API está hospedada na AWS (Amazon Web Services).
Nessa plataforma, você paga apenas pelos recursos que consome. Mais especificamente, você paga por tráfego: quanto maior a quantidade de informação (bytes) que trafega na sua API (recebimento e envio de dados), maior será o custo da sua aplicação no final do mês.

Cada campo "ignorado" possui, portanto, um custo em dinheiro.

Ainda, imagine que a sua aplicação web recebe milhares de visitantes por dia e, portanto, cada vez que você precisar mostrar para esses visitantes quem está online, você vá desperdiçando cada vez mais informação.

Agora, imagine quantos outros endpoints existem dentro da sua aplicação e a quantidade de informação sendo "ignorada" pelo frontend. Multiplique isso pelo número de milhares de visitantes por dia.

Você verá, então, quanto dinheiro está sendo jogado fora.

O gasto de recursos aumenta significantemente à medida em que seu site aumenta a quantidade de clientes.

Esse problema se chama overfetching.

Ou seja:

O GraphQL permite que você peça ao back-end somente o que for utilizar, sem desperdiçar informação.

Se gostou do conteúdo, não deixe de me apoiar com seu like aqui ou na rede social onde você o encontrou! ;D

Top comments (0)