― キッチン内部の2つの役割、WebサーバーとWAS
前回の記事では、Webサービス全体の構成をレストラン運営にたとえて解説しました。
今回はその中でもコアとなる**「キッチン(バックエンド)」**をさらに詳しく見ていきます。
レストランのキッチンにも、さまざまな役割があります。
誰かは注文ごとに料理を新しく作り、
誰かはお客様が快適に食事できるようテーブルにサービングする食器を準備します。
開発の世界でも、キッチンの中には2つの異なる役割を持つサーバーが存在します。
それがWAS(Web Application Server)とWebサーバーです。
👨🍳 WAS(Webアプリケーションサーバー)― オーダーメイド料理のキッチン
お客様がリゾットやパスタなど好きなメニューを注文したとき、
シェフは注文に合わせて食材を取り出し、新しく調理します。
このようにリクエストが届くたび、都度異なる結果(料理)を作るのがWASの役割です。
お客様の要望に応じて動的にデータを加工・生成します。
つまり、WASはダイナミックなデータを調理するキッチンです。
例えば、
- ログインしたユーザーごとに異なる画面を表示
- 注文履歴を取得
- 決済結果の計算
といった処理はWASが担っています。
💡 代表的なWAS: Spring Boot, Tomcat, Node.js, Django など
🍽️ Webサーバー ― いつも準備されている食器とテーブル
一方、Webサーバーはキッチンのように毎回新しい料理を作るわけではありません。
レストランで常に用意されたテーブル、食器、メニューボードのように
「すでに完成したもの(静的リソース)」をそのまま提供します。
例としては、
- HTML
- 画像ファイル
- CSS/JavaScriptファイル
これらは毎回作り直す必要がなく、あらかじめ準備しておけます。
この静的リソースを素早く届けるのがWebサーバーの役目です。
つまり、Webサーバーは静的なデータ(変更されないファイル)の管理・配信を担当します。
💡 代表的なWebサーバー: Nginx, Apache HTTP Server など
🍴 協力して動く仕組み
お客様がレストラン(Webサイト)を訪れると、
まずWebサーバーを通じて**食堂の基本(静的な画面)を確認し、その上でパーソナライズされた料理(WASリクエスト)**が必要な場合、キッチンで注文が調理されてサーブされます。2つのサーバーが連携することで、お客様は快適かつ素早く食事(サービス)を楽しめます。
| 区分 | たとえ | 役割 | 例 |
|---|---|---|---|
| Webサーバー | 食器・メニューボード | 静的リソース提供(変わらない) | Nginx, Apache |
| WAS | オーダーメイド料理キッチン | 動的リソース生成(リクエストごとに変化) | Spring Boot, Tomcat, Node.js |
⚙️ なぜ分けるのか?
多くのサービスはWebサーバーとWASを分けて運用しています。
理由はシンプルで「効率」と「安定性」の向上のためです。
Webサーバーは静的ファイルを高速に処理し、
WASはより複雑なロジックや動的な処理を担当します。
役割分担を明確にすることで、サーバーへの負荷を最適化し、保守もしやすくなります。
つまり、
- Webサーバーがお客様を迎え、基本のセッティング(静的リソース)を担当
- WASが注文ごとに料理(動的処理)をする
このような分業によって効率的なサービス運営が可能となります。🍛
🧭 次回予告
次回は、WAS内部の実際の流れを詳しく見ていきます。
お客様からの注文(リクエスト)が届いたとき、
バックエンドがどのように食材(DB)を取り出し、調理(ビジネスロジック)して、
結果をお客様に届けるのか――その工程を具体的に解説します。
いよいよキッチンの扉を開き、「サーバーが料理を作るプロセス」に迫っていきます。👨🍳