TL

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

プレゼン層・アプリ層・データ層を分離し、複数の可用性ドメイン(AD)/フォルトドメイン(FD)+オートスケール+HA データベースで可用性を確保する OCI の王道構成。

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

このパターンは?

最も基本的で頻出の「3層アーキテクチャ」を OCI で組む構成です。役割ごとに層を分け、各層を**複数の可用性ドメイン(AD)/フォルトドメイン(FD)**に冗長化します。

  • プレゼン層: 静的配信とロードバランシング
  • アプリ層: ビジネスロジック(オートスケール)
  • データ層: 永続データ(高可用 DB)
OCI の冗長化の単位

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 BalancerInternet Gateway
アプリPrivateCompute / OKE ノードNAT Gateway(外向きのみ)
データPrivateMySQL / Base DatabaseService Gateway(OCI サービスのみ)
  • リージョナルサブネットを使えば、1 サブネットが複数 AD にまたがれて冗長化が楽
  • プライベートサブネットからの外向き更新は NAT ゲートウェイ、Object Storage 等への到達はサービスゲートウェイでインターネットを経由させない
  • ファイアウォールはセキュリティリストより**NSG(ネットワークセキュリティグループ)**を層ごとに付けると管理しやすい

設計の勘所

ステートレス+層の分離

アプリ層はステートレスにし、セッションやファイルは外部へ逃がします。OCI ならキャッシュ用途は OCI Cache(Redis 互換)、共有ファイルは File StorageObject 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、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

reliabilitysecurityperformanceOCI DNSOCI CDNOCI Load BalancerVirtual Cloud Network (VCN)OCI Compute