タスクオーケストレーション
1)オーケストレーションの理由
iGamingプラットフォームは、数十のエンドツーエンドのチェーン(預金、結論、KYC/AML、賭け/決済、ボーナス、インシデント)です。オーケストレーションは、異なるコールを予測可能な時間、品質、およびオーディタビリティを備えた管理可能なプロセスに変換します:- 減らされたMTTRおよび「手動ルーチン」;
- SLAの実施と規制期限;
- テナントと地域の間の能力の公正な分配;
- 現状と責任の透明性(RACI)。
2)原則
クリティカルチェーン(支払い、結論、解決)-集中オーケストレーターの下で;secondary-イベント(pub/sub)。
SLA-first。各タスクには優先順位、SLO、期限、エスカレーション戦略があります。
Idempotencyと少なくとも1回。任意のアクションは副作用なしで繰り返されます。。
データベースのロールバックの代わりに補償。外部効果のためのサガ。
公正な共有と孤立。テナント/地域/タスククラスあたりのクォータ、「大食い」に対する保護。
ポリシー・アズ・コード。ルーティング、リトレイ、公差のルール-バージョン管理されたポリシー。
設計による観測性。各ステップのメトリック/トレイル/ログ。
3)オーケストレーションドメインモデル
タスク→アクティビティ→プロセス/ワークフロー。
タスク状態は'queued→leased→running→(succeeded | failed | timed_out | cancelled)→archived'である。
主な属性:'priority'、 'deadline'、 'tenant'、 'region'、 'cost_class'、 'risk_class'、 'idempotency_key'。
4)アーキテクチャ
オーケストレータ:プロセスグラフ、キュー、タイマー、締め切り、RACI、ルーティングを格納します。
実行者:ステートレス、ドメインキュー(Payments/KYC/Games/Infra)を購読。リースモデル+ハートビート。
イベントゲートウェイ:外部システムとの統合を保証するためのoutbox/inbox。
ステータスストア:プロセスログ(WORM/監査用の不変部品)。
ポリシーカタログ:優先順位付け、クォータ、レトレイ、ロールバック、SoD。
5)キュー、優先順位、スケジューラ
QoSクラス:- A(リアルタイム):deposits/bets/settles-p95秒の遅延、個々のキューとプール。
- B(運用):KYC、プロバイダへのレポート-分。
- C(バッチ/分析):集計/エクスポート-時間。
- スケジューラ:優先度+期限付きマルチキュー;アルゴリズム:優先度+EDF、テナント/地域ごとの重み付けされたフェアシェア。
- 作業盗み:実行プールは、同じQoSクラス内の隣接するキューからタスクを「盗む」。
- 締め切り:遅延のリスク→優先度の上昇または分岐の低下。
6)保証と持続可能性
At-lost-once+idempotency。'idempotency_key'(ビジネスキー)と結果を修正します。
ポリシーで取得可能:指数関数バックオフ+ジッタ;予算を試みる;外部依存への回路ブレーカ。
タイムアウト:'task_timeout <SLA_step',' process_deadline <regulatory'。
DLQ:「毒」タスクのキューを分けます。完全なコンテキストでの手動解析。
報酬(佐賀):「強い」操作(キャプチャ/払い戻し、ledger_post/revertなど)ごとに定義されています。
7)背圧およびプラットホームの保護
クォータと制限:テナント/リージョン/タスクタイプ(QPS、並列、メモリ/CPU)ごとに。
入場制御:プールを埋めるときの低い優先順位の失敗/脱落。
取除くこと:完全な失敗の代りに柔らかい負荷減少(部分的な結果、分解の特徴)。
料金制限:入り口、プロバイダ(PSP/KYC)、 銀行/BIN。
ヒステリシス:オン/オフフラッピングを防止します。
8)複数の地域および欠陥の許容
トラフィックのローカライズ:オーケストレーターは、データ/プロバイダに近いプロセスを保持します。
クロスリージョンfeilover: idempotentステップとquorumチェック後のみ。
ステート・ストレージ:RPO/RTOターゲットによるレプリケーション;write-fence対split-brain。
インシデントの地域隔離:「出血を止める」-影響を受けた地域の新しいタスクを停止し、既存のものを安全な枝に取り込む。
9)ヒューマン・イン・ザ・ループ
人間のタスク:チェックリスト、SLA、添付ファイル付きの組み込みステップ。
SoD/4-eyes:機密アクションの互換性のない役割(結論、ボーナス制限、PSPルーティング)。
エスカレーション:タイマー「nudge 再割り当て L2/L3 IC」。
監査:誰/what/when/why、 ticket/policyへのリンク。
10)ポリシー・アズ・コード
例(擬似レゴ):- PSPルーティング:'route=PSP2ならPSP1。健康<{A、 B}&&within_quota (PSP2)'のSLO&&テナント'
- 優先エスカレーション:'priority=P1 if deadline <10m&&process in{出金、支払い}'
- PIIエクスポートブロック:'エクスポートする場合は拒否します。rate> ベースラインK&!チケット&data_class=PII'
ポリシーはバージョン管理され、テストされ、通常のコードのようにレビューされます。
11)観測可能性
プロセスSLI:成功率、p95/p99期間、遅延の割合。
キューSLI:タスクの年齢、スループット、入場障害、DLQレート。
トレース:各ステップにスパン(payment/rate/ACCとの相関'trace_id')。
ログ:構造化、PIIなし;リトレイ/タイムアウト/補償の理由。
ダッシュボード:Exec (SLA/delinquencies/value)、 Ops (lag/reties/DLQ)、 Domain (PSPブランチ、KYC SLA)。
アラート:バーンレートの締め切り、DLQサージ、ステップ時間の増加、ホットキュー。
12)コスト(FinOpsオーケストレーション)
KPI: $/process、 $/task、 $/retray、 $/min SLA違反。
最適化:Class-C用のバッチ、信号集約、長いログのダウンサンプリング、「長い」プロセスの制限。
Show/charge-back:テナントはマーク(キュー/ストレージ/リトリート)を確認します。
13)安全性とコンプライアンス
ABAC/RBAC:ロール/テナント/地域/環境によるプロセスへのアクセス。
JIT/PAM:手動ステップの一時的な上昇。
Webhook Signature/mTLS: Event Integrity。
WORM監査:交換不可のログ。PIIのTTL/マスキングポリシー。
SoD: 1人で「initsiirovat→odobrit→provesti」を結合しないでください。
14)典型的なオーケストレーションのカタログ(iGaming)
1.:'init→3DS/auth→capture→ledger_post→bonus_credit→notify'。
補償:'ledger_revert、 refund_capture'。
ポリシー:認証成功が低下した場合のPSPの再配布。
2.「リクエスト→risk_score→4-eyes承認→ペイアウト→レジストリ→通知」。
SLAエスカレーション、速度異常のブロック。
3.KYC/AML: 'collect→providerA→(fallback providerB)→manual review→finalize'。
規制の期限;スキャンエラーのDLQ。
4.Rate/settl: 'reserve→fix_odds→confirm→settle→payout'。
ラグキュー時に分岐を低下させる(セカンダリフィーチャーの制限)。
5.Инцидент: 'detect→classify (P1-P4)→war-room→actions→close→post-mortem'。
15)テンプレート(フラグメント)
タスク仕様(YAML):yaml id: payments. capture qos: A priority: P1 deadline: 2m timeout: 2s retry:
strategy: exponential_jitter max_attempts: 5 idempotency_key: ${payment_id}
saga:
compensate: payments. refund_capture
プライオリティポリシー:
yaml rule: "priority-escalation"
if: "deadline < 5m && qos == 'A'"
then: "priority = P1"
人間タスク(4目):
yaml id: withdrawal. approval type: human sod: true approvers: [Risk, Finance]
sla: 2h on_timeout: escalate:L2
16)操作プロセス
Release-gates:赤いSLIキュー/プロセスを持つ危険なリリースのブロック。
卓上/カオスデイ:PSP/レプリカ/キューの切断;リトレイ/補償をチェックします。
四半期ごとのレビュー:しきい値、クォータ、コスト、DLQトレンド、SoD例外。
17)実装ロードマップ(8-12週間)
ネッド。1-2:チェーンインベントリ(deposit/output/CCL/settle)、 SLA目標、QoSクラス、優先度およびクォータマトリックス。
ネッド。3-4: orchestrator+queues、 「Deposit/Output」プロセスのMVP、 idempotentハンドラ、DLQ、基本的なリトレイ/タイムアウトポリシー。
ネッド。5-6:サガと補償、ヒューマン・タスク(4-eyes)、フェア・シェア・パー・テナント、ダッシュボード、SLIキュー。
ネッド。7-8:複数の領域(ローカリゼーション/feilover)、リリースゲート、アラート(燃焼速度の期限)、FinOpsパネル。
ネッド。9-10:カタログ拡張(CCM/ボーナス/インシデント)、カット。ポリシー(PSP ルーティング/PIIエクスポート)、WORM監査。
ネッド。11-12:カオスドリル、価値最適化、RACI/SoD規制、オンコールトレーニング。
18) KPI/KRIオーケストレーション
SLAプロセス(時間通りに実行)、p95/p99期間。
ドメイン/テナントによる非行とそのシェア。
リトリート/タスク比、DLQ率、報酬率。
公正な共有コンプライアンス(テナントは「飢えている」わけではありません)。
コスト:$/process、 $/task、 $/retray。
オーケストレーションによるインシデント(フラッピング、デッドロック、キューのオーバーロード)。
19) Antipatterns
QoSクラスなしで1つの「普遍的な」優先順位。
idempotency→重複した支払いなしで再送信します。
外部障害→雪崩の場合の労働者のLiveness-restarts。
テナント/地域別のクォータはありません→隣人はプール全体を食べました。
タイムアウト/締め切りのない長いステップ→ハングプロセス。
サガの不足→マニュアル「カット」と財務リスク。
空のログ/トレースなし→正しいことを証明しません。
合計
タスクオーケストレーションは、QoSと優先順位による適切なセグメンテーション、配送保証と独自性、補償と期限、テナント/地域の公正な分離、および設計の一環としての観測性と安全性。このような回路は、予測可能な操作、プロバイダの障害に対する耐障害性、および規制要件の遵守を提供します。