🤔

Azure初心者必見!AppsServiceを"停止"してもコストは削減できない?

2023/12/16に公開

はじめに

Azureを利用し始めたばかりのころ、AppServiceをうまい具合に低コストで利用してやろうと思っていたところ失敗した話です(私が理解不足なだけでしたが、、)。
ただ、Azureのコストに関しては幾分わかりにくい部分もあり、私と同じような体験をする初心者をなくすために本記事を書きます。

結論:AppServiceコスト削減の誤解

AppServiceとして稼働している アプリを停止してもコストは削減されない
コストを削減するためにはAppServiceの実行環境 AppServicePlanの削除 が必要。

この記事で解説する内容の概要

この記事では、AppServiceでのアプリ停止がコスト削減にならない理由とAppServicePlanも交えた正しいコスト削減方法を提案します。
また、私が勘違いしてしまった原因として「料金計算ツールの罠」や「AppService、WebApps、AppServicePlanの単語の紛らわしさ」も説明します。

AppServiceとは

AppServiceの基本的な機能

AppSerivceは、Webアプリケーションをホスティングするためのサービスです。開発者はサーバーの管理や運用を気にすることなく、アプリケーションのデプロイと実行にのみ集中できます。

AppService、WebApps、AppServicePlanの関係

AppService周りにはWebApps、AppServicePlanという関連単語があるのでこれも紹介します。

まず、AppServiceはWebアプリケーションをホスティングするためのサービス全体を指す包括的な単語として使われているようです。

https://learn.microsoft.com/ja-jp/azure/app-service/overview

AppServicePlanはAppServiceの中でとくに実行環境部分をさします。AppSeviceにデプロイされるアプリケーションはこのAppServicePlan上で動作します。リソース量や機能で複数のタイプがありこの選択でコストにも差が生まれます。

また、webAppsという言葉もあります。

この言葉は使われ方が曖昧でAppServiceと同じ意味として使われることもあれば、AppServicePlan上で稼働するアプリケーション(コンテナー環境)のことを指しているときもあるようです。

マイクロソフトの公式サイトに説明がありますが、Azureポータル上ではあまり見られない単語で混乱を防ぐためにもあまり使わない方がベターかと筆者は思っています。

WebApps

私のコスト削減勘違い体験

はじめからAppServicePlanをFree F1プランで作成すればそもそもこのような落とし穴にはまることはありませんでしたが、Freeプランでは利用していないと定期的にアプリを停止されてしまうというデメリットがあります。
そのため、Basicで夜間は停止させてコスト削減つつ使おうと思っていました。

結果、AppServiceの アプリの停止 をして「よしよし」と思っていたところ AppServicePlanの停止(削除) をしないとコスト削減されないことに気が付き「とほほ、、」な思いをしました。

AppServiceの勘違いコスト削減方法

私が誤っておこなった内容です。

Azureポータル上AppService画面の赤枠からアプリの"停止"をしました。

AppServiceの"停止"画面
AppServiceの"停止"画面

これによって停止している間は課金されないはず、と期待していました。

AppServiceの正しいコスト削減方法

しかし実際はコスト削減されません。コスト削減するためにはAppServicePlanの画面から 削除 しなくてはなりません。(AppServicePlanには「停止」の操作はできません。)

AppServicePlanの"削除"画面
AppServicePlanの"削除"画面

実際問題、AppServicePlanの削除&作成をこまめに行うのは難しく、コストを抑えるのであればAppServicePlanを「Free F1」などより低価格のプランに変更して運用することが適切です。

https://learn.microsoft.com/ja-jp/azure/app-service/app-service-plan-manage#move-an-app-to-another-app-service-plan

勘違いした原因

私が勘違いした原因を2点紹介します。

原因1: 料金計算ツールの仕様

原因の1つとして、料金計算ツールの画面があげられます。

Azureではコストのシミュレーション用に下記サービスが提供されています。

料金計算ツール

ここでAppServiceを選択すると下記のような計算画面が表示されます。

AppServiceの料金シミュレーション
AppServiceの料金シミュレーション

私はこの画面を見て、素直に「Azure上のAppServiceの画面とリンクしているはず」と思い、そこから 停止 をすればコスト削減できるはず、と連想してしまいました。

インスタンス数についても、デプロイされているコンテナーの数と思ってしまいました。

しかし、実際はこの画面の内容はAzureポータル上ではAppServicePlanの内容とリンクしており、インスタンス数もAppServicePlanとして稼働させるホストの数のことです。

原因2: AppServiceの単語の曖昧さ

2つ目の理由として、前述した単語の複雑さがあります。

私の中で AppService = AppServicePlan上で稼働するアプリ(コンテナー環境) の認識がありました。

ただ実際は料金計算ツールはじめ、 AppServicePlanも含めたサービス全体を指す単語 として使われており認識齟齬がありました。

Azureポータル上で「AppService」と「AppServicePlan」はそれぞれ別の画面として用意されていることもミスリードでした。

まとめ

AppServiceの課金体系として下記に注意してください。

  • アプリを停止してもAppServiceの課金は止まりません。
  • 課金を止めるにはAppServicePlanの削除が必要です。

また、誤解を防ぐためにAppServiceはAppServicePlanも含めた包括的な概念と理解しておくのがよさそうです。

Azureは

  • 元が英語圏のサービスであり日本語説明が弱い
  • サービス名の改定や統廃合が多くサービス体系が複雑化している

などの面からミスリードされる要素もあります。

しかし、AppService自体は大変使い勝手がよいサービスで私も公私両面でよく使っています。

性質を正しく理解したうえで、充実したAzureライフを送ることに協力できれば嬉しいです。

Discussion