Web 3層構成
Web 3層構成とは
Web 3層構成(3-Tier Architecture)は、システムを Web サーバー、AP サーバー(アプリケーションサーバー)、DB サーバー(データベースサーバー) の 3 つの層に分離して構築するアーキテクチャである。SIer の業務システムにおいて最も一般的なサーバー構成であり、エンタープライズシステムの基本形といえる。
なぜ SIer で重要か
SIer が構築する業務システム(社内業務システム、ECサイト、金融システム等)のほとんどは、この 3 層構成をベースに設計されている。設計書のインフラ構成図を読む際も、障害発生時にどのサーバーに問題があるかを切り分ける際も、3 層構成の理解が前提となる。
新人であっても「この処理は AP サーバーで動いている」「DB サーバーとの通信がタイムアウトした」といった会話を日常的に耳にするため、各層の役割を正しく理解しておく必要がある。
基本概念
3層構成の全体像
Web 3層構成
クライアント Web 層 AP 層 DB 層
┌────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ │ │ │ │ │ │ │
│ ブラウザ │────→│ Web サーバー │───→│ AP サーバー │───→│ DB サーバー │
│ │←────│ │←───│ │←───│ │
│ │ │ Apache │ │ Tomcat │ │ PostgreSQL │
│ │ │ Nginx │ │ WildFly │ │ Oracle │
└────────┘ └──────────┘ └──────────┘ └──────────┘
静的コンテンツ ビジネスロジック データの
リバースプロキシ セッション管理 永続化
各層の役割
Web 層(プレゼンテーション層)
クライアント(ブラウザ)からのリクエストを最初に受け付ける層である。
- 静的コンテンツの配信 --- HTML、CSS、JavaScript、画像ファイル等をクライアントに返す
- リバースプロキシ --- 受け取ったリクエストを後段の AP サーバーに転送する
- SSL/TLS 終端 --- HTTPS 通信の暗号化・復号をここで処理する
- 負荷分散 --- 複数の AP サーバーにリクエストを振り分ける
代表的な製品は Apache HTTP Server と Nginx である。
AP 層(アプリケーション層)
ビジネスロジック(業務処理)を実行する層である。システムの中核を担う。
- ビジネスロジックの実行 --- 業務ルールに基づくデータの処理・計算・判定
- セッション管理 --- ログイン状態などのユーザー情報の保持
- トランザクション管理 --- DB への更新処理の整合性を制御
- 外部システム連携 --- API 呼び出しやメッセージキューとの連携
代表的な製品は Apache Tomcat、WildFly(旧 JBoss)、WebLogic である。
DB 層(データ層)
データの永続的な保存と検索・更新処理を担う層である。
- データの永続化 --- 業務データをテーブルに保存
- クエリ処理 --- SQL による検索・挿入・更新・削除の実行
- データの整合性保証 --- 制約やトランザクションによるデータ品質の維持
- バックアップ・リカバリ --- データの損失防止と復旧
代表的な製品は PostgreSQL、Oracle Database、MySQL、SQL Server である。
なぜ 3 層に分離するか
| 観点 | 説明 |
|---|---|
| 役割分離 | 各層が独立した責務を持つことで、設計・開発・運用がしやすくなる |
| スケーラビリティ | 負荷が高い層だけサーバーを増設できる(例: AP サーバーだけ 2 台→4 台) |
| セキュリティ | 層ごとにネットワークを分離し、外部から DB サーバーに直接アクセスさせない |
| 保守性 | Web サーバーの設定変更が AP サーバーやDB に影響しない |
SIer での使われ方
冗長化構成
本番環境では、各層のサーバーを 2 台以上配置して冗長化することが一般的である。1 台が故障してもシステムが停止しないようにするためである。
冗長化された 3層構成
┌──────────┐
┌────→│ Web サーバー①│────┐
[ロードバランサー]──┤ └──────────┘ ├→[AP①]──┐
└────→┌──────────┐ │ [AP②]──┼→[DB(主系)]
│ Web サーバー②│────┘ │ [DB(副系)]
└──────────┘ └→ ↑
レプリケーション
- ロードバランサー(LB) が複数の Web サーバーにリクエストを振り分ける
- AP サーバーも複数台構成にし、Web サーバーから負荷分散する
- DB サーバーは主系(プライマリ)と副系(スタンバイ)でレプリケーションを行う
環境の種類
SIer のプロジェクトでは、同じ 3 層構成を複数の環境で用意する。
| 環境 | 用途 | 規模 |
|---|---|---|
| 開発環境 | 開発者がコーディング・単体テストを行う | 最小構成(1 台ずつ) |
| 検証環境(ステージング) | 結合テスト・総合テストを行う | 本番に近い構成 |
| 本番環境 | 実際のユーザーが利用する | 冗長化された完全構成 |
MVC パターンとの対応関係
アプリケーション設計で使われる MVC パターンと 3 層構成は、以下のように対応する。
| MVC の役割 | 3層構成での対応 |
|---|---|
| View(画面表示) | Web 層で配信される HTML/CSS/JavaScript |
| Controller + Model(処理) | AP 層で実行されるビジネスロジック |
| データ永続化 | DB 層で管理されるデータ |
ただし、この対応は厳密なものではない。例えば、JSP や Thymeleaf による View の生成は AP サーバー上で行われる。あくまで概念的な対応として理解しておくとよい。
まとめ
- Web 3層構成は Web サーバー / AP サーバー / DB サーバーの 3 層にシステムを分離するアーキテクチャである
- Web 層はリクエスト受付と静的コンテンツ配信、AP 層はビジネスロジック実行、DB 層はデータの永続化を担う
- 役割分離・スケーラビリティ・セキュリティの観点から 3 層に分ける
- 本番環境では各層を冗長化し、ロードバランサーで負荷分散するのが一般的である
- SIer の設計書やインフラ構成図を理解するための前提知識となる