第4章 サポートサービス
4.1. Job サービス
Job サービスは、クラウド環境でタスクをスケジュールして実行します。独立したサービスがこれらのタスクを実装し、HTTP 呼び出しや Knative イベント配信など、サポートされている任意の対話モードを通じて開始できます。
OpenShift Serverless Logic では、Job サービスはタイムトリガーアクションの実行を制御します。したがって、ワークフローで使用できる時間ベースの状態はすべて、ワークフローと Job サービス間の対話によって処理されます。
たとえば、ワークフローの実行が、設定されたタイムアウトのある状態に到達し、対応するジョブが Job サービスに作成されます。タイムアウトに達すると、HTTP コールバックが実行されてワークフローに通知します。
Job サービスの主な目的は、実行する必要のあるスケジュールされたジョブなどのアクティブなジョブを管理することです。ジョブが最終状態になると、Job サービスはそれを削除します。ジョブ情報を永続的なリポジトリーに保持するために、Job サービスは、Data Index Service などの外部サービスで記録できるステータス変更イベントを生成します。
OpenShift Serverless Operator を使用してワークフローをデプロイする場合は、Job サービスを手動でインストールしたり、設定したりする必要はありません。Operator はこれらのタスクを自動的に処理し、各ワークフローがこれに接続するために必要な設定をすべて管理します。
4.1.1. Job サービスリーダーの選出プロセス
Job サービスはシングルトンサービスとして動作します。つまり、1 つのアクティブなインスタンスのみが、ジョブをスケジュールおよび実行できることを意味します。
複数のインスタンスが実行されている可能性のあるクラウドにサービスがデプロイされる際の競合を防ぐために、Job サービスはリーダー選出プロセスをサポートします。リーダーとして選出されたインスタンスのみが、ジョブを受信およびスケジュールするために外部通信を管理します。
リーダー以外のインスタンスは、スタンバイ状態で非アクティブのままになりますが、選出プロセスを通じてリーダーになる試みは継続されます。新しいインスタンスの起動時に、リーダーシップがすぐには想定されるわけではありません。代わりに、リーダーの選出プロセスを入力して、リーダーロールを引き継ぐことが可能か判断します。
現在のリーダーが応答しなくなったり、シャットダウンしたりした場合に、実行中の別のインスタンスがリーダーとして引き継ぎます。
このリーダー選出メカニズムでは、基盤となる永続バックエンドが使用されます。これは現在、PostgreSQL 実装でのみサポートされています。