AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

AzureFunctionsを基礎から理解する(2021年版)

 

(随時追記中です)

Functionsはどの料金プランを使うべきか

 
Functions を新規作成する際は、以下から選択します。
 
・従量課金プラン
・Premiumプラン
・AppServiceプラン
 
しかし、何を基準に料金プランを選択すれば良いかよくわからない方もいると思うので、この記事を参考にしていただけたらと思います。

従量課金プラン

以下をすべて許容できる場合に限り、従量課金プランを使っても問題ないと思います。
 
● 課金・コストを抑えたい
● コールドスタートが発生して関数アプリの処理開始・処理中の自動スケールアウトの際待機時間が発生しても良い
● いつか関数アプリの実行が完了されれば良い

Premiumプラン

Functions は Premiumプランが推奨プランとなります。
以下ポイントのうち一つでも当てはまるのであれば、Premiumプランを使う必要があると思います。
 
● 処理時間にシビアなシステム要件的がある
● 処理開始時にコールドスタートを発生させたくない(デフォルト動作として、常にアクティブなインスタンスが用意される)
● 処理中に自動でスケールアウトされるときもコールドスタートを発生させたくない

AppServiceプラン

以下の場合はAppServiceプランを利用することになると思います。
 
● AppService/Functions 等の他リソースと同じAppServiceプラン上で実行させたい
 
※ Premiumプランのように、処理開始時にコールドスタートを発生させたくない場合、AppServiceプランに常時接続機能を有効にしましょう。
※ Premiumプランのように、必要に応じて自動でスケールアウトさせたい場合、AppServiceプランに自動スケールを設定しましょう。
 

注意点

既にAppServiceプランをもっているからといって、何でも一つのAppServiceプランに詰め込めばいいと思ったらそれは違います。一つのAppServiceプラン(Azureサーバ)で使えるリソースは有限ですので。
 
例えば、従量課金プラン・Premiumプランはリクエストが急に増えたりリソースが足りないとAzureサーバが判断したらデフォルトで自動スケールアウトしてくれますが、AppServiceプランは自動スケールアウトは事前に設定しないと自動スケールアウトしてくれません。
 
あと、従量課金プランはサーバーレスと書かれているようにAzure側が必要なサーバを用意して実行してくれるのですが、AppServiceプランは自分で適切な価格レベルを自分で選択する必要があります。

関数アプリケーションの実行のされ方

 
Functions はユーザがデプロイしたプログラムファイルがストレージアカウントに配置されます。関数アプリケーションが実行する際は、そのストレージアカウントから取得してきてインスタンス上で関数アプリケーションが実行されます。

Zipデプロイ

Zipデプロイのメリット
・Zipファイルだけになるので、プログラムファイルのリソース管理が簡単になる。

docs.microsoft.com

Functions のログ

 
Azure Functions でご利用いただけるログ機能について記載します。

関数アプリケーションのログをAzure側に出力~確認

下記3箇所にログファイルが出力されますが、出力される条件としては Functions に関数を作成およびその関数アプリケーションを実行すると、Azure 側でログを出力されます。
 
関数アプリケーションでのログへの書き込み方法は、プログラム言語ごとに説明が書いてあるので、以下ページを確認ください。
 
公式ドキュメント
ログへの書き込み

docs.microsoft.com

 
そして、出力されたログ確認は下記3箇所できます。
(3箇所とも同じ内容が出力されます。)
 

Azureポータル(関数のモニター)画面で確認

● 該当 Functions > [関数]関数 > <<関数名>> [Developer]モニター > ログタブ
f:id:nanacy7741:20211120105654p:plain  
 

Kuduサイト(LogFilesフォルダ)で確認

● 該当 Functions > [開発ツール]高度なツール > 移動 > Debug console タブ > CMD > LogFiles > Application > Functions > Function > <<関数名>> フォルダ
f:id:nanacy7741:20211120105836p:plain  
 

ストレージアカウント(ファイル共有)で確認

● 該当 ストレージアカウントの ファイル共有 > LogFiles > Application > Functions > function > <<関数名>> フォルダ
f:id:nanacy7741:20211120105931p:plain
 
ストレージアカウントのリソース名がわからなければ、ここで確認できます。
f:id:nanacy7741:20211121181435p:plain

診断設定の活用

上記で説明した3箇所で、関数アプリケーションのログやメトリック画面にメトリック情報は出力されます。
 
これらの情報をAnalyticsワークスペース等に転送し、クエリ検索をしたり複数のAppService/Functions等のリソースのログを統合的に調査・監視したい場合は、以下をご利用ください。
 
f:id:nanacy7741:20211121175458p:plain  
 
 
公式ドキュメント
AzureMonitorログを使用したAzureFunctionsの監視

docs.microsoft.com

===== 抜粋 ここから =====
Azure Monitor Logs を使うと、同じワークスペース内の異なるリソースのログを統合できます。また、それをクエリを使って分析し、収集したデータをすばやく取得、統合、分析できます。
===== 抜粋 ここまで =====
 

AzureMonitorのApplicationInsightsの活用

こちらを有効設定すると、上記で紹介してきたログ情報とはまた別に、アプリケーションに関するAzureサーバ側の稼働状況に関する情報が取得できます。
 
例えば、ASP.NET の場合はCPU・メモリ・I/Oの使用状況などが Azure 側で自動で収集されます。
 
 
公式ドキュメント
AzureAppServiceのアプリケーションの監視の概要

docs.microsoft.com

 
以上です。
 

ご意見・ご要望はこちらへ