TL

3層ウェブアプリケーション

プレゼン層・アプリ層・データ層を分離し、複数の可用性ゾーン+スケールセット+ゾーン冗長 DB で可用性を確保する、Azure における王道の Web アプリ構成。

中級信頼性セキュリティパフォーマンス効率

このパターンは?

最も基本的で頻出の「3層アーキテクチャ」を Azure で実装した構成です。役割ごとに層を分け、各層を複数の可用性ゾーンに冗長化します。Azure 認定(AZ-104 / AZ-305)でも実務でも王道です。

  • プレゼン層: 静的配信とグローバルなロードバランシング
  • アプリ層: ビジネスロジック(自動スケール)
  • データ層: 永続データ(ゾーン冗長 DB)

構成

[ユーザー]
   │ HTTPS
   ▼
Azure DNS ──► Front Door (CDN + WAF) ──► Blob Storage (静的アセット/画像)
   │
   ▼
Application Gateway (L7 ロードバランサ・WAF・複数ゾーン)
   │
   ▼
アプリ層: VMSS or Container Apps  (自動スケール・複数ゾーン・プライベートサブネット)
   │
   ▼
データ層: Azure SQL Database  (ゾーン冗長・プライベートエンドポイント・TDE 暗号化)

VNet(仮想ネットワーク)の中で、パブリックに面するのは Front Door / Application Gateway だけにし、アプリ層とデータ層はプライベートサブネットへ閉じ込めるのが基本形です。

各層の役割

  • Azure DNS: ドメイン解決。apex(ゾーン頂点)は Alias レコードで Front Door へ向ける。Traffic Manager と組み合わせれば DNS レベルの DR も可能
  • Front Door + Blob Storage: 静的アセットを Microsoft のグローバルエッジ(POP)からキャッシュ配信し、オリジン負荷を軽減。WAF・SSL オフロードもここで担う
  • Application Gateway: リージョン内で複数ゾーンのアプリへ L7 分散。ヘルスプローブで異常インスタンスを除外。L4 で十分なら Load Balancer も選択肢
  • Virtual Machines / VMSS または Container Apps: アプリ本体。VMSS / Container Apps の自動スケールで負荷に追従
  • Azure SQL Database: フルマネージドな SQL。ゾーン冗長構成で自動フェイルオーバー、読み取りは**読み取りレプリカ(読み取りスケールアウト)**へ逃がす

プレゼン層 ─ エッジとロードバランサの使い分け

「Front Door」と「Application Gateway」はどちらも L7 ですが、適用範囲が異なります。グローバル配信・キャッシュ・複数リージョンのフェイルオーバーは Front Door、単一リージョン内のゾーン分散は Application Gateway、と役割を分けて両方を重ねるのが定番です。

観点Front DoorApplication Gateway
スコープグローバル(エニーキャスト)リージョン内
主な役割CDN・グローバル LB・SSL オフロードL7 LB・パスベースルーティング
キャッシュあり(静的配信に有効)なし
WAF対応(エッジで遮断)対応(リージョンで遮断)
典型用途最前段・複数リージョンの束ねアプリ層への振り分け
WAF はなるべく前段で

Front Door の WAF を有効にすると、不正リクエストをユーザーに近いエッジで遮断でき、オリジン(アプリ層)まで到達させずに済みます。Application Gateway の WAF と多層で重ねると堅牢です。

アプリ層 ─ ステートレスに保つ

アプリ層はステートレスに設計し、台数を自由に増減できるようにします。Azure では VM ベースなら VMSS(仮想マシンスケールセット)、コンテナなら Container Apps(サーバーレス)や AKS が選択肢です。

ステートレス+層の分離

セッションや一時状態は VM 内に持たず、Cosmos DB や Azure Cache for Redis へ外出しします。そうすればスケールアウト時にどのインスタンスへ振られても整合し、自動スケールが正しく効きます。

  • サブネットを用途で分離(プレゼン / アプリ / データ)し、**NSG(ネットワークセキュリティグループ)**で層間通信を最小化
  • アプリ層はプライベートサブネットに置き、直接インターネットへ公開しない
  • 各層のサブネットを2つ以上の可用性ゾーンにまたがって配置(ゾーン冗長)

