>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
TypeScript

Cómo dejar de escribir CRUD y empezar a vivir con Hasura

¿Te suena familiar? Inicias un nuevo proyecto y las primeras dos semanas se van en una rutina monótona. Necesitas describir los esquemas en la base de datos, crear modelos en código, escribir endpoints para crear, leer, actualizar y eliminar registros. Luego agregas paginación, filtrado, ordenamiento y, por supuesto, intentas resolver los permisos de acceso de alguna manera. Para cuando llegas a la lógica de negocio real, tu entusiasmo ya se ha desvanecido un poco.

Con frecuencia me encontraba pensando que el 80% del backend en una aplicación web típica es simplemente hacer de proxy entre la base de datos y JSON, y viceversa. Ese es exactamente el problema que resuelve Hasura.

Qué es exactamente

En resumen, Hasura es un motor listo para usar que se conecta a tus bases de datos y genera al instante una API GraphQL lista para producción. No necesitas escribir código de servidor en Node.js, Go o Python. Simplemente describes las tablas en Postgres, MS SQL Server o incluso MongoDB, y Hasura genera automáticamente el esquema con todas las relaciones.

Logo de Hasura

El proyecto en GitHub ya ha recopilado más de 32 mil estrellas, y no es solo "otro wrapper". Es un compilador completo que transforma consultas GraphQL en SQL eficiente.

Cómo Hasura realmente ayuda en el trabajo

Cuando probé Hasura por primera vez, lo que me conquistó fue que no intenta encerrar al desarrollador en una "jaula de oro". Aquí hay algunas cosas que lo hacen útil.

API instantánea con todas las funcionalidades

Una vez que conectas una base de datos, obtienes inmediatamente la capacidad de hacer consultas complejas. ¿Quieres obtener un usuario, sus últimas cinco órdenes y solo los artículos de esas órdenes que cuestan más de 1,000 rublos? Con REST convencional, tendrías que hacer tres solicitudes o escribir un endpoint personalizado con un montón de joins. En Hasura, es una consulta GraphQL que ejecutará como una única consulta SQL eficiente contra la base de datos.

Seguridad a nivel de fila

Esta es probablemente la funcionalidad más fuerte del motor. Hasura tiene un sistema integrado de control de acceso (RBAC). Puedes decir: "Un usuario con el rol editor solo puede ver los artículos donde aparece como autor". Esto se configura directamente en la consola o mediante archivos YAML. No necesitas verificar if (user.id === article.author_id) en cada método del controlador.

Reactividad integrada

Si necesitas actualizaciones en tiempo real (por ejemplo, para un chat o un feed de notificaciones), Hasura soporta GraphQL Subscriptions. Monitorea automáticamente los cambios en la base de datos y envía los datos al cliente a través de WebSockets. Configurar esto manualmente desde cero es bastante complicado, especialmente si necesitas tener en cuenta los permisos de acceso.

Arquitectura orientada a eventos

Hasura puede activar webhooks cuando la base de datos cambia. ¿Se agregó un nuevo usuario? Hasura enviará una solicitud POST a tu microservicio, que enviará un correo de bienvenida. Esto te permite descargar lógica pesada a funciones externas (Serverless o microservicios convencionales), manteniendo la API limpia.

Qué hay de nuevo en la versión tres

Hasura V3 se encuentra ahora en desarrollo activo. El equipo ha repensado la arquitectura y se ha centrado en los conectores. El motor ahora está escrito en Rust (anteriormente en Haskell), lo que debería afectar positivamente el consumo de memoria y la velocidad.

V3 introdujo el concepto de "supergraph" — esto es cuando puedes combinar datos de diferentes fuentes (Postgres, Mongo, ClickHouse) en una única API lógica. Al mismo tiempo, puedes escribir lógica personalizada en TypeScript, Python o Go usando sus SDK.

Matices técnicos y una mosca en el ungüento

No pienses en esto como una "bala de plata". Hasura es una capa adicional en tu infraestructura.

  1. Dificultad de depuración: cuando algo sale mal en una consulta SQL generada, puede ser difícil entender por qué Hasura decidió construirla de esa manera. Aunque la consola tiene una herramienta Analyze que muestra el plan de ejecución de la consulta.
  2. Dependencia de la estructura de la BD: Hasura está muy acoplado a cómo está diseñada tu base de datos. Si tienes un desorden de tablas sin claves foráneas, no habrá magia. Primero necesitarás organizar el esquema de datos.
  3. Curva de aprendizaje: a pesar del inicio muy rápido, la configuración profunda de los permisos de acceso y el trabajo con Remote Schemas lleva tiempo de aprendizaje desde la documentación.

Quién se beneficiará de esto

Hasura es perfecto para proyectos donde el equipo de frontend quiere moverse rápido y no esperar a que el backend escriba otro endpoint. Es ideal para MVPs, paneles de administración internos y dashboards donde hay mucho trabajo con datos y filtrado.

Si estás construyendo un sistema con lógica de negocio muy específica que es difícil de encajar en el paradigma CRUD, Hasura aún puede ser útil como una "capa de datos" sobre la cual construyes tus servicios.

La forma más fácil de probarlo es a través de Docker: el repositorio tiene archivos docker-compose listos para usar. Literalmente en cinco minutos tendrás una consola funcionando con un sandbox de GraphQL. Si estás cansado de escribir controladores repetitivos, definitivamente es una herramienta que vale la pena probar.

Proyectos relacionados