3層ウェブアプリケーション
プレゼン層・アプリ層・データ層を分離し、複数の可用性ドメイン(AD)/フォルトドメイン(FD)+オートスケール+HA データベースで可用性を確保する OCI の王道構成。
このパターンは?
最も基本的で頻出の「3層アーキテクチャ」を OCI で組む構成です。役割ごとに層を分け、各層を**複数の可用性ドメイン(AD)/フォルトドメイン(FD)**に冗長化します。
- プレゼン層: 静的配信とロードバランシング
- アプリ層: ビジネスロジック(オートスケール)
- データ層: 永続データ(高可用 DB)
AWS の AZ にあたるのが OCI の可用性ドメイン(AD)です。ただし AD が3つあるリージョンと1つだけのリージョンがあります。AD が1つのリージョンでは、AD 内をさらに分離するフォルトドメイン(FD)(既定で3つ)に分散して可用性を確保します。
構成
[ユーザー]
│ HTTPS
▼
OCI DNS (権威 DNS / Traffic Management) ──► WAF エッジポリシー (CDN) ──► Object Storage (静的アセット/画像)
│
▼
Load Balancer (L7・複数AD/FD・パブリックサブネット)
│
▼
アプリ層: Compute(インスタンスプール) or OKE (オートスケール・複数AD/FD・プライベートサブネット)
│
▼
データ層: MySQL HeatWave / Base Database (HA・プライベートサブネット・暗号化)
各層の役割
- OCI DNS: ドメイン解決。**Traffic Management(ステアリングポリシー)**でヘルスチェック連動のフェイルオーバーや、リージョン誘導も
- WAF エッジポリシー + Object Storage: 静的アセットをエッジでキャッシュ配信し、オリジン負荷と egress を削減。**Pre-Authenticated Request(PAR)**で限定公開も可能
- Load Balancer: リクエストを複数 AD/FD のアプリへ分散。ヘルスチェックで異常バックエンドを除外し、TLS 終端と WAF を前段に寄せる
- Compute(インスタンスプール)/ OKE: アプリ本体。オートスケール(メトリクス/スケジュール)で負荷追従
- MySQL HeatWave / Base Database: HA(複数 AD/FD への自動フェイルオーバー)、読み取りはリードレプリカや HeatWave クラスタでスケール
ネットワーク設計(VCN)
VCN でサブネットを層ごとに分離するのが基本です。
| サブネット | 種別 | 配置するもの | 外向き通信 |
|---|---|---|---|
| パブリック | Public(IGW あり) | Load Balancer | Internet Gateway |
| アプリ | Private | Compute / OKE ノード | NAT Gateway(外向きのみ) |
| データ | Private | MySQL / Base Database | Service Gateway(OCI サービスのみ) |
- リージョナルサブネットを使えば、1 サブネットが複数 AD にまたがれて冗長化が楽
- プライベートサブネットからの外向き更新は NAT ゲートウェイ、Object Storage 等への到達はサービスゲートウェイでインターネットを経由させない
- ファイアウォールはセキュリティリストより**NSG(ネットワークセキュリティグループ)**を層ごとに付けると管理しやすい
設計の勘所
アプリ層はステートレスにし、セッションやファイルは外部へ逃がします。OCI ならキャッシュ用途は OCI Cache(Redis 互換)、共有ファイルは File Storage や Object Storage へ。そうすればインスタンスを自由に増減でき、オートスケールが効きます。
- サブネットは**パブリック(LB)/ プライベート(アプリ・DB)**で明確に分離する
- DB はプライベートサブネットに置き、パブリック IP を付けない
- 各層を**2つ以上の AD(AD が1つなら 2つ以上の FD)**に分散して配置する
- アプリは**カスタムイメージ+インフラ自動化(Terraform / OCI Resource Manager)**で標準化し、Immutable に入れ替える
Well-Architected の観点
- 信頼性(Reliability): 複数 AD/FD・オートスケール・HA データベースで単一障害点を排除。DNS の Traffic Management でリージョン/エンドポイントのフェイルオーバー
- セキュリティ(Security): 層の分離・最小公開・IAM のインスタンスプリンシパルでキーレス化・Vault による鍵管理と保存時暗号化
- パフォーマンス効率(Performance): エッジキャッシュ+水平スケール+リードレプリカ/HeatWave で読み取りを高速化
DB パスワードや API キーをインスタンス内に置くのは NG です。インスタンスプリンシパルで OCI API を、Vault のシークレットで DB 接続情報を取得すれば、ハードコードと漏洩リスクを排除できます。
よくある落とし穴
- 単一 AD かつ単一 FD 構成(障害で全停止)
- DB をパブリックサブネットに置く/パブリック IP を付与する
- アプリ層がローカルにセッションやアップロードファイルを持ち、スケールできない
- セキュリティリストを VCN 全体に広く開け、層の分離が崩れる
監視は OCI Monitoring で各層のメトリクスを MQL で集計し、アラーム発火→Notifications(ONS) で通知、あるいはオートスケール連携につなげます。LB のヘルスチェックとアプリ/DB のメトリクスを併せて見るのが要点です。
OCI Pattern
3層ウェブアプリケーションを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
reliability
比較で見る軸
クラウド: OCI / 難易度: intermediate / 関連サービス: 12件
導入後に効く点
プレゼン層・アプリ層・データ層を分離し、複数の可用性ドメイン(AD)/フォルトドメイン(FD)+オートスケール+HA データベースで可用性を確保する OCI の王道構成。
先に潰すリスク
パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。
- クラウド
- OCI
- 難易度
- intermediate
- 関連サービス
- 12件
- 設計柱
- reliability / security / performance
判断チェックリスト
- 自社の用途が「reliability / security」に近いか確認する。
- 強みである「プレゼン層・アプリ層・データ層を分離し、複数の可用性ドメイン(AD)/フォルトドメイン(FD)+オートスケール+HA データベースで可用性を確保する OCI の王道構成。」が本当に評価軸になるか確認する。
- 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。