Show HN: Hatchet – cola de tareas distribuida de código abierto
Modelo de arquitectura y durabilidad
- Las tareas se respaldan con workflows predefinidos cuyos pasos y entradas/salidas se persisten en Postgres.
- Los componentes del motor sondean Postgres, asignan trabajo a través de conexiones gRPC de larga duración y registran timeouts y reintentos en la base de datos.
- La ejecución duradera es “al menos una vez”: los pasos pueden reproducirse con entradas almacenadas; se recomienda diseñar tareas idempotentes.
- No hace falta usar bloqueos basados en Redis; Postgres es la capa central de durabilidad y coordinación.
Comportamiento de los workers y semántica de fallos
- Los workers envían heartbeats cada pocos segundos; si están inactivos durante ~60s, las tareas se reasignan (si quedan reintentos).
- Las señales de cancelación se envían, pero no se garantiza su entrega; pueden producirse ejecuciones duplicadas si los workers ignoran las cancelaciones o regresan después de la reasignación.
- Esto se reconoce como un caso límite que necesita alertas y mejor monitorización.
Workflows, DAGs y limitaciones
- Los workflows se declaran como DAGs por adelantado; esto simplifica la visualización, el versionado y la depuración de varios pasos frente a código procedural.
- Compromisos: no hay try/catch dentro de una sola tarea, ni todavía un modelo simple de “await futures y agrupar más tarde”. Los workflows procedurales están en la hoja de ruta.
- Los workflows hijos pueden activarse desde pasos; se está considerando un fan-out basado en un valor de retorno de tipo array.
- La mutación dinámica del DAG en tiempo de ejecución no se describe actualmente como soportada.
Comparaciones con otras herramientas
- Se posiciona como una alternativa a Celery/Redis/RabbitMQ con observabilidad más fuerte y una UI, y conceptualmente similar a Temporal/Cadence pero más fácil de operar.
- Se diferencia de pg-boss/River/Graphile Worker por ser un servicio separado + UI en lugar de una biblioteca pura, y por añadir semántica de workflows y pools de workers.
- Comparado con Windmill/Inngest: motor de workflows similar basado en Postgres; Hatchet es más acotado (cola de tareas + workflows) y tiene licencia MIT.
Dependencias y decisiones de infraestructura
- Hoy usa Postgres más RabbitMQ para parte del pub/sub; a los mantenedores les gustaría migrar a Postgres LISTEN/NOTIFY o algo similar, pero señalan complicaciones con los poolers de conexiones y la reproducción.
- Algunas personas en el hilo argumentan que RabbitMQ es barato y fiable; otras prefieren minimizar las piezas alrededor de Postgres.
Autoalojamiento, cloud, precios y licencia
- Existe una guía de autoalojamiento; lo clave es un servicio de ingestión altamente disponible y Postgres gestionado con PITR.
- La oferta cloud está en acceso anticipado; el precio aún no se ha publicado.
- El proyecto es totalmente MIT; se espera obtener ingresos de Hatchet Cloud alojado y posiblemente de soporte empresarial.
- Hay conciencia del riesgo de “lift-and-serve” de los hyperscalers; aun así, eligen MIT.
Programación, trabajos retrasados y casos de uso
- Existe programación basada en cron mediante una biblioteca de Go; la programación única/diferida existe de forma básica y se está refactorizando para que dependa de la BD y escale.
- Algunos casos de uso de recordatorios/notificaciones a largo plazo (por ejemplo, seguimientos sanitarios) todavía no están bien soportados, pero son un objetivo.
- Hatchet no es específico de IA, pero se presenta como adecuado para pipelines de GenAI y otros workflows multietapa con uso intensivo de recursos.
Rendimiento y observabilidad
- Latencia media de arranque reportada: ~50 ms para el primer paso, ~25 ms para pasos posteriores en pruebas de carga; se reconoce que es más lenta que las colas de mensajes puras, pero aceptable para semántica de DAG/tareas.
- La observabilidad/UX es un gran punto de venta frente a Celery/Temporal: UI para inspeccionar workflows, salud de workers y ejecución de DAG; aún está mejorando la visibilidad de argumentos y la introspección de tipos/serialización.
Recepción general
- Muchos comentaristas están entusiasmados y dicen que llevaban tiempo esperando una cola multiidioma respaldada por Postgres con buena observabilidad.
- Los escépticos cuestionan la complejidad añadida frente a colas PG más simples, RabbitMQ o motores de workflows existentes, y plantean preocupaciones sobre casos límite (cancelación, semántica exactamente una vez, programación a largo plazo y bloat de dependencias).