AzurePaaS研究サイト

AzurePaaS研究サイト

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

【5分でわかる】AppServiceとFunctionsの料金プラン(AppServiceプラン・従量課金・Premium)を理解する

最終更新日.2021/ 11/ 17

   


 このページの対象者
   AppServiceプランでどの価格レベルを選べばいいかわからず、本番環境なのにBasicを選んでしまう
   Functionsの従量課金プランとは、アプリが実行された分の課金が発生するプラン、という説明しかできない
   従量課金プランとPremiumプランの違いが説明できない
   Premiumプランと聞いただけで高価なプランだからと選択肢から除外してしまっている

 
料金プランなんてそんなに大事なのか?と思うかもしれませんが、このページの内容は理解してないと、壁にぶち当たったり無駄な時間を過ごしてしまう可能性が高いと思います。
この記事を読んで、理解を深めていただけたらと思います。
 


 料金プランを理解できると以下のようになります
   AppServiceプランでどの価格レベルを選べばいいかわかる
   課金の発生状況・いつ課金されてるのかがわかる
   余計な調査時間をかけずに済む
   コールドスタートに腹を立てる謎の時間がなくなる
   従量課金プランに過度な期待を抱かずに Premiumプランも検討しはじめる

 

それ以前にAppServiceとFunctionsの違いがわからん。
という方は、こちらも参照ください。

www.azureportal-site.com


 

AppServiceとFunctionsの料金プラン

それぞれの選択肢を記載します。

AzureAppService

AzureAppService(Web Apps)を新規作成する際、以下を選択して作ります。
既にお持ちのAppServiceプランから選択、またはその場でAppServiceプランを新規作成します。
f:id:exemple:plain title=

AppService
AppServiceプラン

AzureFunctions(関数アプリ)

AzureFunctions(Functions App)を新規作成する際、以下の中から選択して作ります。
f:id:exemple:plain title=

Functions
従量課金(サーバーレス)プラン
Premium プラン
AppServiceプラン

 
ここまでのポイントとしては、AppServiceは必ずAppServiceプランを使うことになり、FunctionsはAppServiceプランも選べるが従量課金またはPremiumも選べる。ということですね。 
 
 
 
では次に、各プランの詳細を説明していきます。
 

AppServiceの料金プラン

AppServiceプラン(AppServiceとFunctionsで選べる)

AppServiceプランを作る=VM サーバを1台レンタルできるイメージです。AppServiceプランを作るとき、以下の全18種類の中から価格レベルを選びます。
 
課金の発生は、AppServiceプラン1つに対してかかるので、1つだけアプリケーションをデプロイして動作させても、複数のアプリケーションをデプロイして実行させてもAppServiceプランに課金される金額は変わらないのがポイントです。あと、AppServiceの非同期処理担当のWebジョブ(サイト内リンク)もプラス料金なしで利用できます。
 

AppServiceプランの価格レベルを選択

ポータル画面を日本語表示にしてると "価格レベル" ですが、sku とか tier とも表現されるので覚えておいてください。
結構種類がありますね。選択する価格レベルごとに、サーバの「メモリ数」「コア数」をはじめ、使用できる機能も異なります。後述しますが、開発環境(ステージング環境)ならBasicでいいですが、本番環境(運用環境)を作るならStandard以上は必須と思ってください。

Free Shared Basic Standard
- - B1 S1
- - B2 S2
- - B3 S3
PremiumV2 PremiumV3 Isolated IsolatedV2
P1V2 P1V3 I1 I1V2
P2V2 P2V3 I2 I2V2
P3V2 P3V3 I3 I3V2

 
価格レベルの内容は、公開情報をみれば一目瞭然ですので、以下を参照ください。
AppServiceプラン一覧の公開情報

azure.microsoft.com

 
 
Azureをお試しで使いたい人は、Free (F1) を選択すれば無料で試せますが、AppService/Functionsの合計が10個までなどの制限はあります。
 
制限について公開情報抜粋
f:id:exemple:plain title=

 
   

