Webアプリケーションの構造

イラスト図解式 この一冊で全部わかるWeb技術の基本を読んだので、大事だなと思ったことをまとめる。

大雑把には、『Webアプリケーションの構造』を学べる。

Webアプリケーションの3層構造

ネットワークを介してWebブラウザ上で動作するアプリケーションをWebアプリケーションという。Webアプリケーションは下記の3層構造になっている。

階層名 説明 担当
プレゼンテーション層 ユーザへの表示、
ユーザへの操作受け付け
Webブラウザ
Webサーバ
アプリケーション層 ユーザからの命令実行、
表示画面の作成
アプリケーションサーバ
データ層 データ抽出、データ更新、
データ保管
データベースサーバ

また、アプリケーションについては更にMVCモデルという考え方がある。

要素名 説明
Model アプリケーションの扱うデータと業務処理
View ユーザへの画面表示
Controller ユーザの命令を受けて、ModelとViewに指示を出す

上記の内容をまとめると、下記のような感じになる。

web_application.png

次に、Webクライアント(Webブラウザ)、Webサーバ、アプリケーションサーバ、データベースサーバの役割についてみていく。

Webクライアント(Webブラウザ

Webクライアントは、Webサーバから送られてきたHTTPレスポンスを解釈して、ユーザが理解できるように表示するソフトウェア。代表的なものがWebブラウザ

web_client.png

Webサーバ

WebサーバはWebアプリケーションにおいて、Webクライアントに対する窓口の役割を果たすプログラム。nginxがここに該当する。

web_server.png

アプリケーションサーバ

アプリケーションサーバは、Webアプリケーションの中核で業務処理を行うプログラム。Railsがここに該当する。

web_appserver.png

データベースサーバ

Webアプリケーションのデータベースを管理する役割を持つのがデータベース管理システム(DBMS:Database Management System)で、DBMSを搭載したサーバ機器をデータベースサーバと呼ぶ。アプリケーションサーバからデータ検索やデータ更新命令を受けて、データ管理を行う。

web_dataserver.png

キャッシュサーバ

キャッシュサーバは、WebサーバやDBMSの負荷を減らすために、『リクエストに対するレスポンスを覚えておく』という役割を担う。更新頻度の少ないページやデータベースに対する同じ検索文などを覚えておくサーバがいれば、負荷減らせるよねって話。

この時の『リクエストに対するレスポンスの記憶』をキャッシュというらしい。キャッシュは2種類ある。

  • コンテンツキャッシュ:文書・画像・動画のようなコンテンツのキャッシュ
  • クエリキャッシュ:DBMSのデータ検索要求(クエリ)のキャッシュ

web_cashe.png

また、更新頻度が少なくても、更新が全くないことはないため、キャッシュサーバは定期的にキャッシュを更新する必要がある。でないと新しい内容を反映できないから。

参考