1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudからみる三層アーキテクチャ

1
Last updated at Posted at 2025-09-11

三層アーキテクチャの基本とクラウド(AWS/GCP/Azure横断)

対象読者
Web/業務アプリの設計・運用に関わる方、これから三層アーキテクチャをクラウドで実装したい方
TL;DR
三層(プレゼンテーション/アプリケーション/データ)の責務を分け、各層に セキュリティ・可用性・性能・運用・コスト を最初から織り込む。主要クラウドの Well-Architected を“設計のものさし”として活用するのが近道です。
(AWS ドキュメント)


1. 三層アーキテクチャとは

定義:層ごとに役割を分けて責任を明確化する設計手法。Webアプリで広く使われる多層アーキテクチャの一種です。
LAMP などの典型では、フロント(表示・入口)/アプリ(業務ロジック)/データ(永続化)に分割します。

三層概念.png

lamp.png


2. 各層の役割と責任

プレゼンテーション層

一言:ユーザーとの窓口—表示と入力の受け渡し

  • TLS終端/WAF/レート制限 によるL7防御、静的キャッシュ配信L7ルーティング(パス/ホスト)。
  • 攻撃や不要な負荷を吸収して下位層を保護。ビジネスロジックや秘匿情報は最小に。

アプリケーション層

一言:業務規則の司令塔—何をするかを決め、各層を調整

  • 認証・認可、入力検証、ドメインルール適用、外部サービス連携。必要に応じてデータ層を操作してレスポンス生成。
  • スケール容易性のため ステートレス を基本にし、セッションは外部ストアやトークンで管理。
  • 冪等性・タイムアウト・リトライ・サーキットブレーカ を実装して可用性と耐障害性を高める(後述チェックリスト参照)。(AWS ドキュメント)

データ層

一言:データの保存・検索を最適に

  • 業務データを永続化し、要件に応じた整合性で読み書き。
  • RDB(ACID/トランザクション)と NoSQL(スループット/可用性)を用途で使い分け、インデックス/パーティションで性能確保。
  • バックアップ+PITR、レプリケーション、暗号化・アクセス制御で耐久性・セキュリティを担保。
  • 例:Cloud Spanner は“水平スケール可能なリレーショナルDB”として設計されています。(Google Cloud)

3. クラウドにおける構成例

3.1 一般的な三層(AWS)

AWS_three.png

  • ブラウザ → Public なLB → Private のコンピューティング/DB。
  • AZ分散+Auto Scaling で冗長化。
  • DB は プライマリ(RW)+リードレプリカ(R) で読み取り分散。

3.2 サーバーレス構成(Google Cloud)

Googleserverless.png

  • CDN でレイテンシ最小化、インフラ管理なしで 自動スケール(サービス側がスケーリング動作を管理)。(Google Cloud)
  • オブジェクトストレージの静的ホスティングでUI提供。

3.3 非同期・大量リクエスト(Azure)

Azure_three.png

  • Kubernetes によるクラスタ/サービス管理。
  • 共有キャッシュは外部インメモリへ。
  • 大量 insertNoSQL でスパイク吸収(要件によりRDBのバルク/分割書き込みも選択肢)。

4. 関連するクラウドサービス(抜粋・横断比較)

4.1 プレゼンテーション層(主要なサービス)

  • コンピューティング

    • AWS: EC2, ECS(Fargate)
    • GCP: GCE, GKE, App Engine
    • Azure: Azure VM, ACI, AKS, ACA
  • ストレージ(静的ホスティング)

    • AWS: S3 / GCP: Cloud Storage / Azure: Azure Blob Storage
  • ロードバランサ

    • AWS: ALB(L7)/NLB(L4)/GWLB(L3, 仮想アプライアンス連携)/Classic(レガシ)。(AWS ドキュメント)

    • GCP(Cloud Load Balancing):

      • Application Load Balancer (L7, HTTP/HTTPS)
      • Network Load Balancer (L4, TCP/UDP)プロキシパススルー に大別(外部/内部、グローバル/リージョンの選択肢あり)。選定は L7 か L4、外部/内部、グローバル性、プロキシ/パススルーで判断。(Google Cloud)
    • Azure: Azure Load Balancer(L4) / Application Gateway(L7)。(Microsoft Learn)

4.2 アプリケーション層(主要なサービス)

  • コンピューティング(IaaS/CaaS/PaaS): EC2/ECS、GCE/GKE/GAE、Azure VM/AKS/ACA など
  • Function系(FaaS)AWS LambdaCloud Functions / Cloud Run functionsAzure Functions(イベント駆動で関数単位にスケール)。(AWS ドキュメント)
  • サーバーレス・コンテナCloud Run(“コンテナをサーバーレスで実行・自動スケール”)。FaaS そのものではない点に注意。(Google Cloud)