作成したリソースのAppServiceプランの価格レベルが何か調べる方法

AppService/Functions の先頭の概要ページの右側に以下の表示があります。

 

本番環境はどの価格レベルが適切なのか

1つのAppServiceプランに複数のアプリケーションをデプロイできますが、AppServiceプラン(サーバ)のリソースは限られているので、リソースを超えて動作するとシステムエラーが発生します。
 
テスト・動作確認で使う場合Basic でもOK
※ Standard以上でないと使えない機能(自動スケール・スロット・バックアップなど)もあるので、本番リリースに近い時期のテストを行うときはBasicでは済まないかなと思います
 
本番環境(運用環境)で使う場合Standard 以上が必須
※ 最低限は Standard だが、P1V2, P1V3 以上が推奨
※ AzureMVPのしばやんさん(外部サイトリンク)もP1V2を推奨してます
 
たまに本番環境で Basic を使ってしまっている方がいますが、それなりのボリュームのアプリケーションなのであれば、CPU 使用率が高くなったのはなぜだ!リソースが足りなくなるのはなぜだ!とやっているのは時間の無駄なので素直にスケールアップ(料金プランを上げる)を検討しましょう。
 
Isolatedプランは、ASE(AppServiceEnvironment)構築用の料金プランです。他ユーザのアプリケーションの影響を受けたくない場合などに使う高級(月に数十万円)な専用環境です。

選択した料金プラン・デプロイ~実行するアプリ数の妥当性はテストが必要

Standardプランのインスタンス1台で10個のアプリケーションを実行させよう。をしてしまうと、受信した全てのリクエストをパフォーマンスよく処理できず遅延が発生したり、インスタンスのリソースが足りなくなってシステムエラーが発生したりする可能性があるので、Azureサーバが耐えられるのかをご自身でテストしましょう。
テストの方法としては、実際にAzureサーバ上で実行させてから、メトリック・問題の診断と解決でAzureサーバの負荷状況・エラー発生状況が確認できます。
 
また、一つのAppServiceプランにデプロイ~実行する推奨アプリケーション数は、以下ページに記載されているので参考にしてください。ただ、アプリケーションごとの規模によっても変わりますので、テストが必須ということになります。

azure.github.io

 

遅延発生やリソース枯渇が発生した場合の回避方法

アプリケーション実装の見直しが有効なのはもちろんですが、Azure側の設定での回避方法は以下になります。

  • スケールアップする(インスタンス自体のスペックをあげる)
  • スケールアウトする(インスタンス台数を増やす)
  • AppServiceプランに登録したAppService/Functionsを減らす(別のAppServiceプランに分割する)

 

AppServiceプランを停止すれば課金は止まるのか

使用していないAppServiceプランは停止しておけば課金が止まるのかな・・・と思うかもしれませんが、そもそもAppServiceプランに「停止」というメニューはありませんので「停止」はできず、課金を止めるには AppServiceプランを削除するしかないが答えです。
 
また、AppServiceプランにデプロイしている AppService や Functions を停止はできますが、停止したアプリケーションが動かなくなるだけで、AppServiceプラン自体の時間単位での課金は発生し続けます。VMサーバを占有している状態になるので、停止をすれば課金が止まるという考え方は通用しませんので、覚えておいてください。
 
 
 
 
AppServiceの料金プランの次は、Functionsの料金プランを説明していきます。

 

Functionsの料金プラン

従量課金(サーバーレス)プラン

Functionsの従量課金プランは、毎月一定のアプリケーション実行量までは無料で利用できて、それ以降(無料枠分を超えたアプリケーション実行量)が、課金される料金プランです。アプリケーション実行量とは、CPU・メモリなどを使用した量・時間によって計算されます。
 
Azureはコスト面が両親的ですね~。Azure を無料で試したい場合にもいいですよね。ただ・・・アプリケーションの処理時間・応答時間に関してクリティカルなシステム要件がある場合は、従量課金プランは使わないでください。何秒以内に処理を完了させたい!という要件があるのに従量課金プランを使って、文句を言い出してしまうケースが多いです。誰も幸せにならないのでやめましょう。(重要)
 
 

