御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します。

Azure Functions Flex Consumption Planの料金体系とコストについてまとめました

前回に引き続きMicrosoft Build 2024 でパブリックプレビューとなった「Azure Functions Flex Consumption」についての紹介記事です。今回はFlex Consumption の課金体系やコストの仕組みについて解説します。

Flex Consumption と従来の従量課金プランの性能を比較した前回記事はこちら↓
onarimon.jp

Azure Functions Flex Consumption Plan 課金体系概要

Azure Functions Flex Consumption Plan には2つの「課金モード」があり、インスタンスごとに設定されます。モードは従量課金のインスタンス「オンデマンド(On Demand)」と常時使用可能として割り当てたインスタンスの課金体系「常時使用可能(Always ready)」があります。

2つのモードはそれぞれ下記のような課金要素で構成されています。

  • 「オンデマンド」モード:「実行時間(GB-秒)」「実行(数)」による2つの要素による課金。オンデマンドモードには一部環境に無料提供が含まれます。
  • 「常時使用可能」モード:待機時間中にかかる「ベースラインアイドル時間」「実行時間(GB-秒)」「実行(数)」

Azure Functions Flex Consumption プランの請求方法については公式から具体例込みで紹介されていますね。最新情報や詳細はこちらをご確認ください。
Azure Functions での従量課金ベースのコストの見積もり | Microsoft Learn

Azure Functions Flex Consumption Plan の価格について

Azure Functions Flex Consumption Planの料金に関してはAzure Functions の価格のページをご参照ください。Flex Consumption 対応済みのRegionのみ確認可能です。
価格 - Functions | Microsoft Azure

オンデマンドの料金は従来の従量課金プランと単価は変わらないみたいですね(無料提供額は従量課金の方が多い)。

ちなみに2024年5月30日現在の東アジアリージョンの価格表は下記のように公開されていました。

従量制課金 無料提供 (月額) 従量課金制
オンデマンドの実行時間 100,000 GB 秒 ¥0.003775/GB 秒
オンデマンドの合計実行回数 250,000 の実行 100 万実行回数あたり ¥47.184
常時使用可能ベースライン ¥0.0009437/GB 秒
常時使用可能の実行時間 ¥0.0023592/GB 秒
常時使用可能な総実行回数 100 万実行回数あたり ¥47.184000

無料分は考えないとすると下記のような計算式になりますね。

料金 計算方法
【オンデマンド】実行時間価格(1インスタンスあたり) {オンデマンドの実行時間単価(/GB秒)} × {インスタンスのメモリ量} × {実行時間(秒)}
【オンデマンド】実行回数の価格 ({要求回数}/100万) × {オンデマンドの合計実行回数単価}
【常時使用可能】ベースラインの価格 {常時使用可能ベースラインの価格単価(/GB秒)} × {インスタンスのメモリ量} × {待機時間(秒)}
【常時使用可能】実行時間価格(1インスタンスあたり) {常時使用可能の実行時間単価(/GB秒)} × {インスタンスのメモリ量} × {実行時間(秒)}
【常時使用可能】実行回数の価格 ({要求回数}/100万) × {常時使用可能の合計実行回数単価}

この5つの料金を足したものがFlex Consumption Planの料金となります。

Azure Functions Flex Consumption Plan を Azure Load Tesing で負荷テストしたときの料金例

前回の記事で Flex Consumption のFunctionsと 従来の従量課金のFunctions に対してAzure Load Testing の負荷テストを行い、性能比較を行いました。

onarimon.jp

特に何も考えず、回数課金の従量課金リソースに大量のリクエストを送っていましたが、果たしてどれほどの課金が発生したのか?そしてFlex Consumption と 従来の従量課金の価格差はどのくらいなのか?

ちなみにAzure Load Testing で実行した回数、実行時間ですが、下記のような負荷をかけてます。

リソースの種類 実行回数 失敗回数 負荷テストの総実行時間(推定)
Azure Flex Consumtionリソース 809,248回 0回 97,487秒
従来の従量課金プランリソース 451,854回 180,673回 112,927秒

従来の従量課金プランの方は負荷をかけすぎて失敗しているのとそもそもスループットが違うので同じ内容でテストをしても同じ回数実行されていないです。

まず結果として過去30日間の料金がこちらです。
Flex Consumptionがオンデマンドの総実行時間で62.15円、オンデマンドの総実行回数で36.33円で合計98.49円でした。

Azure Flex Consumption リソースのコスト結果

この値段を高いとみるか、低いと見るかは予算や導入メリットなどで状況毎に違うと思うので各自ご判断お願いします。

従来の従量課金は総実行時間で18.96円、総実行回数で18.76円で合計37.92円でした。

従来の従量課金のコスト結果

結果、単価が同じはずの両者で違いが生まれている状況です。
この差異はスループットの違いや実行失敗による実行回数や実行時間の違いにより生まれた差異だと推測しています。引き続き、検証を行い理由がわかったらこちらの記事に追記しようと思います。

ついでにAzure Load Testing の価格。

Flex Consumptionより、従量課金よりAzure Load Testing が高い...という結果に!!

Flex Consumption でメトリックから使用量を確認したり、コスト見積もりを行う

Azure Functions のメトリックについては下記のページで紹介されています。
learn.microsoft.com

この中で説明されている下記のメトリックがFlex Consumption Plan で課金に関係するメトリックです。

  • OnDemandFunctionExecutionCount ←オンデマンドインスタンスの実行回数
  • OnDemandFunctionExecutionUnits ← オンデマンドインスタンスの実行時間(MB-ミリ秒)
  • AlwaysReadyFunctionExecutionUnits ← 常時使用可能インスタンスとして割り当てられている待機時間(MB-ミリ秒)
  • AlwaysReadyFunctionExecutionCount ← 常時使用可能インスタンスの実行回数
  • AlwaysReadyUnits ← 常時使用可能インスタンスの実行時間(MB-ミリ秒)

※実行時間系はメトリックの値に対して、割り当てた固定インスタンスメモリサイズを乗算することで実行単位が計算される。

今回のケースで Flex 従量課金プランのメトリックから使用量を分析してみようと思います。
Azure Portal のメトリックの画面でメトリック「OnDemandFunctionExecutionCount」を検索します。

OnDemandFunctionExecutionCount の値は809.25k = 809,250 で負荷テストで実行した回数と誤差はありません。


OnDemandFunctionExecutionUnits の値は17.69B です。「B」はおそらく「ビリオン(billion)」ですね。

ここから取得した値を用いて、見積もりのためにコストを分析することが可能です。

最後に

Flex Consumption の料金体系についてある程度把握することができました。
今回メトリックで取得した使用量から計算したコストと実際のコストが完全に一致していないので気持ち悪い結果になったしまったのが心残りであります。
課題としてどこかの機会で解明していきたいと思います。

参考ページ

learn.microsoft.com

azure.microsoft.com

learn.microsoft.com