しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure App Service の Premium V3 に新しいインスタンスサイズが追加されたので試した

先日 Azure App Service の Premium V3 に新しいインスタンスサイズが追加されたことが発表されました。Premium V3 は Premium V2 よりも大きいインスタンスサイズ設定となっていましたが、サイズが拡充されたことでコストパフォーマンスと使い勝手が向上しました。

特に P0v3 のリリースによって Premium V2 を使う必要性が消滅したように感じています。新しく作成する際には必ず Premium V3 を選択しておけばまず失敗しません。

さて、今回 Premium V3 の拡充と Isolated V2 についてブログで発表されましたが、Isolated V2 はそこそこ前にリリースされていたので今回は Premium V3 の追加サイズについてのみ書きます。

今回追加された Premium V3 のサイズは以下の通りです。Premium V3 は 2 vCore から開始されていましたが、P0v3 の追加で 1 vCore から始めることが出来るようになりました。それ以外はメモリに最適化されたサイズになりますが、Premium V3 には P4v3 / P5v3 は存在していないので 16 vCores 以上のサイズが追加されたとも考えることが出来ます。

  • P0v3
    • 1 vCore / 4GB RAM
  • P1mv3
    • 2 vCores / 16GB RAM
  • P2mv3
    • 4 vCores / 32GB RAM
  • P3mv3
    • 8 vCores / 64GB RAM
  • P4mv3
    • 16 vCores / 128GB RAM
  • P5mv3
    • 32 vCores / 256GB RAM

当然ながら上位のサイズは高いのですが、P0v3 がリージョンによっては P1v2 よりも安くなるケースがあるみたいなので、P1v2 を使っている場合にも価格を確認して移行を検討してもよいと考えています。

Premium V3 を選ぶと必ず VMSS ベースのスタンプに割り当てられるという事情もあるので、本番向けの App Service で利用する際には Premium V3 が必須なことには変わりありませんし、今回のアップデートでその傾向は強化されたといえます。

P0v3 / P*mv3 な App Service Plan を作成する方法

Premium V3 が公開された時と同様に、現時点では特定のリージョンのみで利用可能になっているため、作成する前に Azure CLI を使って利用可能なリージョンを調べるのが良いです。

az appservice list-locations --sku P0v3

例によって北米とヨーロッパに優先してデプロイされていますが、近いうちに東日本リージョンでも使えるようになると思います。西日本は未だに Premium V3 自体が使えないため、先日発表されたリソース拡充が完了するまで待つ必要がありそうです。

対応しているリージョンが分かってしまえば、後はいつも通り Azure Portal からリージョンを選択すれば新しいインスタンスサイズが選べるようになります。

新しいインスタンスサイズの ACU に注釈が付いていますが、その理由は後述することにして先に進みます。

ちなみに現時点では既存の Premium V3 な App Service Plan からのスケールアップは出来ないようです。この理由も後述しますが、暫くは Premium V3 を使う時のように作成時に P0v3 や P*mv3 を指定して作成してから、必要なサイズにスケーリングする必要があります。

最初に P0v3 や P*mv3 を指定して作成してしまえば、全てのサイズにスケーリングが可能になります。

P0v3 / P*mv3 は AMD EPYC ベースの VM が利用されている

今回追加された新しいインスタンスサイズを選ぶと、これまでの Premium V3 とは異なり AMD EPYC 7763 ベースの VM が使われていることに気が付きました。App Service に入っている coreinfo を使って CPU の情報を取得すると一目瞭然です。

AMD EPYC 7763 が使われている VM サイズは Dasv5 となるので、これまでの Premium V3 で使われていた Dv4 から 1 世代新しくなっています。ちなみに Dv4 では Intel Xeon の各種世代が使われています。

Premium V3 で使われている CPU の種類と VM サイズを簡単にまとめると以下の通りです。公式ドキュメントで公開されている ACU や性能テストの結果を確認すると、Dasv5 の方が Dv4 よりも性能が良いので Minimum 195 ACU に注釈が付いているようです。

  • P1v3 / P2v3 / P3v3
    • Intel Xeon ベースの VM (Dv4)
  • P0v3 / P*mv3
    • AMD EPYC ベースの VM (Dasv5)

面白いことに P0v3 や P*mv3 が使える App Service Plan を P1v3 など既存のサイズに変更すると、Intel Xeon ベースの CPU に変わるので Scale unit に Intel と AMD が共存しているようです。従って既存のサイズの場合は ACU も変化しません。

このように全く新しい VM サイズが使われているため、Premium V3 と VMSS Worker が導入された時のように既存の App Service Plan は P0v3 や P*mv3 に変更することが出来ません。

Premium V3 や VMSS Worker の時には、稀に直近で作った App Service Plan が P0v3 や P*mv3 入りの Scale unit だった場合に、そのままシームレスに変更することが出来ましたが、今回はかなり望みは薄いでしょう。

将来的に Scale unit のアップデートが行われて、既存の App Service Plan でも P0v3 や P*mv3 が使えるようになる可能性はありますが、使いたい場合はリソースグループから新しく作るのが手っ取り早いです。

P0v3 は 1 vCore / 4GB RAM と言いつつ実態は異なる?

今回のサイズ追加では P0v3 が一番メリットが大きいと思うので優先的に試してみましたが、デプロイして調べると何故か 2 vCores / 8GB RAM として認識されていました。

これが現時点での不具合なのか、それとも内部的にスロットリングがかかっていて 1 vCore / 4GB RAM 以上は使えないようになっているのかは分かりませんが、P0v3 は P1v3 の半額までにはなっていないので、仕様の可能性もありそうです。

Azure Portal の対応状況は途中なので注意

今回の新しい追加オプションは Premium V3 から SKU 名が変更されている関係上、Azure Portal では Premium V3 で使えるはずの機能がグレーアウトしているケースが多くみられます。

例えば Regional VNET Integration 周りはグレーアウトしてしまい、Azure Portal 上からは設定出来ません。

これまでの傾向から、暫くすると Azure Portal のアップデートが行われて正常に扱えるようになりますが、それまでの間は Azure CLI や Bicep / Terraform といった ARM を直接利用するツールを使う必要があります。