作成したFunctionsが従量課金プランなのか調べる方法

Functionsの先頭の概要ページの右側に以下の表示があります。

呼び方が複数ある

Microsoftの情報に、呼び方が4パターンも存在しています!統一してほしいですが、翻訳の影響で仕方ないんですかね。

公開情報 ポータル画面 英語資料 料金計算ツール
従量課金プラン 消費量(サーバーレス) Consumption 使用量

4つすべて全く同じ意味ですので、覚えておいてください。
 

従量課金プランの無料枠について

Functionsが毎月無料で使える条件は、以下のいずれかの範囲の場合です。この範囲であれば、ポータル上でFunctions作成・プログラムコードのデプロイ・アプリケーション実行を実施しても、完全無料で利用できてしまいます。
 
【無料枠の詳細】
実行回数[回] が 月100万回 以下
または、
実行回数[回] と 実行時間[秒] と 平均メモリサイズ[GB] を乗じた結果が、40万GB/秒以下
 
概算を計算したい方は、後述する料金計算ツール(公式ドキュメント)で「Functionsの使用量」を選択して計算してみてください。
 

従量課金プランのメリット

Point
無料枠まで無料(Functionsを作成・デプロイしても課金されない)
これって地味に嬉しいですよね、これがあるから従量課金プランを選ぶ人が多いのかもしれません。ではいつ課金されるかというと、利用者がアクセスしてアプリケーションが動いた量が無料枠を超えて CPU・メモリ が使われた分が課金されます。(これに対して、先述したとおりAppServiceプランは作っただけで、時間単位の課金がはじまります。)

注意点として、従量課金プランなのにアプリケーション実行中に数十秒の遅延が発生したぞ!という文句を言う方は、AzureFunctionsの各プランを理解できていないと思います。従量課金プランは、コスト重視のプランであることを理解してください。重要なシステムの場合、必ずAppServiceプランかPremiumプランを利用してください。
Point
AppServiceプランのように、インスタンスのスペックを選ぶ必要がない
サーバ設定などを意識する必要がないので、ポータル画面で「サーバーレス 」と表記されてます。
Point
Azureが自動でスケールコントロールしてくれる
今動作しているインスタンス台数などでは処理を行う上でスペックが足りないとAzureプラットフォーム側が判断した場合、Azureプラットフォーム側が自動でインスタンス台数を増やしてくれたり、処理を行う上で必要な分のメモリを使わせてくれます。よって、AppServiceプランと違って、スペックが足りずに処理の途中でエラー終了してしまうということが、基本的に発生しません。

 

従量課金プランのデメリット

Point
使用できないメトリックがある
アプリケーションは他ユーザと共有されているインスタンス上で動作するので、 アプリケーションごとのCPU使用率の取得 などができない。
Point
コールドスタートが発生
しばらく関数が実行されていないと、アイドル状態になり、次回実行された時にメモリ上に展開されるため、アプリケーションの起動に時間がかかる場合がある。
Point
エラーや処理遅延が発生することがある
Azureプラットフォーム側が必要に応じて自動でインスタンス台数を増やしてくれたりしますが、アプリケーションの処理内容によってはエラーや処理遅延が発生する場合があります。それを発生させたくなければ、AppServiceプランかPremiumプランを使用する必要があります。
ポータル画面で、従量課金プランからAppServiceプランやPremiumプランに変更することはできないので、Functions(関数アプリ)を新規作成する必要があります。

 
従量課金プランは、どんなアプリケーション処理でも動く万能プランではなく、コスト・手軽さ・柔軟さを重要視したプランであると理解してください。安く利用したいけど性能・パフォーマンスも期待したい、は不可能です。
 

Premiumプラン

 
Functions(関数アプリ)は Premiumプラン が推奨です。
 
従量課金プランは、使用されるインスタンスのスペックがあまり高くない上にコールドスタートも発生するのでパフォーマンス面で不安定なプランといえます。(極端にいうと、コスト面しかメリットがないと思っていいと思います。)
 
