読者です 読者をやめる 読者になる 読者になる

しばやん雑記

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

Azure Functions で使える Dynamic Service Plan について調べてみた

Azure Functions

Azure Functions が発表されて盛り上がってますが、使うよりもどんな風に動いているのかという点に興味があったので、新しく追加された Dynamic Service Plan について調べました。

f:id:shiba-yan:20160402143200p:plain

個人的には Classic という表記に不安しか覚えないですが、新しい仕組みの App Service Plan が予定されているのかもしれません。あまり気にしないことにしておきます。

Azure Functions 専用という点以外に、機能的には App Service Plan と変わらないようです。Azure Functions 自体も Kudu と Site Extension の組み合わせで実装されているので、大きな違いは課金体系ぐらいです。

課金体系が使った分だけに

Web Apps などの App Service は App Service Plan 単位で課金が発生し、使っていなくてもサイトが存在している限り課金対象となっていましたが、Dynamic Service Plan では Functions 用に用意されたプランで、メモリサイズと実行時間、そしてリクエスト数で金額が決まるようになっているみたいです。

具体的な金額はドキュメントに書いてないので、まだわかっていません。

SKU は Dynamic (Y1)

App Service Plan は F1 / B1 / S1 というように SKU が定められています。Dynamic Service Plan の場合は Y1 となるようです。動的に Azure がスケーリングを行うので、Capacity は 0 になっています。

f:id:shiba-yan:20160402133056p:plain

ARM Explorer でいろいろ見ると、裏側が透けて見えるようで面白いです。

f:id:shiba-yan:20160402133330p:plain

現状、利用できるリージョンが限定されているのは、stamp の数が関係しているのかもしれません。となると、日本で使えるようになるには、かなり時間がかかるような気もしてきます。

ストレージは Azure Files

サイト固有のコンテンツを格納するストレージはこれまで SMB でマウントされたファイルサーバが使われていましたが、Dynamic Service Plan では ASE と同様に Azure Files が使われるようです。

f:id:shiba-yan:20160402133004p:plain

App Settings 周りを見ていると、同じように設定を追加すれば Web Apps でも Azure Files をストレージとして使えるのではないかという気がしてきました。未確認ですが。

f:id:shiba-yan:20160402133145p:plain

仕組みからして、このあたりの設定は共通で動くような気がしています。ちょいちょいストレージのトラブルに悩まされることがあるので、機会があれば Azure Files の設定を試してみたいです。

インスタンスは Dv2 ベースか?

環境変数に表示されるプロセッサーファミリーが Intel の 4 コア CPU だったので、レジストリから正確な型番を取得してみたところ Haswell 世代の Xeon E5-2673 v3 が使われていました。

f:id:shiba-yan:20160402135603p:plain

これまでの App Service Plan では A シリーズが使われていたはずなので、歴代で最速の App Service Plan となりそうです。

Virtual Machine の一覧から調べてみると、この CPU を積んでいるのは Dv2 シリーズのようです。4 コアなので D3 v2 か D12 v2 の可能性がありますね。

Kudu から搭載メモリ量を調べるのは簡単ではないので、とりあえずこのくらいまでにしておきます。

追記

以下のように物理メモリ量だけを取得して表示するコンソールアプリを作ったので、Kudu から叩いて確認しました。結果としては 27GB のメモリが搭載されていました。

int main()
{
    MEMORYSTATUSEX status = { sizeof(MEMORYSTATUSEX) };
    GlobalMemoryStatusEx(&status);

    printf("Physical Memory: %lld GB\n", status.ullTotalPhys / (1024 * 1024 * 1024));

    return 0;
}

f:id:shiba-yan:20160403022138p:plain

ハードウェアの予約領域として、いくつか確保されているみたいなので、近い Virtual Machine インスタンスを探したところ、メモリ 28GB の D12 v2 が該当しそうです。

Function App では通常の App Service Plan よりも、高性能かつ大容量メモリのインスタンスを使うようにしているみたいです。紛れもなく App Service で最強のインスタンスとなってます。