>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
TypeScript

Como Parar de Escrever CRUD e Começar a Viver com Hasura

Te soa familiar? Você inicia um novo projeto, e as duas primeiras semanas são gastas em rotina monótona. Você precisa descrever schemas no banco de dados, criar modelos no código, escrever endpoints para criar, ler, atualizar e excluir registros. Depois adicione paginação, filtragem, ordenação, e é claro, descubra como lidar com permissões de acesso de alguma forma. Quando você finalmente chega à lógica de negócio real, seu entusiasmo já diminuiu um pouco.

Eu frequentemente me pegava pensando que 80% do backend em uma aplicação web típica é apenas redirecionando dados do banco de dados para JSON e vice-versa. Esse é exatamente o problema que o Hasura resolve.

O que exatamente é

Resumindo, Hasura é um mecanismo pronto que conecta aos seus bancos de dados e entrega instantaneamente uma API GraphQL pronta para produção. Você não precisa escrever código de servidor em Node.js, Go ou Python. Você simplesmente descreve tabelas em Postgres, MS SQL Server ou até mesmo MongoDB, e o Hasura mesmo gera o schema com todos os relacionamentos.

Logo do Hasura

O projeto no GitHub já coletou mais de 32 mil estrelas, e não é apenas "outro wrapper". É um compilador completo que transforma queries GraphQL em SQL eficiente.

Como o Hasura realmente ajuda no trabalho

Quando eu experimentei o Hasura pela primeira vez, o que me conquistou foi que ele não tenta prender o desenvolvedor em uma "gaiola dourada". Aqui estão algumas coisas que o tornam útil.

API instantânea com todas as funcionalidades

Assim que você conecta um banco de dados, você imediatamente ganha a capacidade de fazer consultas complexas. Quer puxar um usuário, suas últimas cinco compras e apenas os itens dessas compras que custam mais de 1.000 reais? Com REST tradicional, você teria que fazer três requisições ou escrever um endpoint personalizado com vários joins. No Hasura, é uma única query GraphQL que ele executará como uma única query SQL eficiente no banco de dados.

Segurança a nível de linha

Esta é provavelmente a funcionalidade mais poderosa do mecanismo. Hasura possui um sistema de controle de acesso integrado (RBAC). Você pode dizer: "Um usuário com a role editor pode ver apenas os artigos onde ele está listado como autor". Isso é configurado diretamente no console ou via arquivos YAML. Você não precisa verificar if (user.id === article.author_id) em cada método de controller.

Reatividade integrada

Se você precisa de atualizações em tempo real (por exemplo, para um chat ou feed de notificações), Hasura suporta GraphQL Subscriptions. Ele monitora automaticamente mudanças no banco de dados e envia dados para o cliente via WebSockets. Configurar isso manualmente do zero é bastante trabalhoso, especialmente se você precisa considerar permissões de acesso.

Arquitetura orientada a eventos

Hasura pode acionar webhooks quando o banco de dados muda. Um novo usuário adicionado? Hasura enviará uma requisição POST para seu microsserviço, que enviará um email de boas-vindas. Isso permite descarregar lógica pesada para funções externas (Serverless ou microsserviços tradicionais), mantendo a API limpa.

O que há de novo na versão três

Hasura V3 está em desenvolvimento ativo. A equipe repensou a arquitetura e focou em conectores. O mecanismo agora é escrito em Rust (anteriormente Haskell), o que deve afetar positivamente o consumo de memória e a velocidade.

V3 introduziu o conceito de "supergraph" — isso é quando você pode combinar dados de diferentes fontes (Postgres, Mongo, ClickHouse) em uma única API lógica. Ao mesmo tempo, você pode escrever lógica personalizada em TypeScript, Python ou Go usando seus SDKs.

Nuances técnicas e uma mosca na pomada

Não pense nisso como uma "bala de prata". Hasura é uma camada adicional na sua infraestrutura.

  1. Dificuldade de debug: quando algo dá errado em uma query SQL gerada, pode ser difícil entender por que o Hasura decidiu construí-la assim. Embora o console tenha uma ferramenta Analyze que mostra o plano de execução da query.
  2. Dependência da estrutura do DB: Hasura é muito acoplado a como seu banco de dados é projetado. Se você tiver uma bagunça de tabelas sem foreign keys, não haverá mágica. Você precisará primeiro organizar o schema de dados.
  3. Curva de aprendizado: apesar do início muito rápido, a configuração profunda de permissões de acesso e trabalhar com Remote Schemas leva tempo para aprender na documentação.

Quem se beneficiaria disso

Hasura é uma escolha perfeita para projetos onde o time de frontend quer se mover rápido e não quer esperar o backend escrever mais um endpoint. É ótimo para MVPs, painéis administrativos internos e dashboards onde há muito trabalho com dados e filtragem.

Se você está construindo um sistema com lógica de negócio muito específica que é difícil de encaixar no paradigma CRUD, Hasura ainda pode ser útil como uma "camada de dados" sobre a qual você constrói seus serviços.

A maneira mais fácil de experimentar é através do Docker — o repositório tem arquivos docker-compose prontos. Literalmente em cinco minutos, você terá um console funcionando com um sandbox GraphQL. Se você está cansado de escrever controllers repetitivos, esta é definitivamente uma ferramenta que vale a pena experimentar.

Projetos relacionados