انتقل إلى المحتوى
use-cases / daily-rollups-no-orchestrator / hero
DAILY ROLLUPS · NO ORCHESTRATOR

تجميعات يوميّة بلا مُنسِّق

كلّ ليلة عند الواحدة صباحاً، قيد cron يستدعي بـ curl رابط exec. السكربت يُنفّذ SQL التجميع على رابط sqlite ويكتب الجدول اليوميّ. لا Airflow Postgres، لا ملفّ DAG، لا لوحة مُجدوِل بـ 14 عنصراً، لا مناوب للمُنسِّق نفسه.

اقرأ التوثيق
use-cases / daily-rollups-no-orchestrator / mechanism

رابطان وجدول من خمسة حقول

خطّ الإنتاج كلّه قيد cron واحد يشير إلى رابط exec واحد. قيد cron هو POST إلى /users/root/entries. رابط exec سكربت صغير يفتح رابط sqlite، يُنفّذ SQL التجميع، ويعيد الصفوف الجديدة. هذا كامل الـ DAG.

POST /users/root/entries
الجدول
// كل ليل بـ 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
خطّ الإنتاج
// جسم خط الأنابيب بالكامل
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() };

إن فشل التجميع، تقول سجلّات cron ذلك. إن احتجت تعويض الأمس، تستدعي رابط exec يدويّاً بـ curl مع وسيط تاريخ. لا نظام ثانٍ تتعلّمه، لا قاعدة بيانات مُجدوِل تُبقيها حيّة، لا ملفّ DAG تلتزم به. المُنسِّق قيد cron يشير إلى رابط.

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

ما لم تضطرّ لبنائه

Hoody Kit يشحن المُجدوِل وبيئة التشغيل والتخزين كخدمات HTTP عاديّة. خطّ الإنتاج هو مكالمة curl بينها — لا شيء آخر.

بلا داعم مُنسِّق

المُجدوِل قيد HTTP

hoody-cron يخزّن الجداول كموارد على /users/root/entries. لا قاعدة بيانات تعريفيّة في Postgres تنسخها احتياطيّاً، لا حاوية مُجدوِل تُبقيها صحّيّة، لا مستودع DAG تنشره. أرسل POST صفّاً، وينطلق التشغيل.

بلا توصيل بيئة تشغيل

السكربت رابط

hoody-exec يُنفّذ سكربت التجميع عند الطلب على exec.containers.hoody.com/scripts/rollup/run. cron يستدعيه بـ curl، يحصل على 200، يُسجّل الردّ. لا طابور عامل، لا وسيط، لا رسم بياني مهامّ مُسلسَل.

بلا خطّ سجلّات

تاريخ التشغيل هو جسم الردّ

كلّ مكالمة exec تعيد الصفوف الجديدة بصيغة JSON ويُسجّلها cron مع الحالة والطابع الزمنيّ والـ stdout. التعويضات والإخفاقات وإعادات التشغيل تعيش كلّها في نفس الرابطين — لا شيء إضافيّ تشحنه إلى مُجمّع سجلّات.

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

إن فشل تشغيل — أو احتجت تعويضاً

خطّ الإنتاج رابطان ومعامل تاريخ. إعادة تشغيل الأمس بنفس الشكل كالتشغيل الليليّ، فقط مع ?date=2026-04-30 على رابط exec. لا واجهة إعادة تشغيل، لا تذمّرات مُجدوِل.

  1. 01 · كشف

    سجلّات cron تقول إنّه فشل

    إن أعاد تشغيل الواحدة صباحاً غير 2xx، يعرض سجلّ آخر تشغيل للقيد على hoody-cron رمز الخروج وجسم الردّ المُلتقط. لا خدمة تنبيه منفصلة تُربطها — أرسل GET للقيد واقرأها.

  2. 02 · تعويض

    استدعِ رابط exec بـ curl مع ?date=

    يقبل السكربت معامل تاريخ. أعطه تاريخ الأمس فيُعيد حساب صفّ تجميع ذلك اليوم، ويستبدل المكسور بـ INSERT OR REPLACE. أمر واحد، لا واجهة إعادة تحفيز DAG.

  3. 03 · تحقّق

    الردّ هو الصفّ الجديد

    exec يعيد صفّ التجميع المكتوب حديثاً بصيغة JSON. قارنه بما توقّعت ثمّ امضِ. لا شيء آخر تتحقّق منه — رابط اللوحة يقدّم نفس الجدول الذي كتبته للتوّ.

// إعادة تشغيل تجميع أمس باليدcurl -fsS https://exec.containers.hoody.com/scripts/rollup/run?date=2026-04-30
use-cases / daily-rollups-no-orchestrator / capacity

شكل خطّ الإنتاج

ثلاثة أرقام تصف النظام بأكمله. قارنها بما يبدو عليه نشر Airflow في مستودعك اليوم.

  1. حقول · جدول CRON5

    دقيقة، ساعة، يوم من الشهر، شهر، يوم من الأسبوع. هذا كامل سطح الإعداد لمتى ينطلق التشغيل.

  2. روابط · ENTRY + EXEC2

    POST واحد لتسجيل الجدول، GET واحد يُشغّل السكربت. هذا كامل خطّ الإنتاج القابل للنشر.

  3. دواعم · بلا مُنسِّق0

    لا عمليّة مُجدوِل تُبقيها حيّة، لا قاعدة بيانات تعريفيّة، لا بِركة عمّال. Hoody Kit يحمل الجداول ويُشغّل السكربت.

الأرقام تصف نموذج cron + exec على Hoody Kit. خطّ الإنتاج الحاليّ لديك يحتوي غالباً قطعاً متحرّكة أكثر؛ هذه نقطة المقارنة.

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

المُنسِّق قيد cron يشير إلى رابط.

قبل · حزمة مُجدوِلبعد · سطر cron واحد
قبلairflow webserver + scheduler + worker + postgres + dags/rollup_daily.pyخمس عمليّات، قاعدة بيانات تعريفيّة، ومستودع ملفّات DAG
الآن0 1 * * * curl -fsS https://exec.containers.hoody.com/scripts/rollup/runسطر واحد. رابط واحد. جدول واحد.
اقرأ التوثيق
use-cases / daily-rollups-no-orchestrator / replaces

ما يحلّ محلّه

طبقة التنسيق تنطوي إلى cron من سطر واحد. الـ DAG يعيش في سكربتك.

  • Apache AirflowPostgres + Redis + مُجدوِل + عامل لاستعلام واحد
  • Prefectحساب سحابة، تثبيت وكيل، تسجيل تدفّق
  • Dagsterبايثونيّ، لكنّه ما زال خدمة تُشغّلها
  • Luigiمحرّك رسم بياني لجدولة SQL ليليّ
  • جداول GitHub Actionsمثبّتة على main، لا سياق لكلّ مستأجر
  • dbt CloudSaaS تلفّ CLI تلفّ SELECT
  • مُجدوِلات بايثون مخصّصةحلقة while وتجريب/استثناء، تُسمّى «متينة»
use-cases / daily-rollups-no-orchestrator / cta

كفّ عن تشغيل مُنسِّق. شغّل قيد cron.

اقرأ التوثيق
use-cases / daily-rollups-no-orchestrator / related

اقرأ الآخرين