
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
顧客が cron 表現を入力します。それを顧客のコンテナの crontab に POST します。フェアシェアする共有キューもなく、強制する最小間隔もなく、「ピーク時の月曜日になぜ自分のジョブが動かなかったのか」というサポートチケットもありません。
本物の顧客向け設定ページ — テナントが編集し、テナントのコンテナがパースするスケジュール。
あなたの設定ページが入力フィールドをレンダリングします。テナントコンテナが Cron API を公開します。送信は 1 回の POST を転送します。グローバルスケジューラもなく、テナントごとのフィルタリングロジックもなく、「全顧客で最大 100 ジョブ」のキャップもありません。
// フォーム送信は顧客の表現をそのまま中継します
POST https://acme-cron.hoody.com/users/root/entries
Content-Type: application/json
{
"schedule": "0 9 * * 1-5",
"command": "/jobs/sync_crm.sh",
"comment": "Sync Salesforce contacts",
"enabled": true
}HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "sch_8a3f1c",
"schedule": "0 9 * * 1-5",
"next_run": "2026-05-04T09:00:00Z",
"enabled": true
}
// スケジュールはこのテナントの crontab にあり、それ以外の場所にはありませんHoody Cron サービスは、マネージドエントリとユーザーごとの分離を持つ各テナントコンテナの中で動きます。スケジュールは、作業が動く場所に存在します。
スケジュールが作業の隣に存在するとき、マルチテナントスケジューリングのルールは変わります。制約はローカル。影響範囲はローカル。機能はローカル。
奪い合うグローバルスレッドプールはありません。最も要求の厳しいテナントが毎分実行しても、静かなテナントを餓死させることはありません — 同じ crontab にいないからです。
「あなたのティアで */1 * * * * は許可されているか?」のゲートキーパーをやめましょう。彼らのコンテナ、彼らの cron、彼らの CPU 請求書。サポート受信トレイは空になります。
テナントコンテナをスナップショットすれば、crontab もスナップショットされます。ロールバック、リストア、フォーク — スケジュールも一緒に動きます。同期する外部スケジューラ状態はありません。
違いは 3 つの場所に現れます: 顧客の体験、サポート負荷、エンジニアリングのサーフェス。
この機能の共有スケジューラ版は注意書きの海です。BYO 版は 5 フィールドの入力ボックスです。
グローバルキューを動かすのをやめた日に変わる 3 つの数字。それぞれが、もう書いたり運用したりする必要のない機能にマップされます。
ティアゲートの最小間隔も、テナントごとの最大ジョブ数も、フェアシェアのつまみもありません。コンテナが上限です。
顧客が入力し、あなたが転送し、コンテナがパースします。設定ページの送信はオーケストレーションではなく、単一の REST コールです。
分 · 時 · 日 · 月 · 曜日。さらにマクロ (@hourly、@daily)。あなたの DSL ではなく、標準 POSIX。
数値は BYO コンテナバウンドモデルを反映しています — 実際の cron エントリは、各コンテナの CPU と顧客のプランに応じてスケールします。
顧客の cron 表現は顧客のものであり、グローバルキューに対してあなたが検証するものではありません。
BYO コンテナバウンド cron が静かに退役させるインフラストラクチャの要素。
他人のスケジュールのゲートキーパーをやめましょう。cron フィールドを彼らに渡し、作業を彼らのコンテナに渡してください。