はじめに
概要
Webサーバー、アプリケーションサーバー、データベースサーバーは、一般的なWebシステムでそれぞれ異なる役割を担います。本章では全体像を分かりやすく説明し、なぜこれらを分けるのか、どんな利点があるのかを紹介します。
それぞれの役割を簡単に
- Webサーバー:ブラウザからのHTTPリクエストを受け、静的ファイルやアプリへの入口を提供します。例:画像やHTMLの配信。
- アプリケーションサーバー:ビジネスロジックを実行し、データ処理や画面表示の準備を行います。例:会員情報の照合。
- データベースサーバー:データを保存・検索する専門役割です。例:注文履歴の保管。
なぜ分けるのか
負荷分散や管理のしやすさ、セキュリティの向上などが主な理由です。役割を分けることで障害の影響を限定し、必要に応じて個別に拡張できます。
本書の読み方
次章で各サーバーの具体的な役割と具体例を詳しく解説します。第3章で違いを一覧にまとめ、第4章では3層の連携の流れを図解します。
それぞれの役割
ここではWebサーバー、アプリケーションサーバー、データベースサーバーの役割をわかりやすく説明します。初心者の方にもイメージしやすいよう、具体例を交えて解説します。
Webサーバー
Webサーバーはクライアント(ブラウザ)のHTTP/HTTPSリクエストを受け取り、静的なコンテンツ(HTML、画像、CSS、JavaScript)を返します。代表的なソフトはApache、Nginx、IISです。TLS(HTTPS)終端や負荷分散、リバースプロキシの役割も担い、複数のアプリケーションサーバーへ振り分けることが多いです。
アプリケーションサーバー
アプリケーションサーバーはビジネスロジックを実行し、動的なページや処理結果を生成します。例としてTomcat、JBoss、WebLogic(Java系)、Unicorn、Puma(Ruby系)があります。ユーザー認証、セッション管理、外部API連携などの処理を行います。
データベースサーバー
データベースサーバーはデータの検索・登録・更新・削除を行い、情報を永続化します。MySQL、PostgreSQL、Oracle、SQL Serverなどが一般的です。トランザクションやインデックス、バックアップ・レプリケーション機能でデータの整合性と可用性を支えます。
役割を分けることで性能拡張や運用がしやすくなります。
3つの違いを一覧
以下に、Webサーバー、アプリケーションサーバー、データベースサーバーの違いを分かりやすく一覧にしました。
| サーバー種別 | 主な役割 | やり取りする相手 |
|---|---|---|
| Webサーバー | ブラウザからのHTTPリクエストを受け付け、静的コンテンツを返す。 | クライアントブラウザ、アプリケーションサーバー |
| アプリケーションサーバー | ビジネスロジックを実行し、動的コンテンツを生成する。 | Webサーバー、データベースサーバー |
| データベースサーバー | データの保存・検索・更新・削除を担当する。 | 主にアプリケーションサーバー |
各項目の具体例とポイント:
- Webサーバー
- 具体例:HTML、画像、CSS、JavaScriptを返す。アクセスの窓口として働きます。
-
ポイント:軽い静的配信を得意とし、直接ブラウザとやり取りします。
-
アプリケーションサーバー
- 具体例:ログイン処理、注文処理、計算や条件判定などの動作を行います。
-
ポイント:ビジネスルールを実行し、必要なデータをデータベースから取得します。
-
データベースサーバー
- 具体例:ユーザー情報や注文履歴を保管します。
- ポイント:データの一貫性や検索性能が重要で、通常はアプリケーションサーバーと直接やり取りします。
これらは役割を分担して連携することで、効率よくサービスを提供します。
連携の流れ(3層構成)
概要
クライアント(ブラウザ)がURLにアクセスすると、まずWebサーバーがHTTP/HTTPSでリクエストを受け取ります。静的なファイルはWebサーバーがそのまま返しますが、動的な処理が必要なときはアプリケーションサーバーに処理を依頼します。
ステップごとの流れ
- ブラウザからリクエスト:ユーザーがURLを入力すると、ブラウザがWebサーバーへ問い合わせます(例:商品ページの閲覧)。
- Webサーバーで振り分け:Webサーバーはリクエスト内容を確認し、静的なら直接返却、動的ならアプリケーションサーバーに転送します。
- アプリケーションサーバーの処理:アプリケーションはビジネスロジックを実行します。必要ならデータを取得するためデータベースサーバーに問い合わせます(例:在庫情報の確認)。
- データベースサーバーの応答:データベースはSQLなどで検索して結果を返します。アプリケーションはその結果を受け取り、表示用のHTMLやJSONを生成します。
- レスポンスの返却:生成した内容をアプリケーションサーバーがWebサーバーへ戻し、Webサーバーがブラウザへ最終的に送信します。
具体例(短い場面)
商品詳細を見る場面では、ブラウザ→Webサーバー→アプリケーション→データベース→アプリケーション→Webサーバー→ブラウザ、という順でデータがやり取りされます。各層が担当を分けることで、役割が明確になり管理や拡張がしやすくなります。












