スケジューラとバックグラウンドタスク
(事業・管理)
1)目的
スケジューラとバックグラウンドタスクは、プラットフォームの非ユーザー操作を確実にします。定期的な計算、アーティファクトのパブリケーション、クリアとキューのリプレイ。目的は、決定論、フォールトトレランス、および監査可能性です。
2)タスクタクソノミ
タイムベース:スケジュール(cron/calendar): RTPウィンドウのクリア、クローズ、アップロード、アーカイブ。
イベント駆動:バスからのトリガー(PaymentsSettled、 PriceListUpdated)。
ワンオフ/アドホック:TTL付きワンオフジャブ。
ロングランニング:バックオフ/サガ、ストリーミングコンパクト。
メンテナンス:キー回転、再パッケージ、インデックス、キャッシュのウォームアップ。
3)アーキテクチャ(参考)
コンポーネント:1.スケジューラ(コントロールプレーン):スケジュール、CAL/cron、メンテナンスウィンドウ、タイムゾーン、リミッターを格納します。
2.ディスパッチャー:plan→queue (per-priority/tenant/region)、締め切り、idempotentキーを入れます。
3.作業者:タスクプールの静的/オートスケール;ハートビート、リース。
4.キュー/バス:FIFO/priority、 DLQ、遅延メッセージ。
5.ロッカー/調整:分散ロック(リース)、リーダー選挙(いかだ/ZK/領事館)。
6.Vault/KMS: JITの秘密、短いTTL。
7.観測性:トレース/メトリック/ログ、ダッシュボード、アラート。
8.監査/WORM:実行の不変の領収書、Merkleスライス。
パターン:outbox/CDC、 idempotency、補償(sagas)、背圧、遮断器。
4)スケジュール: cronおよびカレンダー
Cron v3: second/minute/hour/day/month/day-week;「/5「のサポート、範囲、リスト。
カレンダー/例外:ビジネスカレンダー、サイレンスウィンドウ、休日/DST。
タイムゾーン:タスクの'tz'を維持します。テナントの現地時間開始。
マルチリージョン:ドレイン/再選択時のリージョンスケジュールまたは「リード領域+フォロワー」のコピー。
5)キュー、優先順位、SLA
優先順位クラス:P0(クリティカル)、P1、 P2、 P3;個々の労働者プール。
SLA/締め切り: 'must_start_by'、 'must_finish_by';スキップ-エスカレーション/リトレイ。
クォータと公平性:タスク/分/テナントのキャップ、「バースト」のトークン、ノイズの多い隣人の分離。
遅延/可視性のタイムアウト。
6)競争力と閉塞
リース:自動拡張(ハートビート)での作業のレンタル。タイムアウト-失効。
Mutex/semaphores:リソースごと(例:「price list x write only one worker」)。
Sharding: 'tenant/region/hash (key)';キャッシュおよびデータの局所性のための粘着ルーティング。
リーダー選挙:1人のリーダーが「システム」ジョブ(「すべてのRTPウィンドウを閉じる」など)、フォロワー-ホットスタンバイを公開します。
7)信頼性: Retrai、 idempotency、 deadup
Idempotentキー:'(task_type、 business_id、ウィンドウ)';繰り返し→同じ領収書。
Retrai:指数関数的なバックオフ+ジッタ、試行回数の制限、オンエラー戦略(再試行/キャンセル/補償)。
毒薬:N障害後にDLQへの高速転送、所有者に警告します。
Dedup: TTLウィンドウ上のseen-cache (in-memory+KV)。
正確に一度の効果:トランザクションログ/領収書による副作用の確認。
8)長く、重い仕事の管理
Chunking: breakdown into batches、 checkpoints/continuation。
タイムボクシング:CPU/IO/ネットワークの排出制限;保存された進捗状況で割り込みます。
Sagas/compensations:サービス間ステップの「元に戻す」セマンティクス。
並行キャップ:タイプ/テナント/リージョンごとの同時タスクの制限。
9)観測可能性と指標
トレース:'trace_id'、 sagaステップ、外部呼び出し。
メトリクス(SLI):- Lag to start、 queue (length、 age p95)。
- 成功率、エラー率、再試行率。
- レイテンシp50/p95、完了までの時間。
- 1kタスクあたりのコスト、出力/入力。
- DLQ率、毒薬率。
- P0開始≤ 60秒、P1 ≤ 5分;成功≥ 99。5%;DLQ ≤ 0。1%;鮮度≤ 30秒P95。
10)監査と証明
領収書:開始/成功/エラーの'receipt_hash'、重要なタイプ(支払い、価格リスト、RTP)のDSSE署名。
WORM:実行ログとタスクマニフェストを格納します。
Chain-of-custody:スケジュールを配信/承認/変更した人;SoDがチェックします。
11)セキュリティとアクセス
RBAC/ABAC/ReBAC:作成/承認/実行する人;SoD:「支払いを作成する」≠「承認する」。
JITの秘密:ワーカーは問題の範囲を超えて短いTTLでトークンを要求します。
分離:テナント/地域/グリッドごとの労働者のプール;sandbox-executionを実行します。
PII衛生:マスキング/トークン化、プライマリのロギングの禁止。
12) FinOpsおよび費用
compute/storage/egressのbudgets/cap-alert。
キューとSLOによる自動スケールワーカー。
ストレージクラス:ホット(7-30日)→OLAP (6-24ヶ月)→アーカイブ。
費用対効果のある計画:「安い時間」での起動ウィンドウ、排出制限。
13)データモデル(簡略化)
14) API契約(管理/統合)
'POST/schedules'-スケジュール(cron/cal、 tz、 windows)を作成します。
'POST/jobs'-putアドホック;'job_id'、 'receipt_hash'を返します。
'GET/jobs/{ id}'-status/log/receipts。
'POST/jobs/{ id }/cancel'-補償でキャンセルします。
'GET/queues/stats'-長さ、lags、 p95。
Вебхуки: 'JobStarted'、 'JobSucceeded'、 'JobFailed'、 'JobDroppedToDLQ'、 'SLOViolated'。
15)プレイブック(典型的なシナリオ)
Retry-storm:グローバルバックオフを有効にし、依存性のタイムアウトを上げ、回路ブレーカを有効にし、バッチを分割します。
DLQ雪崩:受信を停止し、DLQ解析の優先順位を付け、新しいタスクをバッファします。
リーダーは落ちました:再選、idempotencyによる「二重出版物」の検証、監査。
ハングプロバイダ(PSP/KYC):リザーブへのルート、ポーリング/Webhookの頻度を減らし、トランザクションを検疫に転送します。
リークされた労働者の秘密:重要な失効、ローテーション、30日間で「異常な」起動の検索、権利レビュー。
16) iGaming/fintechの特異性
支払い/支払い:領収書のある非同期ジョブ、「グレー」トランザクションの隔離、重複排除を伴うキューのリプレイ。
RTPウィンドウ/リミット:カレンダー閉鎖、観察されたvs理論的なRTP、ドリフト時の自動一時停止プロモーション。
価格リスト/FX/税金:スケジュールされた出版物、アーティファクトバージョン、キャッシュフォース障害。
アフィリエイト:コンバージョンの和解、dedup webhook、行為/署名、エスクロー紛争。
17)品質指標(サンプルセット)
Schedule Adherence:ウィンドウで開始されたタスクの共有率≥ 99%です。
キューラグp95: P0 ≤ 60 c、 P1 ≤ 5分。
成功/再試行/DLQ率: ≥ 99。5% / ≤ 0.4% / ≤ 0.1%.
Idempotency Errors: ≤ 0。01%.
Cost/1kジョブとエグレス/ジョブ-予算内。
監査の完全性:領収書を含む100%重要なタスク。
18) RACI
19)実装チェックリスト
- タスククラス、優先順位、およびSLAを強調表示する。カレンダーとタイムゾーンを定義します。
- リーダーを選択してシャーディングするスケジューラ/ディスパッチャー/キュー/ワーカーを展開します。
- idempotency、 retrays、 DLQ、補償(sagas)を導入する。
- 労働者のためのRBAC/ABAC/ReBAC、 SoDおよびJITの秘密を構成して下さい。
- トレース/メトリック/ログ、ダッシュボード、アラートを有効にします。SLOエラーバジェット。
- 重要なタイプの署名された請求書(DSSE)とWORMログ。
- オートスケールおよびキャップアラート(compute/storage/egress)。
- プレイブック:再試行ストーム、DLQ雪崩、リーダー障害、プロバイダの劣化。
- テスト:PlaybookごとのGameDay、遅延/エラー注入。
- スケジュール、キューのブロック、およびオートメーションROIの定期的なレビュー。
20) FAQ
なぜcronが十分ではないのですか?
キュー、idempotency、ロックと監査がなければ、cronはクラッシュとタイムゾーンで故障します。
時間ベースとイベント主導を組み合わせることはできますか?
はい:cron-キャッチアップのための保険。イベント-反応性のために。
どのように「正確に一度」を達成するには?
キーのdedup、トランザクション効果ログ、領収書とidempotent副作用。
「長い」仕事をどうするか?
チャンク、チェックポイント、タイムボクシング、中断して続行する能力。
予算を「食べない」方法は?
キューやSLOの自動スケール、重い仕事のための安価な時計、ハードキャップの出力/計算。
概要:スケジューラとバックグラウンドタスクは、プラットフォームの生産パイプラインです。スケジュールとキュー、idempotence、ロックとオブザビリティ、領収書/監査、テナントの分離とFinOpsコントロールを組み込むことで、予測可能な期限、迅速なリカバリ、あらゆる地域での法的に一貫した操作と負荷が得られます。