Azureの資格であるAZ-204の取得をする必要が出てきましてMicroSoftの公式ラーニングパスで勉強をはじめました。
単純にラーニングパスをやっているだけだと、頭に入りそうに無いので
気になったこととか考察とかを都度書いていきます。
※ 記載している内容に間違いや質問があればご教示ください!!
今回は以下ラーニングパスでの考察になります。
https://docs.microsoft.com/ja-jp/learn/modules/choose-azure-service-to-integrate-and-automate-business-processes/
はじめに
Azurenにはイベント駆動型のアプリケーションを作成するためのサービスとして、
以下4つのが提供されている
ラーニングパスないでは前者2つを "デザイン優先のテクノロジ"、
後者2つをコード優先のテクノロジとよんでいる。
要は、GUI上での操作で完結させるならデザイン優先、
コードを記述して、動作を細かく設定させる必要があるならコード優先を選択すれば良いのだろう。
気になったのはコード優先のテクノロジーとしてあげられているAzureFunctionとServiceWebJobs。
AzureFunctionはWebJobsでできないことをほとんどできるし、
WebJobsって必要なくね?と思いました。
(コード優先テクノロジの比較に記載されている)
しかし、実際はWebJobsのほうがAzureFunctionよりも優位なケースもあるようで、
その辺について考えてみる。
WebJobsの強みについて考えてみる
手始めにWebJobsが必要なパターンを考えるために、WebJobsの強みについて考えてみる
WebJobsについて、公式でキュメントには以下のように説明がされている。
AzureFunctionはWebJobsと比較して、多様な設定のカスタムができることから
柔軟性に優れておりほとんどの場合においてはAzureFunctionの方が第一選選択肢となりうる。
しかし、WebJobsにも強みがあり、その強みが生かせる時がWebJobsを使うケースをなるのだろう
WebJobsはアプリケーションに含む形で作成できる
WebJobsの特徴はアプリケーションの一部として作成することができることにある。
例えば、Mainといアプリとそれに関連するイベント駆動型タスク、タスクAとタスクBがあったとする。
Azure Functionの場合、
- Main
- タスクA
- タスクB
と言ったように、AzureFunctionとアプリケーションを個別に管理する必要がある。
対して、WebJobsでは下記のようにアプリに包括させる形で管理することができる。
- Main
|-タスクA
LタスクB
そのため、アプリケーションに紐ずくタスクがが複数ある場合はWebJobsが有用である。
(逆に言えば、アプリケーションに紐付かないタスクの場合は都度、リソースを作る必要がある気がする)
JobHostでの制御を細かく制御できる
AzureFunctionsではJobHostの設定をhost.jsonというjsonファイルに文字列として記載して制御する。
対して、WebJobsはJobHostオブジェクトにより、コードとして記載することができるため、ポリシーを細かく設定できる。
(AzureFunztionでもStartUpファイルを使えば、ポリシー設定をコードかけるような気がしないでもない)
結論
WebJobsが採用されるな一番の要因はやはり、アプリに含めて作成さることではないかなと考える。
なぜなら、JobHostの制御は、AzureFunctionでもできないわけではないし、採用要員としては弱いかなと思うためである。
参考URL
- https://docs.microsoft.com/ja-jp/learn/certifications/exams/az-204
- https://docs.microsoft.com/ja-jp/power-automate/getting-started
- https://docs.microsoft.com/ja-jp/azure/logic-apps/
- https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-overview
- https://docs.microsoft.com/ja-jp/azure/app-service/webjobs-create
- https://docs.microsoft.com/ja-jp/learn/modules/choose-azure-service-to-integrate-and-automate-business-processes/2-identify-technology-options