はじめに
復習もとい備忘録にWEBサーバーとAPサーバーについてまとめてみました。
今回の記事では、WEBサーバーとAPサーバーの違い、役割についてまとめていきます。
そもそもWEBサーバーとAPサーバーって何?
簡単に画像で説明してみる。
WEBサーバーはクライアントから投げられたHTTPリクエストを処理する層
場合によっては、後続のAPサーバーに処理を受け渡す。
AP(アプリケーション)サーバーはRubyやPythonなどを実行してデータを処理するもの。
ローカルで作成したWEBアプリケーション(Flask,Django)を動かしているのはここの層。
APサーバーの役割
APサーバーに処理を投げる場合は動的にコンテンツを生成する場合。
動的コンテンツというのは、ページによって値が変わったりする動的に値などが変化するコンテンツのこと。
具体例を挙げるなら、訪問者数のカウンターの部分はアクセスの度に値が変わるので、動的なコンテンツになる。
動的コンテンツを生成した後の流れとして、APサーバーから受け取った処理をWEBサーバーを介して、クライアントに返却する。
場合によっては、APサーバーからDBサーバーに接続して、処理を行ったりする。
少し、話が脱線してしまいますが。。。
Flaskは組み込みサーバーを保有しており、ローカルではWEBサーバーの環境構築を行わずにWEBアプリケーションにアクセスできる。
WEBサーバーの役割
WEBサーバーはAPサーバーから受け取った値をWebブラウザに返す。
また、静的コンテンツへのリクエストの場合(HTML,CSSだけ)の場合はWEBサーバーがAPサーバーに問い合わせを行うことなく、クライアントに値を返したりもする。
昔はWEBサーバーにすべての処理を担わせていたらしい。(動的コンテンツの生成をWebサーバーで行っていた)
WEBサーバーとAPサーバーに分けられている理由として、
サーバーへの負荷分散などが挙げられる。
以前はWEBサーバーにアプリケーションの役割も持たせていたが、大量の処理などがきた場合にWEBサーバーへの負荷が大きくなってしまう。
そこでWEBサーバーとAPサーバーを分けることで、処理を分割してサーバーへの負荷を減らすといった対応を取った。
動的コンテンツを生成する場合はAPサーバーで処理を行い、静的ページを表示するだけの部分はWEBサーバーが処理を行うことで処理が分散される。
また、セキュリティの観点からも2つを分けておく方が情報漏洩のリスクが少なくなる。
現在、nginxが多くの場面で採用されているのは、大量アクセスへの負荷分散が優れているからだったりする。
まとめ
WEBサーバーとAPサーバーに分ける理由として、負荷の分散、セキュリティ面のケアが理由。
参考にした記事