第 10 章 Azure のコンピューティングリソースをデプロイおよび管理する(20〜25%)
この章で学ぶこと
この章に出てくる用語
App Service プランは、アプリを動かすコンピューティングリソースの定義だ。OS、リージョン、インスタンス数、インスタンスサイズ、価格レベルを決める。アプリはそのプランの上に載る。

試験では
同じプランに載せたアプリは、すべて同じ VM インスタンスを共有する。1 つのアプリが CPU を食い潰せば、他のアプリも遅くなる。アプリ単位では分離されない。「特定のアプリだけ重い」という状況の対処は、そのアプリを別のプランに移すこと。
スケールの方向は 2 つある。スケールアップは価格レベルを上げて 1 インスタンスの性能や機能を増やすこと、スケールアウトはインスタンス数を増やすことだ。どちらもプラン単位で行う。
ここが最頻出。レベルは大きく 3 つに分かれる。

| 機能 | Free | Shared | Basic | Standard 以上 |
|---|---|---|---|---|
| カスタムドメイン | × | ○ | ○ | ○ |
| スケールアウト | × | × | ○ | ○ |
| 自動スケール | × | × | × | ○ |
| デプロイスロット | × | × | × | ○ |
| バックアップ | × | × | × | ○ |
試験では
自動スケール・デプロイスロット・バックアップはすべて Standard 以上。Basic では手動のスケールアウトはできるが、自動スケールはできない。「Basic で運用しているが…」と書かれていたら、この 3 つは選べない。
試験では
Free ではカスタムドメインが使えない(Shared 以上)。「独自ドメインを割り当てたいが追加費用を最小にしたい」なら Shared。
補足
「ネットワークごと分離したい」「専用の VNet 上で動かしたい」という要件なら IsolatedV2。課金は worker 単位になる。
本番とは別に用意する、独立したホスト名を持つ稼働環境のこと。ステージングスロットに新しい版をデプロイして検証し、問題なければ本番と入れ替える。

入れ替える操作をスワップと呼ぶ。スワップの前にインスタンスがウォームアップされるため、ダウンタイムがほぼ無い。問題が見つかったら、もう一度スワップすれば元の版に戻せる。
試験では
スワップで入れ替わるのはアプリの中身で、「スロット設定」は移動しない。接続文字列やアプリ設定を環境ごとに変えたい場合は、その設定をスロット設定としてマークしておく。そうすればスワップしてもスロットに固定される。「スワップしたらステージング用の DB に本番がつながった」の原因はこれ。
# スロットを作る(Standard 以上)
az webapp deployment slot create -g rg \
-n myapp --slot staging
# スワップする
az webapp deployment slot swap -g rg \
-n myapp --slot staging --target-slot production既定のホスト名は <アプリ名>.azurewebsites.net だ。独自ドメインを割り当てるには、DNS 側にレコードを登録して所有権を検証させる。
| 割り当てるもの | DNS に登録するレコード |
|---|---|
| 裸ドメイン(contoso.com) | A レコード + TXT レコード |
| サブドメイン(www.contoso.com) | CNAME レコード(または A + TXT) |
TLS 証明書は、App Service が無料で発行・更新するApp Service マネージド証明書が使える。ただし万能ではない。
試験では
App Service マネージド証明書は、ワイルドカードや一部の裸ドメインなど対応できないケースがある。その場合は App Service 証明書を購入するか、外部の証明書をアップロードする。
| バインドの方式 | 仕組み | 課金 |
|---|---|---|
| SNI SSL | 1 つの IP を共有して複数の証明書を扱う | 無料 |
| IP ベース SSL | 証明書ごとに専用 IP を割り当てる | 追加課金 |
試験では
SNI に対応していない古いクライアントをサポートする必要があるなら IP ベース SSL。それ以外は SNI SSL でよい。
アプリの構成・コンテンツ・接続されたデータベースをストレージアカウントに保存する機能。Standard 以上で使え、保存先のストレージアカウントは自分で指定する。
App Service のネットワーク設定は 3 つあり、送信か受信かで役割がきれいに分かれている。ここを取り違える設問が定番だ。

| 機能 | 向き | 何をするか |
|---|---|---|
| VNet 統合 | 送信 | アプリから VNet 内のリソースへ出ていけるようにする |
| プライベートエンドポイント | 受信 | アプリへの接続をプライベート IP に限定する |
| アクセス制限 | 受信 | 送信元の IP アドレスやサービスタグで許可・拒否する |
試験では
VNet 統合は送信専用。 「アプリへのアクセスを社内からだけに絞りたい」という要件をVNet 統合で満たすことはできない。それはプライベートエンドポイントかアクセス制限の仕事。逆に「アプリから仮想ネットワーク内のデータベースに接続したい」なら VNet 統合。
この章のまとめ