はじめに
Azure FunctionsのFlex Consumptionプランでは、可用性ゾーンを利用したゾーン冗長構成がサポートされています。
ただし、ゾーン冗長を利用できるリージョンには制限があります。
そこで今回は、東日本リージョン(Japan East)でFlex Consumptionのゾーン冗長が利用可能かをAzure CLIで確認してみました。
あわせて、ゾーン冗長の仕組みや料金についても整理します。
1. Azure Functions Flex Consumptionとは
Flex Consumptionは、Azure Functionsで利用できるサーバーレスのホスティングプランです。
主な特徴は以下のとおりです。
| 項目 | 内容 |
|---|---|
| ホスティング | サーバーレス |
| スケーリング | イベントに応じた自動スケール |
| 課金 | 実行時間・実行回数などに応じた課金 |
| Always Ready | 対応 |
| VNet統合 | 対応 |
| ゾーン冗長 | 対応 |
従来のConsumptionプランとは異なり、Flex Consumptionではゾーン冗長を構成できます。
参考:Microsoft Learn - Azure Functions Flex Consumptionプラン
2. ゾーン冗長とは
Azureの可用性ゾーン(Availability Zones)は、同一リージョン内で物理的に分離されたデータセンター群です。
ゾーン冗長を有効にすると、Azure Functionsのインスタンスが複数の可用性ゾーンに分散配置されます。
構成イメージは以下のとおりです。
Azure Japan East
│
├── Availability Zone 1
│ └── Functions Instance
│
├── Availability Zone 2
│ └── Functions Instance
│
└── Availability Zone 3
└── Functions Instance(必要に応じて配置)
これにより、ある可用性ゾーンで障害が発生した場合でも、ほかの正常なゾーンで処理を継続できるようにします。
ただし、ゾーン冗長によってすべての障害で無停止稼働が保証されるわけではありません。
3. Azure CLIで対応リージョンを確認する
3.1 Azure Cloud Shellを起動
今回はAzureポータルのCloud Shellを使用しました。
Cloud Shellを利用すれば、ローカルPCにAzure CLIをインストールする必要はありません。
手順は以下のとおりです。
- Azureポータルにサインインする
- 画面上部のCloud Shellアイコンをクリックする
- Bashを選択する
- 初期設定で「ストレージ アカウントは不要です」を選択する
- サブスクリプションを選択して「適用」をクリックする
ストレージをマウントしない一時セッションであれば、Cloud Shell自体の利用料金は発生しません。
3.2 Azure CLIのバージョン確認
以下のコマンドを実行します。
az --version
実行結果(一部抜粋):
azure-cli 2.91.0
core 2.91.0
telemetry 1.1.0
Python (Linux) 3.12.15
今回はAzure CLI 2.91.0で検証しました。
3.3 ゾーン冗長対応リージョンの取得
以下のコマンドを実行します。
az functionapp list-flexconsumption-locations \
--zone-redundant true \
-o table
--zone-redundant trueを指定することで、Flex Consumptionのゾーン冗長に対応したリージョンを取得できます。
実行結果:
Name
------------------
westus3
northeurope
westeurope
southeastasia
eastasia
japaneast
eastus2
southcentralus
brazilsouth
australiaeast
centralus
canadacentral
eastus
centralindia
westus2
uksouth
eastus2euap
francecentral
southafricanorth
switzerlandnorth
germanywestcentral
uaenorth
norwayeast
swedencentral
polandcentral
italynorth
israelcentral
結果に japaneast が含まれていることを確認できました。
東日本リージョンは、Flex Consumptionのゾーン冗長に対応しています。
3.4 東日本リージョンのみ確認する場合
東日本リージョンだけを確認したい場合は、以下のようにフィルタリングできます。
az functionapp list-flexconsumption-locations \
--zone-redundant true \
--query "[?name=='japaneast'].name" \
-o table
実行結果:
Result
---------
japaneast
japaneast が表示され、東日本リージョンでFlex Consumptionのゾーン冗長が利用可能であることを確認できました。
このコマンドを使用すれば、ほかのリージョンを含む一覧を表示せずに、東日本リージョンの対応状況だけを確認できます。
4. ゾーン冗長に必要なインスタンス数
Flex Consumptionでゾーン冗長を有効にすると、各スケーリング単位で最低2つのAlways Readyインスタンスが必要になります。
Always Readyは、リクエストが発生していない場合でもインスタンスを起動状態に維持する機能です。
ゾーン冗長を有効にした場合、必要なインスタンスが複数の可用性ゾーンに分散されます。
そのため、ゾーン冗長を有効にしたスケーリング単位では、インスタンス数が完全にゼロになることはありません。
なお、HTTPトリガーと個別にスケールする関数などを組み合わせた場合、必要なAlways Readyインスタンス数が増える可能性があります。
参考:Microsoft Learn - Azure Functionsの信頼性
5. ゾーン冗長の料金
Flex Consumptionでは、ゾーン冗長機能そのものに追加料金は発生しません。
ゾーン冗長を有効にすると最低2つのAlways Readyインスタンスが必要になりますが、小さなインスタンスサイズであれば、比較的低コストでゾーン冗長を構成できます。
5.1 主な課金項目
| 課金項目 | 内容 |
|---|---|
| Always Ready Baseline | 常時確保するインスタンスのメモリ容量と時間 |
| Always Ready Execution Time | Always Readyでの実行時間 |
| Always Ready Total Executions | Always Readyでの実行回数 |
| On Demand Execution Time | オンデマンドでの実行時間 |
| On Demand Total Executions | オンデマンドでの実行回数 |
5.2 Always Readyの料金例
Always Ready Baselineの参考単価を使用して、月額料金を試算します。
参考単価:$0.000004 / GB秒
30日間(720時間)、最低2インスタンスを維持する場合の概算は以下のとおりです。
| インスタンスサイズ | インスタンス数 | 月額(USD) | 月額(日本円) |
|---|---|---|---|
| 512MB | 2 | 約$10.37 | 約1,555円 |
| 2GB | 2 | 約$41.47 | 約6,221円 |
| 4GB | 2 | 約$82.94 | 約12,442円 |
※1ドル150円で換算しています。
例えば、512MBのインスタンスを2台維持する場合、次のようになります。
0.5GB × 2台 × 30日 × 24時間 × 3600秒
× $0.000004
= $10.368 / 月
日本円では、月額約1,555円となります。
このように、Always Readyの基本料金だけであれば、512MB構成では月額1,000円台でゾーン冗長を実現できる計算です。
もちろん、実際にはFunctionsの実行時間・実行回数・ストレージ・ネットワークなどの料金が別途発生します。
また、東日本リージョンの適用単価や契約条件によって実際の金額は異なります。
それでも、ゾーン冗長による可用性向上を比較的低コストで実現できる点は、Flex Consumptionの魅力の一つといえます。
参考:Microsoft Azure - Azure Functionsの料金
6. ゾーン冗長構成のポイント
6.1 Storage Accountの冗長性
Azure Functionsで利用するストレージについても、可用性を考慮する必要があります。
ゾーン冗長構成では、ZRS(Zone-Redundant Storage)の利用を検討します。
Functions本体がゾーン冗長でも、依存するストレージがゾーン障害に対応していなければ、システム全体の可用性に影響する可能性があります。
6.2 ゾーン冗長とリージョン冗長の違い
ゾーン冗長は、同一リージョン内の可用性ゾーン障害に備える仕組みです。
一方、リージョン全体の障害に対応するには、複数リージョンを利用する構成が必要になります。
例えば、東日本リージョン全体が利用できなくなった場合、東日本リージョン内のゾーン冗長だけでは対応できません。
6.3 コストと可用性のバランス
通常のFlex Consumptionでは、処理がない場合にゼロまでスケールダウンできます。
一方、ゾーン冗長を有効にすると、最低2つのAlways Readyインスタンスが維持されます。
ただし、512MB構成であれば、Always Readyの基本料金は月額約1,600円という参考試算になります。
そのため、小規模なシステムでも、比較的低コストでゾーン冗長を採用できる可能性があります。
実際の利用にあたっては、処理に必要なメモリ容量や実行回数に応じて適切な構成を選択することが重要です。
7. まとめ
今回、Azure CLIを使用して、東日本リージョンにおけるAzure Functions Flex Consumptionのゾーン冗長対応状況を確認しました。
| 確認項目 | 結果 |
|---|---|
| Flex Consumptionのゾーン冗長 | 対応 |
| 東日本リージョン | 対応 |
| Azure CLI | 2.91.0 |
| 最低インスタンス数 | スケーリング単位ごとに2 |
| ゾーン冗長自体の追加料金 | なし |
| Always Readyの基本料金 | 512MB×2台で月額約1,600円(参考試算) |
東日本リージョン(Japan East)は、Azure Functions Flex Consumptionのゾーン冗長に対応していることを確認できました。
また、ゾーン冗長を有効にするとAlways Readyインスタンスが必要になりますが、512MB構成であれば基本料金は月額約1,600円という参考試算になります。
比較的低コストで可用性を向上できる点は、Flex Consumptionの大きなメリットだと感じました。
今回は対応リージョンの確認まで実施しました。
今後は、実際に東日本リージョンでゾーン冗長のFunction Appを作成し、設定方法や動作についても検証してみたいと思います。