三層アーキテクチャの基本とクラウド(AWS/GCP/Azure横断)
対象読者
Web/業務アプリの設計・運用に関わる方、これから三層アーキテクチャをクラウドで実装したい方
TL;DR
三層(プレゼンテーション/アプリケーション/データ)の責務を分け、各層に セキュリティ・可用性・性能・運用・コスト を最初から織り込む。主要クラウドの Well-Architected を“設計のものさし”として活用するのが近道です。
(AWS ドキュメント)
1. 三層アーキテクチャとは
定義:層ごとに役割を分けて責任を明確化する設計手法。Webアプリで広く使われる多層アーキテクチャの一種です。
LAMP などの典型では、フロント(表示・入口)/アプリ(業務ロジック)/データ(永続化)に分割します。
2. 各層の役割と責任
プレゼンテーション層
一言:ユーザーとの窓口—表示と入力の受け渡し
- TLS終端/WAF/レート制限 によるL7防御、静的キャッシュ配信、L7ルーティング(パス/ホスト)。
- 攻撃や不要な負荷を吸収して下位層を保護。ビジネスロジックや秘匿情報は最小に。
アプリケーション層
一言:業務規則の司令塔—何をするかを決め、各層を調整
- 認証・認可、入力検証、ドメインルール適用、外部サービス連携。必要に応じてデータ層を操作してレスポンス生成。
- スケール容易性のため ステートレス を基本にし、セッションは外部ストアやトークンで管理。
- 冪等性・タイムアウト・リトライ・サーキットブレーカ を実装して可用性と耐障害性を高める(後述チェックリスト参照)。(AWS ドキュメント)
データ層
一言:データの保存・検索を最適に
- 業務データを永続化し、要件に応じた整合性で読み書き。
- RDB(ACID/トランザクション)と NoSQL(スループット/可用性)を用途で使い分け、インデックス/パーティションで性能確保。
- バックアップ+PITR、レプリケーション、暗号化・アクセス制御で耐久性・セキュリティを担保。
- 例:Cloud Spanner は“水平スケール可能なリレーショナルDB”として設計されています。(Google Cloud)
3. クラウドにおける構成例
3.1 一般的な三層(AWS)
- ブラウザ → Public なLB → Private のコンピューティング/DB。
- AZ分散+Auto Scaling で冗長化。
- DB は プライマリ(RW)+リードレプリカ(R) で読み取り分散。
3.2 サーバーレス構成(Google Cloud)
- CDN でレイテンシ最小化、インフラ管理なしで 自動スケール(サービス側がスケーリング動作を管理)。(Google Cloud)
- オブジェクトストレージの静的ホスティングでUI提供。
3.3 非同期・大量リクエスト(Azure)
- Kubernetes によるクラスタ/サービス管理。
- 共有キャッシュは外部インメモリへ。
- 大量 insert は NoSQL でスパイク吸収(要件により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 Lambda、Cloud Functions / Cloud Run functions、Azure 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 横断)
主要クラウドは“良い設計”を体系化したフレームワークを提供しています。設計レビューの物差しとして使うのが無難!
- AWS:6本柱(運用、セキュリティ、信頼性、性能効率、コスト最適化、サステナビリティ)。設計原則とレビュー質問が充実。(AWS ドキュメント)
- Google Cloud:5本柱(運用、セキュリティ、信頼性、コスト最適化、性能最適化)+ Perspectives(AI/ML 等の横断領域)。(Google Cloud)
- Azure:5本柱(信頼性、セキュリティ、コスト最適化、運用上の優秀性、性能効率)。成熟度モデルで段階的改善。(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 Lambda、Azure Functions
- Idempotency(設計と再試行の安全化) (AWS ドキュメント)
- RDB/NoSQL サービス:Aurora / Cloud SQL / AlloyDB / Cosmos DB(概要) (Amazon Web Services, Inc.)




