[パブリックプレビュー] Azure SQL Database で無料枠が適用出来るようになったので使ってみた

2023.10.02

いわさです。

Microsoft Azure のデータベースサービスのひとつに Azure SQL Database があります。

私は .NET アプリケーションのバックエンドを Azure 上で構築することが多かったのですが、そのほとんどの場合は App Service と Azure SQL Database を使っていました。
初期のころから App Service には Free プランが提供されており開発用途などで利用することがで出来ていましたが、Azure SQL Database は一番低いプランでも料金が必要でした。(大昔の Mobile Apps などで作られるデータベースが無料だったような無料じゃなかったような気もしますが)

これが、先日のアップデートで SQL Database に(パブリックプレビューですが)無料枠が登場しました。

これがどうやら従来のサブスクリプション作成後の無料期間ではなくて、毎月一定の無料枠が提供されるというもののようです。
パブリックプレビューということで今後変わる可能性はありますが、どういった条件で使えるのか、自分たちでも利用できそうなのか気になっている方は多いのではないでしょうか。

本日は Azure 上でいくつかのリージョンで実際に有効化したり無効化したりと試してみたので紹介したいと思います。

パブリックプレビューの機能について紹介しています。今後変更や廃止される可能性があります。
実際の請求タイミングまでの確認を本記事では行っていません。

Azure SQL Database サーバーレスで無料枠を有効化出来る

手順としては、Azure SQL Database を新規作成する際に Basics タブにて次のように無料枠適用のバナーが表示されるので、「Apply offer (Preview)」を押すと無料枠適用状態で構成されます。

上記バナーに記載されているとおり、今回の無料枠はサーバーレスデータベースに対して 100,000 vCore 秒 と 32 GB のストレージが毎月無料で提供されるというものになっています。

Azure SQL Database (サーバーレス) の詳細は以下を確認してください。
オートスケーリングや一定時間非アクティブだった場合の停止機能など、需要が予測出来ないワークロードに適したコンピューティングタイプで、運用環境においてはウォームアップの挙動を気にする必要がありますが、開発用途などではコストを抑えやすく使いやすいです。
AWS でいうと Aurora Serverless V1 と同じ感覚で使用出来ます。

Azure SQL Database サーバーレスは主に vCPU の使用時間に応じた従量課金となっており、今回の無料オファーでまずそのうちの 100,000 vCPU/秒 が無料となります。
後はデータやバックアップ用のストレージも使用量に応じた従量課金となっており、そちらも無料枠の対象となっています。

バナー上で Apply offer (Preview) ボタンを押すと、次のように料金ウィンドウで無料枠が適用されているような表示になり、併せて コンピュートタイプが「General Purpose - Serverless」になっていることがわかります。

無料枠超過時の動作を設定出来る

バナー上で無料枠の有効化を選択した後はコンピュートタイプの構成画面でも ON/OFF が可能です。

また、以下では無料枠を使い切った際にサーバーを停止させるか、稼働させ続けて料金が発生するかを選択することが出来ます。
前者の場合は Enable auto-pause が 1 時間固定で必須となっており、vCore の最小数/最大数が変更出来ません。

後者の場合は任意で選択出来るようになります。

超過時に停止させない場合は料金が発生しますが、月が変わるとまた無料枠が適用される形になります。

なお、後ほど検証結果を紹介しますが、超過時稼働構成から超過時停止構成への変更は出来ませんのでご注意ください。逆の変更は可能です。

無料枠はサブスクリプションあたりひとつまで

なお Azure サブスクリプションひとつあたり、無料枠を適用出来る Azure SQL Database サービスはひとつまでです。
ひとつ以上無料枠が有効化されたサービスが存在している場合は次のように作成時にバナーが表示されません。

無料枠をまだ有効化していない別の Azure サブスクリプションのリソースグループ上で新規 SQL Database を作成しようとするとバナーが表示されました。

無料枠超過時に停止する設定だったものを停止しないように変更することは可能

先程少し触れましたが、無料枠を超えた場合にサーバーを停止するか、稼働させ続けてそれ以降発生する料金を許容するか選択することが出来ます。
先程の新規作成時に停止モードで構成したため、概要の Overage billing が Disable となっています。

この、停止構成から稼働構成への変更が可能ですので変更してみましょう。
上述の Overage billing リンクあるいは、Compute + storage メニューから設定変更が可能です。

変更後少し経過すると更新が反映され、Overage billing が Enabled に変更されました。