4.3 データ層(主要なサービス)

  • RDB

    • AWS: RDS, Aurora(MySQL/PostgreSQL互換のマネージドRDB) (Amazon Web Services, Inc.)
    • GCP: Cloud SQL / Spanner / AlloyDB(PostgreSQL互換の高性能マネージドDB) (Google Cloud)
    • Azure: Azure SQL Database
  • NoSQL

    • AWS: DynamoDB
    • GCP: Bigtable / Firestore
    • Azure: Azure Cosmos DB(分散NoSQL/ベクタDB) (Microsoft Learn)

5. Well-Architected Framework の観点(AWS / GCP / Azure 横断)

主要クラウドは“良い設計”を体系化したフレームワークを提供しています。設計レビューの物差しとして使うのが無難!

  • AWS6本柱(運用、セキュリティ、信頼性、性能効率、コスト最適化、サステナビリティ)。設計原則とレビュー質問が充実。(AWS ドキュメント)
  • Google Cloud5本柱(運用、セキュリティ、信頼性、コスト最適化、性能最適化)+ Perspectives(AI/ML 等の横断領域)。(Google Cloud)
  • Azure5本柱(信頼性、セキュリティ、コスト最適化、運用上の優秀性、性能効率)。成熟度モデルで段階的改善。(Microsoft Learn)

層別に織り込むべきポイント(要約)

  • プレゼンテーション層

    • セキュリティ: TLS終端/WAF/レート制限/Bot対策
    • 性能: CDNキャッシュ、HTTP/2/3、圧縮
    • ルーティング: L7/L4・外部/内部・グローバル性・プロキシ/パススルーでLBを選定(GCP例)。(Google Cloud)
  • アプリケーション層

    • 信頼性: タイムアウト+指数バックオフ付リトライ+サーキットブレーカ(非機能要件として明記)。(AWS ドキュメント)
    • 冪等性: 同一操作の再試行でも状態が変わらない設計(Idempotency-Key などのトークン戦略が有効)。(Stripe Docs)
    • 運用: ステートレス化、ヘルスチェック/オートヒール、カナリア/ブルーグリーン
  • データ層

    • 可用性/DR: マルチAZ/リージョン、バックアップ+PITR、定期リストア演習
    • 性能: インデックス設計、読み取り分離(リードレプリカ)、シャーディング/パーティション
    • セキュリティ/コスト: 暗号化と鍵管理、ストレージ階層化、アーカイブ

6. よくあるアンチパターン

  • LB直下に重いビジネスロジック(プレゼンテーション層の肥大化)
  • 隠れステート(Pod内セッションやスティッキー依存)
  • 非冪等 API(リトライで二重書き込み/二重課金)
  • 無計画なスキーマ/インデックス(後からの修正が高コスト)
  • バックアップはあるが復旧手順がない(RTO/RPO 未検証)

7. まとめ

  • 三層アーキテクチャは 責務の分離 によって、変更容易性・安全性・スケーラビリティを底上げします。
  • クラウドでは各層を マネージド/サーバーレス で置き換え、WAF/TLS/キャッシュ/L7ルーティング冪等性+リトライ/バックオフ を“最初から”設計に入れておくのが鉄則。(AWS ドキュメント)
  • Well-Architected を定期レビューの物差しにして、ログ/メトリクス/トレース の三点観測で継続改善する。
  • データ層は要件駆動で RDB/NoSQL を選び、バックアップ+復旧演習 を運用の一部に。必要に応じて Spanner/Aurora/AlloyDB のような選択肢も検討。(Google Cloud)

8. 参考ドキュメント

  • AWS Well-Architected(6本柱:サステナビリティ含む) (AWS ドキュメント)
  • GCP Well-Architected(5本柱+Perspectives) (Google Cloud)
  • Azure Well-Architected(5本柱・成熟度モデル) (Microsoft Learn)
  • GCP Cloud Load Balancing の選び方(Application / Network、プロキシ/パススルー) (Google Cloud)
  • Azure の負荷分散オプション(LB, AppGW, Front Door, Traffic Manager) (Microsoft Learn)
  • Cloud Run(サーバーレス・コンテナ)、Cloud Functions / Cloud Run functions(FaaS)(Google Cloud)、AWS LambdaAzure Functions
  • Idempotency(設計と再試行の安全化) (AWS ドキュメント)
  • RDB/NoSQL サービスAurora / Cloud SQL / AlloyDB / Cosmos DB(概要) (Amazon Web Services, Inc.)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?