イラスト図解式 この一冊で全部わかるWeb技術の基本を読んだので、大事だなと思ったことをまとめる。
大雑把には、『Webアプリケーションの構造』を学べる。
Webアプリケーションの3層構造
ネットワークを介してWebブラウザ上で動作するアプリケーションをWebアプリケーションという。Webアプリケーションは下記の3層構造になっている。
階層名 | 説明 | 担当 |
---|---|---|
プレゼンテーション層 | ユーザへの表示、 ユーザへの操作受け付け |
Webブラウザ、 Webサーバ |
アプリケーション層 | ユーザからの命令実行、 表示画面の作成 |
アプリケーションサーバ |
データ層 | データ抽出、データ更新、 データ保管 |
データベースサーバ |
また、アプリケーションについては更にMVCモデルという考え方がある。
要素名 | 説明 |
---|---|
Model | アプリケーションの扱うデータと業務処理 |
View | ユーザへの画面表示 |
Controller | ユーザの命令を受けて、ModelとViewに指示を出す |
上記の内容をまとめると、下記のような感じになる。
次に、Webクライアント(Webブラウザ)、Webサーバ、アプリケーションサーバ、データベースサーバの役割についてみていく。
Webクライアント(Webブラウザ)
Webクライアントは、Webサーバから送られてきたHTTPレスポンスを解釈して、ユーザが理解できるように表示するソフトウェア。代表的なものがWebブラウザ。
Webサーバ
WebサーバはWebアプリケーションにおいて、Webクライアントに対する窓口の役割を果たすプログラム。nginxがここに該当する。
アプリケーションサーバ
アプリケーションサーバは、Webアプリケーションの中核で業務処理を行うプログラム。Railsがここに該当する。
データベースサーバ
Webアプリケーションのデータベースを管理する役割を持つのがデータベース管理システム(DBMS:Database Management System)で、DBMSを搭載したサーバ機器をデータベースサーバと呼ぶ。アプリケーションサーバからデータ検索やデータ更新命令を受けて、データ管理を行う。
キャッシュサーバ
キャッシュサーバは、WebサーバやDBMSの負荷を減らすために、『リクエストに対するレスポンスを覚えておく』という役割を担う。更新頻度の少ないページやデータベースに対する同じ検索文などを覚えておくサーバがいれば、負荷減らせるよねって話。
この時の『リクエストに対するレスポンスの記憶』をキャッシュというらしい。キャッシュは2種類ある。
- コンテンツキャッシュ:文書・画像・動画のようなコンテンツのキャッシュ
- クエリキャッシュ:DBMSのデータ検索要求(クエリ)のキャッシュ
また、更新頻度が少なくても、更新が全くないことはないため、キャッシュサーバは定期的にキャッシュを更新する必要がある。でないと新しい内容を反映できないから。