1. ホーム
  2. azure

[解決済み】Azure WebjobsとAzure Functionsの比較:選び方

2022-04-12 12:13:57

質問

私は、いくつかの Azure ウェブジョブ について学びました。 Azure ファンクション .

Azure FunctionsはAzure Webjobsの機能と重複しているようで、FunctionとWebjobのどちらを選べばいいのか、理解に苦しむところです。

  • Webjobsとは異なり、Functionsはトリガーされるだけで、連続的な処理を実行するようには設計されていません(ただし、連続的な関数を作成するコードを書くことは可能です)。

  • WebjobsやFunctionsは多くの言語(C#, node.js, python ...)を使って書くことができますが、Azureポータルから関数を書くことができるので、Functionの開発、テスト、デプロイが簡単で早くできます。

  • WebjobはApp ServiceのWebアプリ、APIアプリ、またはモバイルアプリのコンテキストでバックグラウンドプロセスとして実行され、FunctionsはClassic/Dynamic App Service Planを使用して実行されます。

  • スケーリングについては、WebジョブではWebアプリ全体をスケーリングする必要があるのに対し、Functionsではダイナミックアプリサービスプランを使用し、単一の関数をスケーリングできるため、より多くの可能性があるように思われます。

既存のウェブアプリがあれば、追加費用なしでウェブジョブを実行できますが、既存のウェブアプリがなく、キューをトリガーするコードを書かなければならない場合、ウェブジョブとファンクションのどちらを使用すべきでしょうか?

他に選択する際に注意することはありますか?

どのように解決するのですか?

App Serviceには、いくつかのオプションがあります。Logic AppsやAzure Automationについては触れませんが、これらもこの領域に触れています。

Azure ウェブジョブ

この記事 が正直なところ一番わかりやすい説明だと思いますが、ここでまとめておきます。

オンデマンドWebJob、スケジュールWebJob、トリガー型WebJob

トリガー型WebJobは、URLが呼び出されたとき、または、WebJobが実行されたときに一度だけ実行されるWebJobです。 scheduleプロパティがschedule.jobに存在する場合 . スケジュールされた WebJob は、Azure Scheduler ジョブが作成された WebJob で、スケジュールに基づいて URL を呼び出します。

概要を説明します。

  • + オンデマンドで実行可能/スクリプト
  • + 定期的な実行
  • - .scmエンドポイント経由でトリガーしなければならない
  • - スケーリングは手動
  • - VMが常に必要

継続的なWebJobs (SDKなし)

これらのジョブは永遠に実行され、クラッシュしたときに起動されます。これらのジョブを動作させるには、Always On を有効にする必要があります。つまり、Basic ティア以上で実行することになります。

概要を説明します。

  • + 実行ファイル/スクリプト常時起動
  • - 常時接続が必要 - Basic Tier 以上
  • - VMが常に必要

WebJobs SDKを使用した継続的なWebJobs

これらは、quot;WebJobs the feature"という観点からは何もありません。基本的には、私たちがWebJobsをターゲットとして書いたこの素晴らしいSDKがあり、簡単なトリガーに基づいてコードを実行することができます。これについては、後ほど詳しく説明します。

まとめ

  • + 実行ファイル/スクリプト常時起動
  • + 豊富なログ/ダッシュボード
  • + 長時間稼働するタスクのトリガーに対応
  • - 常時接続が必要 - Basic Tier 以上
  • - スケーリングは手動で設定
  • - 使い始めは少し面倒かもしれません
  • - VMが常に必要

Azure WebJobs SDK

Azure WebJobs SDKは、プラットフォーム機能であるWebJobsとは完全に別のSDKである。ウェブジョブで実行されるように設計されていますが、実際にはどこででも実行可能です。私たちは、ワーカーロールやオンプレミスや他のクラウド上でそれらを実行する顧客を持ちますが、サポートはベストエフォートのみです。

SDKは、イベントに反応してコードを実行したり、サービスなどに簡単にバインドできるようにするためのものです。これは、正直なところ、いくつかの ドキュメント しかし、その核心は、"event" + "code"という性質にあります。また、拡張性のあるクールな作業も行いましたが、それは中核となる目的からすると二次的なものです。

概要

  • ほとんどが上記の通りです
  • + 好きなように拡張し、好きなように実行できる。フルコントロールできる。
  • - HTTP関連は少し不安定ですが、動作します。

Azure ファンクション

Azure Functionsは、WebJobs SDKの中核となる目的を、サービスとしてホスティングし、他の言語でも簡単に始められるようにするためのものです。私たちは、SDKがどのようにスケールするか知っているので、あなたのためにインテリジェントなことを行うことができます。

Azure Functionsは、非常に厳重に管理されたエクスペリエンスです。独自のホストを持ち込むことはサポートしていません。現在のところ、カスタム拡張はサポートしていませんが、調査中です。私たちは、あなたができることとできないことについて意見がありますが、私たちが可能にしたものについては、洗練されており、使用や管理が簡単です。

しかし、私たちが機能向上のために行ったフレームワークのほとんどは、WebJobs SDKを経由しています。例えば、私たちはWebJobs用の新しいNuGetをアップロードする予定ですが、これはロギングの速度を劇的に向上させ、WebJobs SDKのユーザーにとって非常に大きなメリットをもたらします。Functionsをquot;WebJobs SDK as a Service"として出荷することで、多くの経験上の問題を本当に改善することができました。

  • + 対応言語が多い
  • + フルマネージド、ダイナミックスケーリング
  • + 接続管理など、使いやすいポータル/UX。
  • - ホストのカスタマイズができない(未対応)
  • ~ 別のアプリで実行されるため、レポでの設定が必要ですが、長期的なメンテナンスが非常に簡単になります。
  • ~ <ストライク ツールはありません(まだ) 一部のツールはアルファ版またはプレビュー版となっています - 。 https://www.npmjs.com/package/azurefunctions (2017年2月更新。 Azure Functions用のVisual Studio Toolsがプレビューで利用可能になりました。 https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/ )

Functionsは私たちの最新かつ最高の製品なので、私は偏見を持っているかもしれませんが、遠慮なくFunctionsへの賛辞を私宛に送ってください。

もう少し詳しく説明したブログを公開することになると思いますが、このフォーラムではできるだけ簡潔に説明するようにしました。