Ir al contenido
use-cases / daily-rollups-no-orchestrator / hero
ROLLUPS DIARIOS · SIN ORQUESTADOR

Rollups diarios sin orquestador

Cada noche a la 1 AM, una entrada de cron hace curl a una URL exec. El script ejecuta tu SQL de rollup sobre la URL de sqlite y escribe la tabla diaria de vuelta. Sin Postgres de Airflow, sin archivo DAG, sin dashboard de scheduler con 14 widgets, sin guardia para el orquestador en sí.

Leer la documentación
use-cases / daily-rollups-no-orchestrator / mechanism

Dos URLs y un horario de cinco campos

Toda la pipeline es una entrada de cron apuntando a una URL exec. La entrada de cron es un POST a /users/root/entries. La URL exec es un script pequeño que abre la URL de sqlite, ejecuta el SQL del rollup y devuelve las nuevas filas. Ese es todo el DAG.

POST /users/root/entries
EL HORARIO
// cada noche a las 01:00 UTC
POST /users/root/entries
{
  "schedule": "0 1 * * *",
  "command":  "curl -fsS https://exec.containers.hoody.com/scripts/rollup/run"
}
1AM · CURL
exec.containers.hoody.com/scripts/rollup/run
LA PIPELINE
// el cuerpo entero de la pipeline
import { Database } from "bun:sqlite";

const db = new Database("events.db");
db.run(`INSERT INTO rollup_daily
         SELECT date_trunc('day', created_at), count(*)
         FROM   events GROUP BY 1;`);

return { ok: true, rows: db.query("SELECT * FROM rollup_daily").all() };

Si el rollup falla, los logs de cron lo dicen. Si necesitas hacer backfill de ayer, haces curl a la URL exec a mano con un parámetro de fecha. No hay un segundo sistema que aprender, ni base de datos del scheduler que mantener viva, ni archivo DAG que commitear. El orquestador es una entrada de cron apuntando a una URL.

use-cases / daily-rollups-no-orchestrator / powers

Lo que no tuviste que construir

El Hoody Kit envía el scheduler, el runtime y el almacenamiento como servicios HTTP corrientes. La pipeline es la llamada curl entre ellos — nada más.

SIN DEMONIO ORQUESTADOR

El scheduler es una entrada HTTP

hoody-cron almacena los horarios como recursos en /users/root/entries. Sin DB de metadatos en Postgres que respaldar, sin contenedor del scheduler que mantener sano, sin repositorio de DAGs que desplegar. Haces POST a una fila y el run dispara.

SIN CABLEADO DE RUNTIME

El script es una URL

hoody-exec ejecuta el script del rollup bajo demanda en exec.containers.hoody.com/scripts/rollup/run. cron le hace curl, recibe un 200, registra la respuesta. Sin cola de workers, sin broker, sin grafo de tareas pickleado.

SIN PIPELINE DE LOGS

El historial de ejecuciones es el cuerpo de la respuesta

Cada llamada a exec devuelve las nuevas filas como JSON y queda registrada por cron con estado, timestamp y stdout. Backfills, fallos y reruns viven en las mismas dos URLs — nada extra que enviar a un agregador de logs.

use-cases / daily-rollups-no-orchestrator / backfill

Si una ejecución falla — o necesitas hacer backfill

La pipeline son dos URLs y un parámetro de fecha. Reejecutar lo de ayer tiene la misma forma que la ejecución nocturna, solo que con ?date=2026-04-30 en la URL exec. Sin UI de replay, sin manías del scheduler.

  1. 01 · DETECTAR

    los logs de cron dicen que falló

    Si la ejecución de la 1 AM devolvió un no-2xx, el registro de last-run de la entrada en hoody-cron muestra el exit code y el cuerpo de la respuesta capturado. Sin servicio de alertas separado que cablear — haces GET a la entrada y lo lees.

  2. 02 · BACKFILL

    haz curl a la URL exec con ?date=

    El script acepta un parámetro de fecha. Pasa la fecha de ayer y recalcula la fila del rollup de ese día, reemplazando la rota con un INSERT OR REPLACE. Un comando, sin UI de re-trigger de DAG.

  3. 03 · VERIFICAR

    la respuesta es la nueva fila

    exec devuelve la fila del rollup recién escrita como JSON. Compárala con lo que esperabas, y a otra cosa. Nada más que comprobar — la URL del dashboard sirve la misma tabla que acabas de escribir.

// reejecutar el rollup de ayer a manocurl -fsS https://exec.containers.hoody.com/scripts/rollup/run?date=2026-04-30
use-cases / daily-rollups-no-orchestrator / capacity

La forma de la pipeline

Tres números describen el sistema entero. Compáralos con cómo se ve un despliegue de Airflow en tu repo hoy.

  1. CAMPOS · HORARIO CRON5

    minuto, hora, día del mes, mes, día de la semana. Esa es toda la superficie de configuración para cuándo dispara una ejecución.

  2. URLS · ENTRADA + EXEC2

    un POST para registrar el horario, un GET que ejecuta el script. Esa es toda la pipeline desplegable.

  3. DEMONIOS · SIN ORQUESTADOR0

    sin proceso scheduler que mantener vivo, sin base de datos de metadatos, sin pool de workers. Hoody Kit guarda los horarios y ejecuta el script.

Los números describen el modelo cron + exec sobre Hoody Kit. Tu pipeline existente probablemente tiene más piezas en movimiento; ese es el punto de la comparación.

use-cases / daily-rollups-no-orchestrator / punchline

El orquestador es una entrada de cron apuntando a una URL.

ANTES · UNA PILA DE SCHEDULERDESPUÉS · UNA LÍNEA DE CRON
ANTESairflow webserver + scheduler + worker + postgres + dags/rollup_daily.pyCINCO PROCESOS, UNA DB DE METADATOS Y UN REPO DE ARCHIVOS DAG
AHORA0 1 * * * curl -fsS https://exec.containers.hoody.com/scripts/rollup/runUNA LÍNEA. UNA URL. UN HORARIO.
Leer la documentación
use-cases / daily-rollups-no-orchestrator / replaces

Lo que esto reemplaza

La capa de orquestación se colapsa en una línea de cron. El DAG vive en tu script.

  • Apache AirflowUn Postgres + Redis + scheduler + worker para una sola query
  • PrefectCuenta cloud, instalación de agente, registro de flow
  • DagsterPythónico, pero sigue siendo un servicio que corres
  • LuigiUn motor de grafo para programar tu SQL nocturno
  • Schedules de GitHub ActionsPinneado a main, sin contexto por inquilino
  • dbt CloudUn SaaS para envolver una CLI para envolver un SELECT
  • Schedulers de Python a medidaUn while y un try/except, llamado "robusto"
use-cases / daily-rollups-no-orchestrator / cta

Deja de operar un orquestador. Opera una entrada de cron.

Leer la documentación
use-cases / daily-rollups-no-orchestrator / related

Lee los otros