ある企業がAzure App Service(Standard S2プラン)でWebアプリケーションを本番運用している。新機能のリリース時に本番トラフィックへの影響を最小限に抑えながら段階的にリリースしたい。まず10%のトラフィックで新バージョンをテストし、問題がなければ全トラフィックを切り替え、問題があれば即座に旧バージョンに戻したい。この要件を最小限の運用負荷で実現する方法はどれか。
- A. Azure Traffic Managerの重み付きルーティングで2つのApp Serviceインスタンスにトラフィックを10:90で分散し、切り替え時に重みを100:0にする
- B. デプロイスロット(Deployment Slots)を使い、ステージングスロットに新バージョンをデプロイしてトラフィックルーティングで10%に設定し、問題なければスワップする
- C. Azure Container Appsのリビジョン管理を使ってトラフィック分割を設定する
- D. Blue-Green デプロイのために2つの別々のApp Serviceプランを作成し、Azure Front Doorでルーティングする
解答と解説を見る
正解: B
App Serviceのデプロイスロット機能はStandard以上のプランで利用でき、同一App Service内に複数のデプロイ環境(スロット)を持てる。ステージングスロットに新バージョンをデプロイした後、Azure ポータルからトラフィックのパーセンテージ(Testing in Production機能)を設定して一部トラフィック(10%)を新バージョンに流すことができる。問題なければスワップ操作1つで本番スロットと入れ替えられ、スワップはほぼダウンタイムゼロで完了する。問題があれば再度スワップするだけで即座にロールバックできる。選択肢Aはトラフィック分割は可能だがApp Serviceインスタンスを2つ管理する運用負荷が高く、スロットより複雑。選択肢Dは2つの独立したApp Serviceプランが必要でコストと運用負荷が最も高い。選択肢CはApp Serviceではなくコンテナ環境の機能であり、用途が異なる。
📚 関連サービスの解説: Azure App Service