Web三層構造とは
クライアントサーバシステムを3階層に分割して構築するシステム形態のこと
- プレゼンテーション層
- アプリケーション層
- データ層
※ クライアントサーバシステム: クライアント(ユーザー側)とサーバ(サービス提供側)がネットワークを介して相互に通信するアーキテクチャ
各層ごとの役割
プレゼンテーション層
ユーザーインターフェース(見た目)を担う。ブラウザから受け取った「閲覧要求」をもとに、ページ情報を返すという役割を持っている
アプリケーション層
ビジネスロジックを処理する部分。プレゼンテーション層(画面)に入力された値をもとに、何かしらの処理を行う役割を担う
※ ビジネスロジック:アプリケーションが特定のビジネスルールや要件に基づいてデータを処理するためのルールや手順
※ ビジネスルール:特定のビジネスプロセスや業務において守るべき規則や条件
データ層
データ管理を行う部分。ページ情報をはじめ、サイトの構造や画像、その他あらゆる情報が詰め込まれている層。データベースにアクセスし、データの取得や保存を担当する
開発言語の代表例
プレゼンテーション層
HTML、CSS 、JavaScript
アプリケーション層
Python、Java、Perl、PHP、Ruby
データ層
- SQL系
- SQL
- PL/SQL
- NoSQL系
- MongoDB Query Language(MQL)
- CQL(Cassandra Query Language)
- Gremlin(グラフ型データベース用)
サーバ構成
サーバ | サーバの役割 | 層 |
---|---|---|
Webサーバ | ユーザーと直接やり取りを行うサーバ。ユーザーからのリクエストを受け取り、ウェブページのデータ(HTMLやCSS、画像など)を送り返す役割を持つ | プレゼンテーション層 |
Webアプリケーションサーバ | Webサーバからリクエストを処理し、必要なデータや処理結果を返すサーバ | アプリケーション層 |
データベースサーバ | Webアプリケーションサーバからのリクエストに応じて、データの管理や処理を行うサーバ | データ層 |
サーバの代表例
Webサーバ
- Apache HTTP Server
- nginx
- Microsoft Internet Information Services (IIS)
Webアプリケーションサーバ
- Apache Tomcat
- JBoss
- uWSGI
- Gunicorn
データベースサーバ
- Oracle
- SQL Server
- MySQL
- PostgreSQL
リクエストの流れ
- クライアント(Webブラウザ)がWebサーバにリクエストを送信
- Webサーバがリクエストを受け取り、適切な処理をWebアプリケーションサーバに転送
- Webアプリケーションサーバがビジネスロジックを処理し、必要ならデータベースサーバーにデータを要求
- データベースサーバがWebアプリケーションサーバーにデータを返す
- Webアプリケーションサーバが取得したデータをもとに処理し、Webサーバーにレスポンスを送信
- Webサーバはクライアント(Webブラウザ)にレスポンス(ページ情報やデータ)を送信
メリット&デメリット
メリット
- 分離性
- 各層が独立しているため、変更が容易
- 再利用性
- ビジネスロジックやデータアクセスを他のアプリケーションでも再利用可能
- スケーラビリティ
- 各層を個別にスケールできるため、パフォーマンス向上が可能
- 保守性
- 問題の特定がしやすく、修正が迅速に行える
デメリット
- サーバを分離させることからハードウェアを複数用意しなければならず、その分コストがかかってしまう
まとめ
Web三層構造はクライアントサーバシステムをプレゼンテーション層、アプリケーション層、データ層の3つに分割して構築するシステム形態のことです。
この構造により、変更が容易になり、再利用性を高めるなどのメリットが大きく、データ変更にも柔軟に対応が可能になります。