WEBにまるわる技術の紹介 ③Webサーバとは
こんばんは。
今日自宅でのテレワークのため、一歩も家の外に出ませんでした。。。
明日は朝一で運動でもしたいな、と思いつつ書いております。
Webサーバの処理の流れ
前回の記事であったように、ブラウザとWebサーバはHTTPで通信を送受信します。
ブラウザがHTTPリクエストを送ってから、Webサーバでは以下の図の①~④の順で動きます。
最終的に、WebサーバはHTTPレスポンスをブラウザに応答するのですが、そのHTTPレスポンスをブラウザに表示するとこは、次回紹介予定のブラウザの役割です。
静的コンテンツ/動的コンテンツ
Webサーバが応答する内容(コンテンツといいます)は静的コンテンツ/動的コンテンツの2種類あります。
同じリクエストに対して、毎回同じレスポンスを返すのが静的コンテンツです。
例えば、画像です。誰が見ても同じ画像に対するリクエストの場合は、同じ画像がレスポンスされます。
逆に、動的コンテンツは、ECサイトのカート情報のように、ユーザーや状態によってコンテンツが変わるものです。
ちょっと静的/動的という表現がシステム開発用語なので、わかりづらいかもしれませんが、よろしければご参考ください。
静的コンテンツの配信
Webサーバを使う人が増えると、それに比例してWebサーバが処理しなければならないリクエスト数が増大します。
サーバの性能には限界があり、リクエスト数が閾値をこえた場合、サーバーは動かなくなったり、動きが遅くなったりします。
その結果、ブラウザにエラーを応答したり、応答を返せなくなってしまいます。(前回記事で紹介したHTTPのステータスコードがブラウザに5xxxが応答されます。)
そうなると、ユーザは変なエラー画面になったり、画面動作が遅くなってしまうので、利便性が下がってしまいます。
先に見たように、Webサーバがやるべきことは静的コンテンツを返すか、動的コンテンツを返すかの2種類です。
そのうち、静的コンテンツは上記のWebサーバの処理③が不要なリクエストです。
簡単にいうと、Webサーバを使うまでもない簡単なリクエストなのです。
そういった場合に使える仕組みが、CDNです。
CDNの紹介は長くなってしまうので、割愛しますが、ご興味のある方は以下の記事をご参考ください。
CDNを使うことで、静的コンテンツへのリクエストが来た場合、Webサーバがリクエストを受理する前に、CDNが処理を行い、静的コンテンツをブラウザに応答します。
なので、Webブラウザのリクエスト受理数・処理数を減らすことができるのです。要はCDNに仕事をアウトソーシングする、みたいな感じです。
それによって、Webサーバの処理性能に余裕を持たせることができ、ユーザの利便性も上がるのです。
動的コンテンツの配信
では、動的コンテンツを配信する場合はどうなのかというと、以下の2パターンあります。
1.Webサーバの中に処理を入れる
2.他のサーバに処理は任せる
1.の場合、Webサーバの中に処理内容をプログラミングしたファイルを置き、そのプログラムがWebサーバの中で稼働して処理を行います。
例えば、ユーザーAが商品を入れたカート情報をデータベースから収集するような処理です。
2.の場合、Webサーバとは別のサーバ(コンピュータ)を設置し、Webサーバからその別のサーバにHTTPリクエストを転送し、別のサーバで処理を実行し、処理結果をまたWebサーバに戻します。
で、Webサーバがその受け取った処理結果をブラウザに応答する方法です。
別のサーバーとは、「Webアプリケーションサーバ」といい、次々回の記事で紹介予定です。
なぜ、別のサーバにわざわざ処理をお願いするか、その理由は、根本的にはCDNを使う理由と同じです。
1.のようにWebサーバ内で動的コンテンツを作成する処理を行うと、サーバのCPUやメモリを処理を行うたびに消費してしまうため、多くのリクエストを処理できなくなってしまうからです。
なので、動的コンテンツを作成するための重い処理を別のサーバにエイ、とお願いして、自分自身はリクエストを受理したり、レスポンスを応答するところにコンピュータ資源を集中するわけです。
はい、では次回はブラウザとは。です。