EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

ITインフラのキホン:3階層型システムを見てみよう【中編】

  2020/09/15 12:00

 前回は、書籍『絵で見てわかる ITインフラって何だろう 新装版』(翔泳社 山崎 泰史、三縄 慶子、畔勝 洋平、佐藤 貴彦著)の第三章「3階層型システムを見てみよう」抜粋して紹介しました。今回は、第三章から、Webデータの流れを学ぶことのできる部分を抜粋して紹介します。

3.3 Web データの流れ

 さて、ここからは皆さんにとっても一番なじみ深いと思われる、3階層型システムにおけるWebデータの流れについて説明します。図3.8の流れに沿って見ていきましょう。

図3.8 本節で説明する内容:3階層型システムでのWebデータの流れ
図3.8 本節で説明する内容:3階層型システムでのWebデータの流れ

3.3.1 クライアントPC から Webサーバーまで

 図3.9には、クライアントPC上でWebブラウザを起動してから、Webサーバー上にリクエストが行なわれ、APサーバーへの問い合わせが行なわれるまでの流れを記載しています。それぞれのステップで何が起きているのか、細かく見ていきましょう。

 全体の流れは、以下のようになります。

 (1)Webブラウザからリクエストが発行される

 (2)名前解決が行なわれる

 (3)Webサーバーがリクエストを受け付ける

 (4)Webサーバーが静的コンテンツか、動的コンテンツかを判断する

 (5)必要な経路でデータにアクセスする

図3.9 クライアントPCからWebサーバーへのデータの流れ
図3.9 クライアントPCからWebサーバーへのデータの流れ

 まず、インターネットに接続されている環境で、Webブラウザを起動してみます。図3.10は、サーバーではなくPCでの処理の図解です。ディスクからプログラムが読み込まれ、プロセスが起動し、メモリ空間を確保します。この流れは、PCでもサーバーでも、基本的には同じ動きとなります。前節で紹介したシステムコールが用いられている点に注目してください。

図3.10 クライアントPC上でのWebブラウザの起動
図3.10 クライアントPC上でのWebブラウザの起動

 Webブラウザのアドレス欄に「http://www.yahoo.co.jp」とURLを入力し、[Enter]キーを押します。このとき、名前解決が行なわれてからWebサーバーにアクセスします。このURLがどういう意味か、皆さん知っていますか?答えは、「HTTPを利用して、www.yahoo.co.jpサーバーにアクセスする」という意味です。

 しかしWebブラウザは、このサーバーがどこにあるのかがわからないため、図3.11のように調べる必要があります。この仕組みを「名前解決」と呼びます。

 どうしてこのような仕組みが必要なのかというと、インターネット上のアドレスは「IPアドレス」という数値で表わされており、文字列であるURLとIPアドレスとを結びつけないと、通信ができないためです。こうしたネットワーク関連の細かな話は、第6章でご説明します。

図3.11 名前解決の仕組み
図3.11 名前解決の仕組み

 さて、Webサーバーまでたどり着きました。Webサーバーの役割は、HTTPリクエストに応じて、適切なファイルやコンテンツを返すことです。

 HTTPとは、「HyperTextTransfer Protocol」というプロトコルのことです。プロトコルの意味は第4章で詳しく説明しますが、「HTTPとは、テキストを送受信するための約束事である」とイメージしてください。現在のHTTPは画像や動画データの伝播にも利用されますが、あくまでベースはテキストデータとなっています。

 前掲した図3.8(p.57)のWebサーバー上には、HTTPを扱うことができる「httpdプロセス」が稼働しています。Apacheでは、基本的には親プロセスと子プロセスで処理が分担して行なわれます[※2]。設定によりさまざまな処理方法を選べますが、どのケースでも、基本的に子プロセスがHTTPリクエストを受け付けます。

 リクエストへの返答内容は、HTMLファイルというテキストデータや、画像や動画といったバイナリデータです。これらは「静的コンテンツ」と「動的コンテンツ」に分類することができます。

 「静的コンテンツ」とは、リアルタイムに変化する必要がないものを指します。たとえば、会社のロゴ画像データなど。会社のロゴが毎日変化したら困りますよね。Webサーバーでは、こういったデータの更新頻度が少ないものはディスク上に格納しておき、リクエストがあったときにはこの格納しておいた内容をHTTPに載せて、ユーザーのWebブラウザに返します。

 ※2 子プロセス内部で複数スレッドが起動する形も取ることができます。

 「動的コンテンツ」とは、高頻度で変化するデータを指します。たとえば、ユーザーの銀行残高情報、最新の天気予報データ、ショッピングサイトの買い物かごのデータなど。預金したのに銀行口座が変化しなかったら嫌ですよね。

 性能への影響は第8章で説明しますが、こういったデータをサーバー内部のディスク上に格納すると、更新頻度が高すぎるため、ディスク性能がボトルネックとなる場合がありますし、そもそも、いったんファイルという形で格納すること自体が非効率です。こういった動的コンテンツは、一般的に「APサーバー」でHTMLファイルを動的に生成させます。Webサーバーは、動的コンテンツに対するリクエストをAPサーバーに丸投げし、結果を待ちます。


関連リンク

著者プロフィール

  • EnterpriseZine編集部(エンタープライズジン ヘンシュウブ)

    「EnterpriseZine」(エンタープライズジン)は、翔泳社が運営する企業のIT活用とビジネス成長を支援するITリーダー向け専門メディアです。データテクノロジー/情報セキュリティの最新動向を中心に、企業ITに関する多様な情報をお届けしています。

バックナンバー

連載:翔泳社の本

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5