3.3.4 AP サーバーから Web サーバーまで
今度は、同じルートの帰り道を見てみます。DBサーバーからデータが返ってきたので、APサーバーのリクエスト元のスレッドに結果が渡されます。この流れは非常にシンプルです。データを集計するなど、リクエストされた内容に沿うように加工した上で、Webサーバーへとデータが返ります(図3.17)。
全体の流れとしては、以下となります。
(1)DBサーバーからのデータが到着する
(2)スレッドがデータを元に計算等を加え、ファイルデータを生成する
(3)結果をWebサーバーに返す
加工結果は、テキストデータであればHTMLやXMLファイルが一般的です。そのほかにも、動的に画像などのバイナリデータを生成して返すようなケースもあります。HTTPで転送可能なデータであれば、何を生成してもかまいません。
3.3.5 Web サーバーからクライアント PC まで
APサーバーから返ってきたデータは、WebサーバーのhttpdプロセスがPC上のWebブラウザに返します(図3.18)
全体の流れとしては、以下となります。
(1)APサーバーからのデータが到着する
(2)プロセスは受け取った結果をそのまま返す
(3)結果がWebブラウザに返り、画面に表示される
長い道のりでしたが、リクエスト結果がWebブラウザまで返りました。基本的には1つのリクエストにつき、1つのデータが返ります。
一般的なWebページにおいては、ページのHTMLファイルと、多数の画像ファイルなどがありますので、複数のリクエストに分割されてWebサーバーに届き、それぞれのリクエストごとにデータを返します。
3.3.6 Web データの流れのまとめ
各サーバーで実施される内容は異なりますが、以下のような共通点がありました。
- プロセスやスレッドが何かしらのリクエストを受け取る
- 自分で完結して処理できれば処理するが、必要に応じて、別のサーバーに対してリクエストを送る
- 返答を行なう
3階層システムでは、ユーザーのリクエストが起点となり、そのリクエストが次へ、次へと色々なサーバーに送られます。特徴としては、自分でできない処理は、他の役割を持つサーバーに渡していくという点です。3階層という名前ですが、実際にはもっとたくさんの階層を利用していることがほとんどです。
また、基本的に各サーバーは、ユーザーからのリクエストが来るまで、口を開けて待っている状態です。どのくらいのリクエストが来るかは、実際にリクエストが来てみるまでわかりません。
これがITインフラで性能問題が起きやすい理由の1つです。第8章で紹介する性能観点での説明を読む際には、この本質を念頭に置いておいてください。