それに比べてPremiumプランは、コールドスタートがない上に、EP1 から EP3 までスペックを選べます。当然上位の方がパフォーマンスを期待できます。
 
 
 
既に概要を書いてしまいましたが、以下にPremiumプランのポイントを説明します。

Premiumプランのポイント 

Point
ゴールドスタートが発生しない
AppServiceプランと同じように、常にインスタンスが確保されている状態にしてくれます。そのため、コールドスタート(処理開始の遅延)が発生しません。処理時間・応答時間にシビアなアプリケーションの場合は、Premiumプラン(または、AppServiceプラン)を使用してください。
従量課金プランだと、Initializing host (インスタンスがアクティブ状態になるまでにかかる時間)が発生してしまうので、処理開始が遅延する場合があります。従量課金プランを使って、なぜコールドスタートが発生したんだ!と調べたりする時間は無意味なので、素直にPremiumプランを使用しましょう。
Point
Azureが自動でスケールコントロールしてくれる
従量課金プランと同じく、自動でスケールアウト~増えたインスタンスが必要なくなったらスケールインをしてくれます。AppServiceプランの自動スケールは、自分でいつインスタンスを増やすかの条件を設定する必要がありますが、FunctionsはAzure側のスケールコントローラーが判断して動いてくれます。
Point
アプリが実行しただけ課金される
従量課金プランと同じく、利用者がアプリケーションを使用した分だけ課金され、作ってデプロイするだけなら無料です。
Point
3つのプランから選べる
プランの種類には EP1, EP2, EP3 と3種類あり、EP3が一番スペック(コア数・メモリ量)が高いです。
f:id:exemple:plain title=

   
 
FunctionsのPremiumプランの公開情報

docs.microsoft.com

料金プランを理解するならやっぱりこの本


Azure Functions
料金プランや以下のプログラムコード・画面が載ってます。
・TimerトリガーでComosDBにデータ書き出し
・HTTPトリガーでAzureSQLDatabaseを更新
・CosomosDBトリガーでCosmosDBにデータ書き出し
・EventGridトリガーでストレージアカウントにデータ書き出し


 

実際にかかる課金額(料金計算ツール)

 
細かい説明はわかったけど、実際にどのくらい課金が発生するんだ・・・
については、どのくらいかかりますよと無責任なことを言ってしまうのが難しいので、以下の「料金計算ツール」を参考にしていただければと思います。
 
料金計算ツールの公開情報

azure.microsoft.com

 
ご注意いただきたいのは、Functionsを計算するときはStorageAccount・Application Insightsなどは必要に応じて、手動で追加する必要があります。
 

料金プランごとの制限

 
このプランじゃないとこの機能は使えない、という制限が色々ありますので、一部の例を紹介します。

AppServiceプランは価格レベルによって使用できる機能が異なる

AppService で自動スケール・バックアップ・スロットの機能を使いたい場合は、価格レベルにStandard 以上を利用する必要があります。
 
参考に、BasicとStandard以上の場合を比較してみましょう。

Basic

Standard以上

 

FunctionsのVnet統合

例えばサービスエンドポイント・プライベートエンドポイントを経由してストレージアカウントにアクセスする必要がある場合、Functionsのネットワーク設定でVnet統合(公式ドキュメント)を行う必要が出てきますが、FunctionsでAppServiceプランまたはPremiumプランを利用する必要があります。(従量課金プランではVnet統合できない)
安く使いたい為に従量課金プランを使いたいけどアクセス制御をしたいのであれば、IPアドレス等でアクセス制御をすることになります。
 
 


 
AppService/Functionsの料金プランの説明は、以上になります。
 
慣れてない方は、料金プランだけでこれだけ色々覚えることがあるのか・・・と感じるかもしれませんが、何か疑問があればコメントいただければと思います。
 

 
Azure有償サポートの料金なども書きましたので、ご参考ください。   www.azureportal-site.com
 

 
以上です。
 

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