レイヤー構成図
赤枠は同一 App Service で 2 インスタンス使用している時の例
各レイヤーに関連する項目
- スロット
- Apps
- Web Apps、Functions などのアプリ
- App Service (インスタンス毎)
- App Service (全インスタンス共通)
- 各スロット毎に用意された Azure ストレージ上の永続ストレージ (d:\home) (*4)
- SSL 証明書アップロード
- スタンプ
- 受信 IP (1 つ)、送信 IP (4 つ)
- App Service Environment はこのスタンプ毎占有する
(*1) Functions は今のところデプロイ スロットは正式サポートしていない。ここでは常に既定スロットが使用される想定。
(*2, 4) 同じ項目の注釈をスロットと App Service の両方に記載しているので分かりづらいが、永続ストレージはスロット毎に固有の領域が Azure ストレージ上に用意され、全 App Service インスタンスから共有される方式をとる。App Service とは別の Azure リソースを使用しているためここのレイヤー説明に記載するのは微妙だが、App Service が自動で作成して使用する仕様のため、考慮が必要な項目として記載した。
(*3) スタンプ上に配置される App Service インスタンスは、他のテナントの App Service インスタンスも含まれる事に注意。スタンプを共有するインスタンスは、IP も共有する。
その他考慮事項
- App Service インスタンスは、スケールアウト時も同一スタンプ上にインスタンスが作成される (= 同じ App Service プランのインスタンスであれば、使用する IP は同じ)
- App Service のプランを変更しない限り、基本的には最初に配置されたスタンプが使用され続ける (= IP は変わらない)。但し、Azure の大規模メンテナンス等が発生した場合、配置されるスタンプが変わる事があり、その場合は結果的に IP も変わる (= 基本的に固定されるが、固定は保証されていない)
- スケールアウトを考慮しない場合は、単純に一つの App Service インスタンスに複数スロット、複数 Web Apps を詰め込めるだけ詰め込んでも良いが、スケールアウトを考慮する場合、当該 App Service 状に積んでいる Web Apps、スロットがその状態のままスケールアウトする事になるので、注意
- (参考情報) Functions の従量課金プランは App Service プランとは異なり、関数実行時に都度デプロイされるが、デプロイ先の VM インスタンスが常に同一スタンプ上のインスタンスとは限らない。前回と異なるスタンプ上のインスタンスにデプロイされた場合、IP も変わってしまう (= IP は固定できない)。
参考ドキュメント