>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
TypeScript

Comment arrêter d'écrire du CRUD et commencer à vivre avec Hasura

Ça vous parle ? Vous démarrez un nouveau projet, et les deux premières semaines sont consacrées à une routine monotone. Vous devez décrire les schémas dans la base de données, créer des modèles dans le code, écrire des endpoints pour créer, lire, mettre à jour et supprimer des enregistrements. Ensuite, vous ajoutez la pagination, le filtrage, le tri, et bien sûr, vous devez trouver comment gérer les permissions d'accès. Quand vous arrivez enfin à la logique métier réelle, votre enthousiasme s'est déjà quelque peu éteint.

Je me surprenais souvent à penser que 80% du backend dans une application web typique n'est qu'une mise en proxy des données de la base de données vers JSON et vice versa. C'est exactement le problème qu'Hasura résout.

Ce que c'est exactement

En bref, Hasura est un moteur prêt à l'emploi qui se connecte à vos bases de données et fournit instantanément une API GraphQL prête pour la production. Vous n'avez pas besoin d'écrire de code serveur en Node.js, Go ou Python. Vous décrivez simplement les tables dans Postgres, MS SQL Server, ou même MongoDB, et Hasura génère lui-même le schéma avec toutes les relations.

Logo Hasura

Le projet GitHub a déjà recueilli plus de 32 mille étoiles, et ce n'est pas juste "un autre wrapper". C'est un véritable compilateur qui transforme les requêtes GraphQL en SQL efficace.

Comment Hasura aide concrètement au travail

Quand j'ai essayé Hasura pour la première fois, ce qui m'a conquis, c'est qu'il ne cherche pas à enfermer le développeur dans une "cage dorée". Voici quelques éléments qui le rendent utile.

API instantanée avec toutes les fonctionnalités

Une fois que vous connectez une base de données, vous obtenez immédiatement la possibilité de faire des requêtes complexes. Vous voulez récupérer un utilisateur, ses cinq dernières commandes, et seulement les articles de ces commandes qui coûtent plus de 1 000 euros ? Avec un REST classique, vous devriez soit faire trois requêtes, soit écrire un endpoint personnalisé avec une multitude de jointures. Dans Hasura, c'est une seule requête GraphQL qu'il exécutera comme une seule requête SQL efficace contre la base de données.

Sécurité au niveau des lignes

C'est probablement la fonctionnalité la plus forte du moteur. Hasura dispose d'un système de contrôle d'accès intégré (RBAC). Vous pouvez dire : "Un utilisateur avec le rôle editor ne peut voir que les articles dont il est l'auteur". Ceci est configuré directement dans la console ou via des fichiers YAML. Vous n'avez pas besoin de vérifier if (user.id === article.author_id) dans chaque méthode de contrôleur.

Réactivité intégrée

Si vous avez besoin de mises à jour en temps réel (par exemple, pour un chat ou un flux de notifications), Hasura prend en charge les abonnements GraphQL. Il surveille automatiquement les modifications dans la base de données et envoie les données au client via WebSockets. Configurer cela manuellement depuis zéro est assez complexe, surtout si vous devez tenir compte des permissions d'accès.

Architecture événementielle

Hasura peut déclencher des webhooks lorsque la base de données change. Un nouvel utilisateur ajouté ? Hasura enverra une requête POST à votre microservice, qui enverra un e-mail de bienvenue. Cela vous permet de décharger la logique lourde vers des fonctions externes (Serverless ou microservices classiques), gardant l'API propre.

Nouveautés de la version trois

Hasura V3 est maintenant en développement actif. L'équipe a repensé l'architecture et s'est concentrée sur les connecteurs. Le moteur est maintenant écrit en Rust (auparavant en Haskell), ce qui devrait avoir un impact positif sur la consommation de mémoire et la vitesse.

V3 a introduit le concept de "supergraphe" — c'est quand vous pouvez combiner des données de différentes sources (Postgres, Mongo, ClickHouse) dans une seule API logique. En même temps, vous pouvez écrire une logique personnalisée en TypeScript, Python ou Go en utilisant leur SDK.

Nuances techniques et ombre au tableau

Ne considérez pas cela comme une "balle en argent". Hasura est une couche supplémentaire dans votre infrastructure.

  1. Difficulté de débogage : quand quelque chose ne fonctionne pas dans une requête SQL générée, il peut être difficile de comprendre pourquoi Hasura a décidé de la construire de cette façon. Bien que la console dispose d'un outil Analyze qui montre le plan d'exécution de la requête.
  2. Dépendance à la structure de la base de données : Hasura est très fortement lié à la façon dont votre base de données est conçue. Si vous avez un désordre de tables sans clés étrangères, il n'y aura pas de magie. Vous devrez d'abord nettoyer le schéma de données.
  3. Courbe d'apprentissage : malgré un démarrage très rapide, la configuration en profondeur des permissions d'accès et le travail avec les Remote Schemas prennent du temps à apprendre dans la documentation.

Qui bénéficiera de ceci

Hasura est particulièrement adapté aux projets où l'équipe frontend veut avancer vite et ne pas attendre que le backend écrive un autre endpoint. C'est idéal pour les MVPs, les panneaux d'administration internes et les tableaux de bord où il y a beaucoup de travail de données et de filtrage.

Si vous construisez un système avec une logique métier très spécifique qui est difficile à caser dans le paradigme CRUD, Hasura peut quand même être utile comme "couche de données" sur laquelle vous construisez vos services.

Le moyen le plus simple de l'essayer est via Docker — le dépôt contient des fichiers docker-compose prêts à l'emploi. Littéralement en cinq minutes, vous aurez une console fonctionnelle avec un bac à sable GraphQL. Si vous êtes fatigué d'écrire des contrôleurs répétitifs, c'est définitivement un outil qui mérite d'être essayé.

Projets similaires