Come smettere di scrivere CRUD e iniziare a vivere con Hasura
Ti suona familiare? Inizi un nuovo progetto e le prime due settimane sono dedicate a routine monotone. Devi descrivere gli schemi nel database, creare i modelli nel codice, scrivere endpoint per creare, leggere, aggiornare ed eliminare record. Poi aggiungi paginazione, filtri, ordinamento e, naturalmente, devi in qualche modo gestire i permessi di accesso. Quando arrivi alla logica di business vera e propria, il tuo entusiasmo si è già un po' affievolito.
Spesso mi sono trovato a pensare che l'80% del backend in un'applicazione web tipica sia solo un proxy dei dati dal database a JSON e viceversa. È esattamente questo il problema che Hasura risolve.
Cos'è esattamente
In breve, Hasura è un motore pronto all'uso che si connette ai tuoi database e fornisce immediatamente un'API GraphQL di produzione. Non devi scrivere codice server in Node.js, Go o Python. Descrivi semplicemente le tabelle in Postgres, MS SQL Server o anche MongoDB, e Hasura genera automaticamente lo schema con tutte le relazioni.

Il progetto su GitHub ha già raccolto oltre 32mila stelle, e non è solo "un'altra wrapper". È un compilatore a tutti gli effetti che trasforma le query GraphQL in SQL efficiente.
Come Hasura aiuta davvero nel lavoro
Quando ho provato Hasura per la prima volta, quello che mi ha conquistato è che non cerca di rinchiudere lo sviluppatore in una "gabbia dorata". Ecco alcune caratteristiche che lo rendono utile.
API istantanea con tutte le funzionalità
Una volta connesso un database, ottieni immediatamente la possibilità di eseguire query complesse. Vuoi recuperare un utente, i suoi ultimi cinque ordini e solo gli articoli di quegli ordini che costano più di 1.000 rubli? Con REST normale, dovresti fare tre richieste o scrivere un endpoint personalizzato con un sacco di join. In Hasura, è una singola query GraphQL che verrà eseguita come una singola query SQL efficiente sul database.
Sicurezza a livello di riga
Questa è probabilmente la funzionalità più forte del motore. Hasura ha un sistema integrato di controllo degli accessi (RBAC). Puoi dire: "Un utente con il ruolo editor può vedere solo gli articoli di cui è indicato come autore". Questo viene configurato direttamente nella console o tramite file YAML. Non devi controllare if (user.id === article.author_id) in ogni metodo del controller.
Reattività integrata
Se hai bisogno di aggiornamenti in tempo reale (ad esempio per una chat o un feed di notifiche), Hasura supporta le GraphQL Subscriptions. Monitora automaticamente le modifiche nel database e invia i dati al client tramite WebSockets. Configurare tutto questo manualmente da zero è piuttosto complesso, soprattutto se devi tenere conto dei permessi di accesso.
Architettura event-driven
Hasura può attivare webhook quando il database cambia. Aggiunto un nuovo utente? Hasura invierà una richiesta POST al tuo microservizio, che invierà un'email di benvenuto. Questo ti permette di scaricare la logica pesante su funzioni esterne (Serverless o microservizi normali), mantenendo l'API pulita.
Novità nella versione tre
Hasura V3 è ora in fase di sviluppo attivo. Il team ha ripensato l'architettura e si è concentrato sui connettori. Il motore è ora scritto in Rust (precedentemente Haskell), il che dovrebbe influenzare positivamente il consumo di memoria e la velocità.
V3 ha introdotto il concetto di "supergraph" — ovvero la possibilità di combinare dati da fonti diverse (Postgres, Mongo, ClickHouse) in una singola API logica. Allo stesso tempo, puoi scrivere logica personalizzata in TypeScript, Python o Go usando i loro SDK.
Sfumature tecniche e un neo
Non pensare a questo come a una "bala d'argento". Hasura è un livello aggiuntivo nella tua infrastruttura.
- Difficoltà di debug: quando qualcosa non funziona in una query SQL generata, può essere difficile capire perché Hasura ha deciso di costruirla in quel modo. Anche se la console ha uno strumento Analyze che mostra il piano di esecuzione della query.
- Dipendenza dalla struttura del DB: Hasura è strettamente accoppiato al modo in cui il tuo database è progettato. Se hai un disastro di tabelle senza chiavi esterne, non ci sarà magia. Dovrai prima mettere ordine nello schema dei dati.
- Curva di apprendimento: nonostante l'avvio molto rapido, la configurazione approfondita dei permessi di accesso e il lavoro con i Remote Schemas richiedono tempo per essere appresi dalla documentazione.
Chi trarrà beneficio da questo
Hasura è perfetto per progetti dove il team frontend vuole muoversi velocemente e non aspettare che il backend scriva un altro endpoint. È ottimo per MVP, pannelli di amministrazione interni e dashboard dove c'è molto lavoro sui dati e filtri.
Se stai costruendo un sistema con logica di business molto specifica che è difficile inserire nel paradigma CRUD, Hasura può comunque essere utile come "livello dati" su cui costruire i tuoi servizi.
Il modo più semplice per provarlo è tramite Docker — il repository ha file docker-compose già pronti. Letteralmente entro cinque minuti, avrai una console funzionante con un sandbox GraphQL. Se sei stanco di scrivere controller ripetitivi, questo è sicuramente uno strumento da provare.
Progetti correlati