データ層 ─ 可用性と分離

  • Azure SQL Databaseゾーン冗長(Business Critical / Premium 等)で構成し、ゾーン障害時も自動フェイルオーバー
  • DB はプライベートエンドポイント経由でのみアクセスし、パブリックネットワークアクセスは無効化
  • 接続文字列やパスワードは Key Vault に保管し、アプリはマネージド IDで取得(資格情報をコードに埋め込まない)
読み取りと書き込みを分ける

参照系トラフィックが多い場合は、読み取りスケールアウトのレプリカへ読み取り専用接続(ApplicationIntent=ReadOnly)を向け、プライマリの負荷を下げます。地理冗長が必要なら自動フェイルオーバー グループで別リージョンへ。

設計の勘所

  • ネットワークは VNet + サブネット分割。パブリック(エッジ/LB)/ プライベート(アプリ・DB)で明確に分離
  • 認証・認可は Microsoft Entra ID に集約。アプリ→DB / アプリ→Key Vault はマネージド ID で接続
  • インフラは Bicep / ARM / Terraform でコード化し、Immutable に入れ替えられるようにする
  • 各層を最低2ゾーンへ。単一ゾーン配置は避ける

Well-Architected の観点

  • 信頼性(Reliability): 複数ゾーン・VMSS/Container Apps の自動スケール・ゾーン冗長 DB で単一障害点を排除
  • セキュリティ(Security): 層の分離・最小公開・Entra ID + RBAC・マネージド ID・TDE / Key Vault による暗号化
  • パフォーマンス効率(Performance): Front Door のエッジキャッシュ+水平スケール+読み取りレプリカ

よくある落とし穴

アンチパターン
  • 単一ゾーン構成(ゾーン障害でサービス全停止)
  • DB をパブリックネットワークアクセス有効のまま放置する
  • アプリ層がローカルディスクにセッション/アップロードファイルを保持し、スケールアウトできない
  • 接続文字列・キーをアプリ設定やコードに直書きする(→ マネージド ID + Key Vault へ)

監視・運用

監視は Azure Monitor に集約します。メトリクスのアラートから自動スケールをトリガーし、各層のログ(アプリ / Application Gateway / SQL)を Log Analytics ワークスペースへ集約して横断分析しましょう。アプリのリクエストトレースは Application Insights で可視化すると、層をまたいだボトルネックの特定が容易になります。

AWS との対応

主要な構成要素を AWS の 3 層構成と対比すると、置き換えが把握しやすくなります。

層 / 役割AzureAWS
DNSAzure DNSRoute 53
CDN / エッジ LB / WAFFront DoorCloudFront
静的アセットBlob StorageS3
L7 ロードバランサApplication GatewayALB
アプリ実行基盤VMSS / Container AppsEC2 / ECS・Fargate
リレーショナル DBAzure SQL DatabaseRDS / Aurora
セッション/キャッシュCosmos DB / Cache for RedisDynamoDB / ElastiCache
権限付与マネージド ID + Entra IDIAM ロール
監視Azure MonitorCloudWatch

Azure Pattern

3層ウェブアプリケーションを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

reliability

比較で見る軸

クラウド: Azure / 難易度: intermediate / 関連サービス: 12件

導入後に効く点

プレゼン層・アプリ層・データ層を分離し、複数の可用性ゾーン+スケールセット+ゾーン冗長 DB で可用性を確保する、Azure における王道の Web アプリ構成。

先に潰すリスク

パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。

数字・仕様の読み方
クラウド
Azure
難易度
intermediate
関連サービス
12件
設計柱
reliability / security / performance

判断チェックリスト

  • 自社の用途が「reliability / security」に近いか確認する。
  • 強みである「プレゼン層・アプリ層・データ層を分離し、複数の可用性ゾーン+スケールセット+ゾーン冗長 DB で可用性を確保する、Azure における王道の Web アプリ構成。」が本当に評価軸になるか確認する。
  • 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

reliabilitysecurityperformanceAzure DNS / Traffic ManagerAzure Front Door / CDNAzure Load Balancer / Application GatewayAzure Virtual NetworkAzure Virtual Machines