Webサーバー・アプリケーションサーバー・データベースサーバーの役割

f:id:ryoutaku_jo:20190305195356p:plain

【結論】
・Webサーバーは、クライアントからのリクエストに応じて、
 コンテンツのレスポンスを担当する
 静的コンテンツのレスポンスであれば、自身だけで完結出来る

アプリケーションサーバーは、Webサーバーからの
 リクエストに応じて、動的コンテンツの生成を担当する

・データベースサーバーは、アプリケーションサーバーからの
 リクエストに応じて、データの取得/更新/削除を担当する


【目次】


【本題】

前回の続き

前回の記事でサーバーの仕組みについて軽く触れましたが、
今回はもう少し掘り下げてまとめて見ようと思います。

ryoutaku-jo.hatenablog.com

全体像

前回にも同様の説明をしましたが、
「Web3層構成」のサーバーは下記の様な構成になっています。

f:id:ryoutaku_jo:20190305175615p:plain

それぞれの役割を簡潔に説明すると下記の通りです
・Webサーバー・・・HTTPリクエストの処理、HTTPレスポンスの送信
アプリケーションサーバー・・・動的コンテンツの生成
・データベースサーバー・・・データの管理

Web3層構成のメリット

この様に三層構成にするメリットは下記の通りです。

・負荷分散
全ての処理を一つのサーバーで行うと負荷が掛かり過ぎて、
パフォーマンス低下の原因となります。機能毎にサーバーを分けることで、
負荷が分散され、大量の処理も可能になっています。

・拡張性の向上
機能変更が必要になった際、全ての機能が集約されていると
システム全体を改修する必要がある為、手間とコストが非常に掛かります。
3層構成にすることで、それぞれの機能を分離して改修が出来るので、
拡張しやすくなります。

Webサーバーの役割

Webサーバーはサーバー全体の入り口に位置しており、
クライアントからのリクエストを受け付けます。

そして、リクエストの内容に応じて、レスポンスを送信します。

リクエストが静的なコンテンツ(表示内容が変わらないHTMLファイル)を
要求する内容であれば、自身で処理を完結できます。

但し、動的なコンテンツ(データベースのデータを表示させるなど)を
要求する内容であれば、自身で処理できない為、
アプリケーションサーバーへ、動的コンテンツの生成を指示します。

なお、Webサーバーには下記の様な種類があります。
・Nginx
Apache
IIS

アプリケーションサーバーの役割

Webサーバーからのリクエストを受けて、動的コンテンツを生成します。
RubyJavaといったプログラムコードの処理は、ここが担当します。

今日の日付を表示させるといったプログラムコードだけで処理可能であれば、
自身で完結できますが、データベースからデータを取得したり、
更新が必要な場合には、データベースサーバーへ指示を出します。

なお、プログラミング言語毎に種類が異なりますが、Rubyでは下記の様な種類があります。
・Unicron
・Puma
・Passenger
・Thin

データベースサーバーの役割

アプリケーションサーバーからのリクエストを受けて、
データの登録/更新/削除/検索を行います。

下記の様な種類があります
Mysql
SQLite
PostgreSQL

《今日の学習進捗(3年以内に10000時間に向けて)》

就活と Docker。

学習開始からの期間 :88日
今日までの合計時間:865h
一日あたりの平均学習時間:9.9h
今日までに到達すべき目標時間:804h
目標との解離:61h
「10,000時間」まで、

残り・・・「9135時間!」