انتقل إلى المحتوى
use-cases / three-cadences-one-container / hero
CRON · CRONTAB واحد · حاوية واحدة

ثلاثة إيقاعات، حاوية واحدة، على خادم بسعر ثابت

كشط متصفح كل ساعة، خلاصة SQLite يومية، أرشفة ملفات أسبوعية. ثلاثة إيقاعات تتداخل بنظافة في crontab واحد — إنها مجرد ثلاثة صفوف من `* * * * *` تشير إلى ثلاثة سكربتات. لا خدمة جدولة، ولا طابور مهام، ولا تجمّع عمّال.

اقرأ مستندات cron
الفوترة
هذا الشهر
flat-rateخادم / شهر
  • تعمل بداخل خادم واحد
  • ثلاثة إيقاعات
  • صفر خدمات جدولة
cpu الحاوية · 24h
−24h → الآن
خط أساس الخمول~4%
ارتفاعات فقط في أوقات التشغيل الثلاثة — مسطّحة بينها
use-cases / three-cadences-one-container / mechanism

PUT واحد يكتب الجدول كاملاً

خدمة Hoody Cron تكشف ملف crontab الخام كمورد REST. أرسل PUT للملف مرة، ويشغّله الـ kernel للأبد. ثلاثة أسطر، ثلاثة سكربتات — كل سكربت سطر واحد يتحدث HTTP بالفعل.

request · /users/root/crontab
PUT · raw crontab
# استبدل crontab بأكمله في استدعاء واحد.
PUT /users/root/crontab
Content-Type: text/plain

@hourly  bash /scripts/scrape.sh
0 9 * * * bash /scripts/digest.sh
0 0 * * 0 bash /scripts/archive.sh