注意点なのですが、この稼働構成になった後に停止構成に変更することが現状出来ません。
次のように同じ手順で設定変更の操作自体は可能なのですが...

変更は反映されず、Overage billing が Enabled のままとなっています。

変更時のバナーの注意書きにも記載されていますが、この点は気をつけましょう。

無料枠の無効化も可能

先程は超過時のモードを変更しましたが、無料枠の適用を無効化することも出来ます。
同じように Compute + storage の構成画面から Free database offer (Preview) のトグルボタンを OFF にします。

変更が反映されると、概要画面で Overage billing が後述の Free monthly Core amount が表示されなくなります。

無料枠が有効化されていない既存インスタンスへの有効化は不可

また、無料枠を無効化した状態あるいは既存で元から無料枠が適用されていなかったサービスへの無料枠の有効化は出来ません。
次のように有効化するトグルボタンが表示されません。

新規構築時にのみ有効化が可能という点も覚えておきましょう。

無料枠の使用量はメトリクスで確認出来る

無料枠は上限があるのでどの程度使用したのか、どの程度残っているのかを把握したいところです。
無料枠を適用した場合追加のメトリクスで情報を確認することが出来ますので方法を紹介します。

ここからはメトリクス上で無料枠の使用量を確認した点について言及していますが、実際に利用料金が適用されなかったことまでは未確認です。

概要タブから Free monthly Core amount をクリックすると、メトリクス画面に遷移します。

Free monthly Core amount から遷移した場合は自動で Free amount remaining が選択されていると思います。
あるいは自分でメトリクス画面に遷移してメトリクスを選択しても良いです。

Free amount remaining では次のように無料枠 100,000 vCPU/時間の残数を確認することが出来ます。
無料枠のサーバーが稼働しはじめてから残数が減っていることが確認出来ます。

また Free amount consumed メトリクスでは残数ではなくどの程度使用したかを確認することが出来ます。
無料枠の超過などに備えて監視設定が必要な場合はこの 2 つをうまく活用することになりそうです。

注意点として、先程の手順のような形で無料枠を無効化すると、メトリクスが確認できなくなります。

メトリクス上は東日本リージョンでも無料枠使用量の計測がされている

本日時点の公式ドキュメントの表記ではこの無料枠の対象リージョンとしては以下の 3 つが記載されています。

  • East US
  • West Central US
  • UK South

ただし、いくつかのリージョンで試したところ同じ手順で無料枠の適用が可能で、かつ無料枠に関するメトリクスも記録されていました。
有効化操作が出来て無料枠メトリクスは使用出来ると実際には請求されるという可能性もあるので、このあたりはもう少し評価が必要だと思います。

公式ドキュメント上は本日時点では上記 3 つがサポート対象として記載されていた。という点だけ抑えておいてください。

メトリクス上はサーバーごとに無料枠が計測されている

無料枠を適用したサーバーを削除する、あるいは無料枠の適用を無効化することで、新しいサーバーに無料枠を設定することが可能です。
先程の手順で既存サーバーで無料枠の適用を無効化したあとに、同一サブスクリプション内で新しいサーバーを作成しようとすると次のように無料枠のオファーバナーが表示されました。

適用してみると先程と同様に無料枠が適用されているときの概要欄表示となりました。
また、ここで気がついたのですが無料枠の残数が 100,000 vCPU/秒と表示されています。先程すでに別のサーバーで使用したにも関わらずです。

無効化したサーバでは無料枠の残が 97,000 vCPU/秒まで使用したのを確認していたので、そこから開始されるのかと思ったのですがそうではないようです。

さいごに

本日は Azure SQL Database Serverless 向けの無料枠を使ってみました。

繰り返しになりますが、この記事では実際の料金請求部分までは未確認ですのでご注意ください。

なお、公式ドキュメントの FAQ 上では次のようにも記載されています。

Is the Azure SQL Database free offer a production quality database?
While the free offer database is built on the same General Purpose, production-quality infrastructure, the free amount doesn't come with an SLA and is recommended primarily for development and proof-of-concept scenarios. Since there are no charges, there are no credits for downtime.

App Service の Free とは異なり、プロダクション向けと同様のインフラ環境に構築されていますが、無料枠には SLA が設定されていないので開発環境や PoC での利用が推奨されているとのことです。

とはいえ開発用途で今まで SQL Database の少しのコストが発生するケースが多かったと思いますので、この無料枠が正式にリリースされると Azure 上での App Service + SQL Database の開発をしやすくなりそうですね。
また、SLA を気にしなければ個人運用するサービスなどにも利用しやすくなりそうです。