Play フレームワークの優れた点の 1 つは、完全にステートレスであり、リクエスト/レスポンス指向のみであることです。状態 (セッション) のレプリケーションについて心配することなく、アプリをクラウドにデプロイし、ロード バランサーの背後でプレイ インスタンスの数をスケーリングできるため、これは非常に便利です...
しかし最近、HTTP リクエストの外部でいくつかのアプリケーション ロジックを実行する必要があり、Play にはフレームワークによって完全に管理されるジョブを定義できる可能性があることがわかりました。素晴らしいように聞こえますが、疑問が生じます: これらのジョブは、Play で使用されるステートレス モデルにどのように適合するのでしょうか?
1 時間ごとに実行する必要があるメンテナンス タスクがあり、そのためにスケジュールされたジョブを定義するとします。その後、複数の Play インスタンスをロードバランサーの背後にデプロイすると、そのジョブは各インスタンスで同時に開始されますか? もしそうなら、「排他的に」実行する必要があるジョブを処理するための良いアプローチは何でしょうか?
既存の (クラスター化された) インスタンスの JPA モデルを再利用して (したがって、同じデータベースに接続して)、クラスター化されていないサーバーに新しいプレイ インスタンスを作成することを考えていました。この新しいインスタンスにはメンテナンス ジョブのみが含まれ、クラスター化されていないサーバーでホストされているため、ジョブが同時に実行されるリスクはありません。同時に、これにより、既存のクラスター化されたインスタンスを完全にステートレスに保ち、ホスト/負荷分散を容易にすることができます。これは良いアプローチでしょうか?