Webアプリケーションってどんな構造になっているの?
Webアプリケーションの3層構造ってなに?
こういった疑問にこたえます。
エンジニアの僕がわかりやすく解説します。
Webアプリケーションの3層構造とは?
ネットワークを介してWebブラウザ上で動作するアプリケーションのことをWebアプリケーションと言います。
Webアプリケーションは基本的に3層構造と呼ばれる構造をしています。
- プレゼンテーション層
- アプリケーション層
- データ層
プレゼンテーション層はWebサーバとWebブラウザ、アプリケーション層はAPサーバ、データ層はDBサーバがその役割を担います。
ここでいうサーバは物理的なマシンというよりはミドルウェアのことを指していることに注意してください。
プレゼンテーション層
プレゼンテーション層はWebブラウザとWebサーバで構成されています。
WebブラウザはWebサーバから送られてきたコンテンツを表示しています。
Webサーバは主に、クライアントからのリクエストに対して「静的コンテンツを見せること」と「APサーバに処理を要求し、結果を見せること」の2つの役割を持っています。
Webサーバのミドルウェアとしてよく使われるのはApache HTTP ServerやNginx、IISなどがあります。
アプリケーション層
アプリケーション層はAPサーバがその役割を担います。
APサーバはWebサーバからの処理要求に対してプログラムを実行し、動的コンテンツを生成します。
また、データベースのデータを使用する場合にはDBサーバへリクエストを送り、その結果を処理に反映させます。
APサーバにはいくつか種類があって、Puma、Unicorn、Tomcatなどがあります。
扱うプログラミング言語によって使うAPサーバが変わってきます。
RubyであればPumaやUnicornを使いますし、JavaであればTomcatを使います。
PHPは例外でWebサーバのミドルウェアであるApacheのモジュールを使用することでAPサーバの仕組みを導入できてしまいます。
データ層
データ層はDBサーバがその役割を担います。
DBサーバはデータベース管理システムが動作しているサーバのことを指します。
データベース管理システムとはMySQLやPostgreSQL、Oracleなどです。
DBサーバではデータを保管しており、APサーバからの要求に従ってSQLという言語を実行し、その結果をAPサーバに返します。
3層を分割することのメリット
3層それぞれを別のサーバ機器に分けることで次のようなメリットが得られます。
負荷を分散できる
層ごとに別のサーバ機器を用意することで負荷を分散することができます。
小規模であればサーバの負荷が少ないので1台のサーバ機器に3層全ての役割を持たせることも考えられますが、大規模になればアクセス数も増え、処理も複雑になり、データ量も増えます。
なので大規模なWebシステムであれば、層ごとにサーバ機器を分けて負荷を分散することを考えるのが良いでしょう。
改修範囲の限定
アプリケーションの改修が必要になった場合に、層別に分かれていると改修範囲が小さくなるというメリットがあります。
例えば、データ層の改修が必要な場合はプレゼンテーション層やアプリケーション層には影響を及ぼさずに済みます。
コメント