202

トリガーを使用するAzure Web ジョブをいくつか作成し、 Azure Functionsについて学習しました。

私が理解しているところによると、Azure Functions は Azure Webjobs の機能と重複しているようであり、Function と Webjob のどちらをいつ選択するかを理解するのが困難です。

  • Web ジョブとは異なり、関数はトリガーのみ可能であり、継続的なプロセスを実行するようには設計されていません (ただし、継続的な関数を作成するコードを記述できます)。

  • 多くの言語 (C#、node.js、python など) を使用して Web ジョブと関数を記述できますが、Azure portal から関数を記述できるため、関数のテストとデプロイをより簡単かつ迅速に開発できます。

  • Web ジョブは、App Service Web アプリ、API アプリ、またはモバイル アプリのコンテキストでバックグラウンド プロセスとして実行されますが、関数はクラシック/動的 App Service プランを使用して実行されます。

  • スケーリングに関しては、動的アプリ サービス プランを使用でき、Web ジョブの場合は Web アプリ全体をスケーリングする必要があるのに対し、単一の関数をスケーリングできるため、関数はより多くの可能性を提供するようです。

したがって、確かに価格の違いがあります。既存の Web アプリを実行している場合は、それを使用して追加料金なしで Web ジョブを実行できますが、既存の Web アプリがなく、キューをトリガーするコードを記述する必要がある場合webjob または Function を使用する必要がありますか?

を選択する必要がある場合、他に考慮すべき点はありますか?

4

8 に答える 8

193

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

Azure Web ジョブ

この記事が正直なところ一番の説明ですが、ここで要約します。

オンデマンド WebJobs 別名。スケジュールされた WebJobs 別名。トリガーされた Web ジョブ

トリガーされた Web ジョブは、URL が呼び出されたとき、またはスケジュール プロパティが schedule.job に存在するときに 1 回実行される Web ジョブです。スケジュールされた Web ジョブは、スケジュールに従って URL を呼び出すために Azure スケジューラ ジョブが作成された単なる Web ジョブですが、前述のように、スケジュール プロパティもサポートされています。

概要:

  • +実行可能ファイル/スクリプト オンデマンド
  • +スケジュールされた実行
  • -.scm エンドポイント経由でトリガーする必要がある
  • -スケーリングは手動
  • -VM は常に必要です

継続的な Web ジョブ (非 SDK)

これらのジョブは永久に実行され、クラッシュすると復帰します。これらを機能させるには、Always On を有効にする必要があります。つまり、Basic レベル以上で実行する必要があります。

概要:

  • +実行可能ファイル/スクリプトは常に実行中
  • -常時オンが必要 - Basic レベル以上
  • -VM は常に必要です

WebJobs SDK を使用した継続的な Web ジョブ

これらは、「Web ジョブ機能」の観点からは何もありません。基本的に、単純なトリガーに基づいてコードを実行できる、Web ジョブを対象として作成したこの便利な SDK があります。これについては後で詳しく説明します。

概要:

  • +実行可能ファイル/スクリプトは常に実行中
  • +より豊富なロギング/ダッシュボード
  • +長時間実行されるタスクとともにサポートされるトリガー
  • -常時オンが必要 - Basic レベル以上
  • -スケーリングは手動で設定します
  • -始めるのは少し面倒かもしれません
  • -VM は常に必要です

Azure Web ジョブ SDK

Azure WebJobs SDK は、プラットフォーム機能である WebJobs とは完全に別の SDK です。Web ジョブで実行するように設計されていますが、実際にはどこでも実行できます。サポートはベスト エフォートにすぎませんが、Worker ロール、さらにはオンプレミスやその他のクラウドでそれらを実行しているお客様がいます。

SDK は、何らかのイベントに反応してコードを実行し、サービスなどにバインドすることを簡単にするためのものです。簡単。これはいくつかのドキュメントで正直に説明されていますが、その核心は「イベント」+「コード」の性質です。また、いくつかのクールな拡張作業も行いましたが、それはコアの目的の二次的なものです。

概要:

  • これらのほとんどは上記の
  • +必要に応じて拡張して実行できます。完全なコントロール。
  • -HTTP は少し不安定ですが、動作します

Azure 関数

Azure Functions は、WebJobs SDK の中心的な目的を実現し、それをサービスとしてホストし、他の言語を簡単に開始できるようにすることを目的としています。また、ここで「サーバーレス」の概念を導入するのは非常に理にかなっているからです。私たちは SDK がどのようにスケーリングするかを知っているので、インテリジェントなことを行うことができます。

Azure Functions は、非常に高度に管理されたエクスペリエンスです。独自のホストの持ち込みはサポートしていません。現在、カスタム拡張機能はサポートしていませんが、調査中です。私たちはあなたができることとできないことについて意見を持っていますが、私たちが可能にするものについては、それらは滑らかで、使いやすく、管理が簡単です.

ただし、Functions を改善するために行った "フレームワーク" のほとんどは、WebJobs SDK を介して行われます。たとえば、Web ジョブ用の新しい NuGet をアップロードします。これにより、ログの速度が大幅に向上します。これにより、Web ジョブ SDK ユーザーにとってパフォーマンスが大幅に向上します。関数を「WebJobs SDK as a Service」として出荷することで、多くのエクスペリエンスの問題が大幅に改善されました。

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

関数は私たちの最新かつ最高のものであるため、おそらく偏見がありますが、関数の短所を自由に撮影してください。

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

于 2016-04-14T00:44:39.327 に答える
17

Azure Functions は WebJobs SDK に基づいているため、WebJobs で既に利用可能な機能のほとんどを提供しますが、いくつかの新しい優れた機能を備えています。

トリガーに関しては、WebJob で既に利用可能なトリガー (Service Bus、Storage Queues、Storage Blob、CRON スケジュール、WebHook、EventHub、File Cloud Storage プロバイダーなど) に加えて、Azure Functions を API としてトリガーできます。また、HTTP 呼び出しには kudu の資格情報は必要ありませんが、Azure AD およびサード パーティの ID プロバイダーを介して認証できます。

outputsに関して、唯一の違いは、Functions が HTTP 経由で呼び出されたときに応答を返すことができることです。

どちらも、bash (.sh)、バッチ (.bat / .cmd)、C#、F#、Node.Js、PHP、PowerShell、Python など、さまざまな言語をサポートしています。

関数は現在プレビュー段階であるため、ツールはまだ理想的ではありません。しかし、マイクロソフトはそれに取り組んでいます。現在 Visual Studio で Web ジョブを行っているのと同じように、Functions をローカルで開発およびテストする柔軟性が得られることを願っています。

Functions によってもたらされる最も重要で優れた利点は、VM インスタンスやスケーリングを管理する必要のない"サーバーレス" モデルの動的サービス プランを使用する代わりになることです。それはすべて私たちのために管理されています。さらに、専用インスタンスがないため、実際に使用したリソースに対してのみ料金が発生します。

2 つの詳細な比較はこちら: https://blog.kloud.com.au/2016/09/14/azure-functions-or-webjobs/

HTH :)