HTTP/1.1 204 No Content
الـ kernel يقوم بالباقي
scripts · /scripts/*.sh
exec · ثلاث وحدات
# scrape.sh — كل ساعة، أرسل لقطة شاشة إلى sqlite
curl -sS https://browser.containers.hoody.com/screenshot \
  --data-urlencode "url=https://store.hoody.com/p/123" | sqlite3 /data/prices.db \
  "INSERT INTO rows VALUES (?, ?, ?)"

# digest.sh — في 9 صباحاً، احسب الفروقات وأرسل الخلاصة
sqlite3 /data/prices.db < /scripts/digest.sql \
  > /tmp/digest.txt && curl -T /tmp/digest.txt \
  https://pipe.hoody.com/api/v1/pipe/digest

# archive.sh — الأحد منتصف الليل، فرّغ وخزّن
sqlite3 /data/prices.db ".dump" | curl -T - \
  https://files.containers.hoody.com/archives/$(date +%Y-w%V).sql

ثلاثة سكربتات. ثلاثة عناوين URL يعرفون كيفية استدعائها. طلب PUT واحد لتثبيت الجدول. لا توجد خدمة جدولة أمام هذا — crond الخاص بالـ kernel يقرأ الملف الذي كتبته ويُشغّله.

use-cases / three-cadences-one-container / cadences

ثلاثة إيقاعات، ثلاثة سكربتات

كل إيقاع يحتوي تعبيراً واحداً من خمسة حقول وسطر shell واحد خلفه. لا أحد منها يحتاج لمعرفة الآخرَين — يتشاركون فقط قرصاً وساعة.

كل ساعة · كشط

اسحب صفحات المنافسين إلى SQLite

hoody-browser يلتقط لقطات شاشة لقائمة من عناوين URL للمنتجات. كل صف يذهب مباشرة إلى جدول SQLite على وحدة تخزين الحاوية. لا تجمّع عمّال كشط — سطر cron هو تجمّع العمّال.

@hourly bash /scripts/scrape.sh
يومي · خلاصة

احسب الفروقات، أرسل خلاصة

في 9 صباحاً سكربت الخلاصة يقرأ صفوف آخر 24 ساعة، يحسب فروق الأسعار، ويُرسل الخلاصة عبر curl إلى عنوان URL لـ pipe. صندوق بريدك / لوحتك يقرأ من الـ pipe نفسه.

0 9 * * * bash /scripts/digest.sh
أسبوعي · أرشيف

فرّغ الأسبوع إلى عنوان URL للملفات

الأحد منتصف الليل سكربت الأرشيف يُجري `.dump` لـ SQLite، يُسمّي الملف بأسبوع ISO، ويُرسله بـ PUT إلى hoody-files. الصفوف القديمة تُقلَّم. الحجم يبقى صغيراً للأبد.

0 0 * * 0 bash /scripts/archive.sh
use-cases / three-cadences-one-container / powers

ما تفتحه ثلاثة أسطر

ثلاثة إيقاعات في حاوية واحدة ليست خدعة — إنها الشكل الطبيعي لـ cron. المنصة أعطتك مجدوِلاً بالفعل؛ أنت فقط توقّفت عن الدفع له ثلاث مرات.

تخزين

السكربتات الثلاثة تتشارك قرصاً واحداً

الكشط الساعي يكتب الصفوف التي تقرأها الخلاصة اليومية. الخلاصة اليومية تكتب الفروقات التي يفرّغها الأرشيف الأسبوعي. لا IPC بينها — إنها مجرد ثلاث عمليات على نفس وحدة التخزين.

عمليات

حاوية واحدة لإعادة التشغيل، لا ثلاث

عندما تُعيد النشر، تُعيد نشر صورة واحدة. عندما تتفقّد السجلات، تتبع ملف سجل واحد. عندما يمتلئ القرص، يمتلئ مرة. نصف قطر الانفجار لأي إيقاع هو نفسه لأي إيقاع آخر.

اقتصاديات

خادم بسعر ثابت واحد، لا طبقة مجدوِل

Lambda/EventBridge يفوتران لكل استدعاء؛ ECS Scheduled Tasks تفوتر العنقود الدائم التشغيل. على Hoody ذلك يعمل بداخل خادم السعر الثابت الذي تدفع ثمنه بالفعل. ثلاثة إيقاعات لا تكلّف أكثر من واحد.

use-cases / three-cadences-one-container / operations

كيف تستخدمه فعلاً

ملف crontab هو ملف. للملف عنوان URL. أي شيء كنت ستفعله بالملف، يمكنك فعله عبر HTTP.

  1. أضف رابعاً

    POST /users/root/entries

    أنشئ إدخالاً مُداراً مع UUID وتعليق اختياري. الـ API يحقن السطر في crontab نيابةً عنك ويعطيك مقبضاً لتفعيله أو تعطيله أو حذفه لاحقاً.

  2. تعطيل دون حذف

    PATCH enabled: false

    أوقف إيقاعاً مؤقتاً أثناء حادث دون فقدان تعريفه. أعِده عند إغلاق الحادث. السطر يبقى في الملف، مُعلَّقاً كـ managed-disabled.

  3. اقرأ الملف

    GET /users/root/crontab

    احصل على crontab الخام في أي وقت، بما في ذلك جميع الإدخالات المُدارة. قارنه بمستودعك. أرسله عبر pipe إلى التحكم بالإصدار. cron هو ملف، والآن الملف عنوان URL.

نقاط النهاية من Hoody Cron API: CRUD للإدخالات المُدارة بالإضافة إلى قراءة/كتابة كاملة لـ crontab الخام لكل مستخدم. تعابير قياسية من خمسة حقول وماكروهات (@hourly, @daily, @weekly).

use-cases / three-cadences-one-container / economics

ما لا تدفع مقابله

ثلاثة أرقام من الميكانيكا الفعلية. الأرقام تأتي من ضمانات Hoody Cron API ونموذج السعر الثابت للخادم — لا معايير مُختلَقة.

  1. خادم

    الإيقاعات الثلاثة كلها تعمل بداخل نفس خادم السعر الثابت. خادم الدخول يبدأ عند 29 دولاراً/الشهر؛ أسطر cron إضافية لا تضيف أي رسم إضافي.

  2. أسطر CRON

    @hourly واحد، يومي عند 9، أسبوعي يوم الأحد. ثلاثة أسطر في /users/root/crontab. المنسّق بأكمله يتسع في طلب PUT واحد.

  3. خدمات إضافية0

    لا Lambda، ولا EventBridge، ولا Sidekiq، ولا مجدوِل Airflow، ولا تعريف ECS scheduled task. واجهة HTTP API لـ cron هي المجدوِل.

وفقاً لـ Hoody Cron API: إدخالات مُدارة عبر JSON CRUD، قراءة/كتابة لـ crontab الخام، انتهاء تلقائي عبر expires_at، وعزل crontab لكل مستخدم. الماكروهات @hourly / @daily / @weekly مقبولة إلى جانب التعابير ذات الخمسة حقول.

use-cases / three-cadences-one-container / punchline

ثلاثة إيقاعات، ثلاثة أسطر cron، حاوية واحدة على خادم بسعر ثابت يبدأ عند 29 دولاراً/الشهر.

كل ساعة@hourly bash /scripts/scrape.shأسعار المنافسين → sqlite
يومي0 9 * * * bash /scripts/digest.sh9 صباحاً — جمع الفروقات
أسبوعي0 0 * * 0 bash /scripts/archive.shالأحد — parquet إلى الملفات
قبل · ثلاثة lambdas، ثلاث فواتيربعد · خادم بسعر ثابت واحد، عديد أسطر cron
اقرأ مستندات cron
use-cases / three-cadences-one-container / replaces

ما يستبدله هذا

ثلاث Lambdas، ثلاث GitHub Actions، ثلاث ECS scheduled tasks — الأكوام القياسية التي تلجأ إليها لثلاثة إيقاعات. كل واحدة تفوترك لكل إيقاع أو استدعاء؛ Hoody تفوترك للخادم.

  • ثلاث وظائف AWS Lambdaفوترة لكل استدعاء لما هو فقط ثلاثة سكربتات shell على قرص
  • ثلاث جداول GitHub Actionsمشغّل CI كامل يُشغَّل لاستعلام SQLite يستغرق 5 ثوان
  • ثلاث عمّال Sidekiqتجمّع عمّال مدعوم بـ Redis لمهام لا تتشارك حالة سوى القرص
  • ثلاث وظائف serverless / ثلاث فواتيرثلاث عمليات نشر، ثلاثة سجلات، ثلاثة عدّادات تسعير لنفس المنطق
  • تنسيق متعدد الخدمات (Airflow, Step Functions)محرّك DAG لرسم بياني بصفر حواف بين عُقده الثلاث
  • ثلاث ECS scheduled tasksثلاث تعريفات مهام، ثلاث أدوار IAM، ثلاث قواعد CloudWatch
use-cases / three-cadences-one-container / cta

توقّف عن استئجار مجدوِل. اكتب الجدول في ملف. الحاوية تشغّل cron بالفعل — ثلاثة أسطر لاحقاً، تكون قد شحنت خط الأنابيب بأكمله.

اقرأ مستندات cron
use-cases / three-cadences-one-container / related

اقرأ الآخرين