ユーザー向けの確率グラフを生成するために、リソースを大量に消費する MCMC (マルコフ連鎖モンテカルロ) 計算を R でオンデマンドで実行する必要がある Web アプリケーションを構築しようとしています。
制約:
明らかに、Web アプリのフロントエンドと同じサーバーでリソースを集中的に使用する計算を実行したくないため、これらのタスクはワーカー インスタンスに渡す必要があります。
これらの計算の実行にはかなりの量の CPU が必要であり、待ち時間をできるだけ低く (できれば数分ではなく数秒) 維持したいので、より強力なハードウェアで計算を実行することをお勧めします。
強力な EC2 インスタンスを 66¢/時間 x 24 時間/日で実行する余裕はないので、オンデマンドまたはスポット リクエスト インスタンスがおそらく必要です。
私が思いついたオプションは次のとおりです。
Amazon SWF (または SQS) によって管理される、一度に 1 つのタスクを実行する安価で手頃なワーカー インスタンスを 1 日 24 時間実行します。
短所:- 高遅延- 安価なハードウェア、長い待機時間。
- 高遅延- 安価なハードウェア、長い待機時間。
より強力なワーカー インスタンスをタスクごとに生成し (ジョブがキューに追加されるたびにスピンアップ)、完了時にインスタンスを終了します。
短所:- 高価/無駄- 毎回サーバーで 1 時間の料金を支払い、計算には数秒しか使用しません。
- 起動時のオーバーヘッド- 新しい EC2 インスタンスをオンデマンドでスピンアップすると、無視できないほどのレイテンシが発生します (より強力なハードウェアを利用するという目的全体が相殺されます)?
- 高価/無駄- 毎回サーバーで 1 時間の料金を支払い、計算には数秒しか使用しません。
#2 と同様ですが、低入札の EC2 スポット リクエストを使用します。
短所:- 起動時のオーバーヘッド- #2 を参照
- 矛盾?- これまでスポット リクエストを処理したことがないので、そのようなソリューションがどれほど変動的であるか、または実践的であるかはわかりません... ピーク時にタスクを完了できるように、入札単価を継続的に調整する必要がありますか? ? また、計算の途中で中断されないように、プロセスを注意深く監視する必要があると思います。
- 起動時のオーバーヘッド- #2 を参照
強力なハードウェア ワーカー インスタンスとその負荷を積極的に監視し、1 時間ごとにインスタンスをインテリジェントに起動および終了して、コストと可用性の最適なバランスを維持する、ある種のハイブリッド ソリューション
短所:- 複雑でコストのかかるセットアップ- このようなものを処理する優れたマネージド サービスがない限り、そのインフラストラクチャをすべて自分でセットアップする必要があります...
- 複雑でコストのかかるセットアップ- このようなものを処理する優れたマネージド サービスがない限り、そのインフラストラクチャをすべて自分でセットアップする必要があります...
高可用性オンデマンド ハードウェアの料金を、時間単位ではなく分単位で支払うことができるサービスがあればいいのにと思います。
だから私の質問は次のとおりです。
この問題をどのように解決することをお勧めしますか?
Amazon SWF の上位に位置し、負荷分散とアイドル状態のワーカーの終了に役立つ優れた EC2 インスタンス管理ソリューションはありますか?
スポット リクエスト ビッドは私の問題を解決しますか? それとも、必ずしもすぐに完了する必要のないタスクにより適していますか?