于 2016-09-15T08:19:26.363 に答える
17

上記の長くて少し古い投稿に、さらに 2 つの点を追加したいと思います。Azure Functions で従量課金プランを選択した場合の制限事項は次のとおりです。

10 分を超えるジョブを実行する場合は、webjobs を選択します。Azure 関数は、既定では5 分間のみ実行されます。プロセスが 5 分を超えると、Azure 関数はタイムアウト例外をスローします。host.json でタイムアウトを10 分に増やすことができます。

注: App Service プランの Azure 関数を使用している場合、タイムアウトの問題はありません。

区別するもう1つの理由は次のとおりです。Azure 関数を使用する場合、マシン (コンテナー) がその場で作成され、使用されると破棄されるため、最初の開始時間が遅くなります。

コールド スタートを回避するために、Azure 関数アプリはプレミアム プランをリリースしました。このプランでは、1 つのインスタンスが常に実行され、負荷に基づいて関数アプリがスケーリングを開始し、1 つのインスタンスと消費量に基づいて他のインスタンスに対して課金されます。

于 2018-01-17T07:36:19.327 に答える
14

ドキュメントによると、Azure Functions には、WebJobs にはない次の機能があります。

  • 自動スケーリング (CPU とメモリは、実行時に決定されたニーズに応じてスケーリングされます)
  • 従量制料金 (App Service プランではなく従量課金プラン)
  • その他のトリガー イベント (WebHooks など)
  • ブラウザー内開発 (Visual Studio は引き続き可能)
  • F# のサポート

簡単に言えば、Azure Functions は新しい動物です。App Service プランをまだ持っていない場合は、Functions を使用します。長期的には、WebJobs から始める方がよい理由が見当たらないからです (ただし、Functions ツールはまだ安定していない可能性があります)。

于 2016-12-14T22:33:18.227 に答える
1

この質問に対して私がいつも見つけた答えの 1 つは、Azure Web ジョブでホストをカスタマイズできますが、Azure 関数のホストをカスタマイズすることはできません。

この例は、「WebJob では、外部システムへの呼び出しに対してカスタムの再試行ポリシーを作成できます」です。

この種類のポリシーは、Azure 関数では構成できません。

于 2020-10-15T16:08:43.630 に答える