AzurePaaS研究サイト

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

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

最終更新日.2021/ 9/ 6

   


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

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


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

 

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

www.azureportal-site.com


 

AppService と Functions の料金プラン

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

AppService
AppServiceプラン

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

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

 
 
各プランの詳細を、以下に説明していきます。

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 の先頭の概要ページの右側に以下の表示があります。

f:id:nanacy7741:20210911123619p:plain

 

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

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

料金プランの妥当性はテストが必要

 
Standard プランのインスタンス1台で5つのアプリケーションを実行させよう。をしてしまうと、受信した全てのリクエストをパフォーマンスよく処理できず遅延が発生したり、インスタンスのリソースが足りなくなってシステムエラーが発生したりするので、Azure サーバが耐えられるのかをご自身でテストしましょう。
 

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

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

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

 

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

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

 

Functions の料金プラン

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

Functions の従量課金プランは、毎月一定のアプリケーション実行量までは無料で利用できて、それ以降(無料枠分を超えたアプリケーション実行量)が、課金される料金プランです。アプリケーション実行量とは、CPU・メモリなどを使用した量・時間によって計算されます。
(Azure はコスト面が両親的ですね~。Azure を無料で試したい場合にもいいですよね。)
 
 

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

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

f:id:nanacy7741:20210911123952p:plain

呼び方が複数ある

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

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

 

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

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

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

 

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

注意点として、従量課金プランなのにアプリケーション実行中に数十秒の遅延が発生したぞ!という文句を言う方は、Azure Functions の各プランを理解できていないと思います。従量課金プランは、コスト重視のプランであることを理解してください。重要なシステムの場合、必ず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.microsoft.com

 
ご注意いただきたいのは、Functions を計算するときはストレージアカウント・ApplicationInsights などは必要に応じて、手動で追加する必要があります。
 

料金プランごとの制限

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

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

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

Basic

Standard 以上

 

Functions の Vnet統合

FunctionsでVnet統合(公式ドキュメント)を行う場合、AppServiceプランまたはPremiumプランを利用する必要があります。
従量課金プランではVnet統合できません。
 
 
 


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

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

 
以上です。
 

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