web-dev-qa-db-ja.com

ワーカーロールとWebジョブ

私が理解していることから、どちらもクラウドで小さな反復可能なタスクを実行しています。

どちらの理由をどのような状況で選択するのでしょうか?

65
orangesherbert

基本的な情報:

WebJobsは、実行する環境をカスタマイズする必要がなく、リソースをあまり消費しない軽量のワークアイテムに適しています。また、定期的に実行するか、スケジュールを設定するか、トリガーするだけでよいタスクにも適しています。安価でセットアップ/実行が簡単です。それらはWebサイトのコンテキストで実行されます。つまり、Webサイトが実行されているのと同じ環境が得られ、使用するリソースはWebサイトで使用できないリソースです。

Worker Rolesは、よりリソースを集中的に使用するワークロード、または実行中の環境(特定の.NETフレームワークバージョンまたはOSにインストールされた何か)を変更する必要がある場合に適しています。ワーカーロールはより高価で、セットアップと実行が少し難しくなりますが、はるかに強力です。

一般的に、WebJobsから始めて、WebJobsが提供できる以上のワークロードがワークロードに必要であることがわかった場合は、Workerロールに移動します。

80
kwill

「パワー」を計算パワーとして測定する場合、仮想環境では、これは物理マシン(金属)の上にあるレイヤーの数に変換されます。仮想マシン上のユーザーコードは、物理マシンを管理するハイパーバイザー上で実行されます。これは最も厚い層です。ハイパーバイザーは、可能な限り、単に金属へのパススルーとして機能しようとします。

WebJobsのオーバーヘッドは基本的にほとんどありません。サンドボックス化され、OSが維持され、実行を確認するためのサービスとモジュールがあります。ただし、アプリケーションコードは、ワーカーロールと同じハイパーバイザーを使用するため、基本的にワーカーロールと同じように金属に近いものです。

測定したいものが「柔軟性」である場合、ワーカーロールは管理もサンドボックス化もされていないため、より柔軟です。より多くのソケットを使用したり、独自の環境を定義したり、より多くのパッケージをインストールしたりできます。

必要なものが「機能」である場合、WebJobsにはすべての機能があります。オンプレミスリソースへの仮想ネットワーク、ステージング環境、リモートデバッグ、トリガー、スケジューリング、ストレージおよびサービスバスへの簡単な接続などが含まれます。

ほとんどの人は、インフラストラクチャに時間を投資するのではなく、問題の解決に集中したいと考えています。そのために、WebJobsを使用します。より柔軟性が必要であることがわかった場合、またはセキュリティサンドボックスが他の方法では達成できないことを実行できない場合は、ワーカーロールに移動します。

いくつかの部分がWebJobsで行われ、他の部分がWorkerロールで行われるハイブリッドソリューションを構築することも可能ですが、それはこの質問の範囲外です。 (ヒント:WebJobs SDK)

21
Jaime Espinosa

Webジョブまたはワーカーロールの使用を選択する際に覚えておくべきこと:

  • ワーカーロールは専用のVMで自己ホストされ、WebジョブはWebアプリコンテナーでホストされます。

  • ワーカーロールは独立してスケーリングされ、WebジョブはWeb Appコンテナーに合わせてスケーリングされます。

Webジョブは、RSSフィードのポーリング、メッセージの確認と処理、および通知の送信に最適であり、軽量であり、Workerロールよりも安価ですが、それほど強力ではありません。

11
Karl Gjertsen