WebサーバとAPサーバを分けて置く利点を役割から考える
基本情報技術者試験 平成30年度秋期 午前 問13 / システム構成要素 › システムの構成
過去問にチャレンジ
Webシステムにおいて,Webサーバとアプリケーション(AP)サーバを異なる物理サーバに配置する場合のメリットとして,適切なものはどれか。
- ア
Webサーバにクライアントの実行環境が実装されているので,リクエストのたびにクライアントとAPサーバの間で画面データをやり取りする必要がなく,データ通信量が少なくて済む。
- イ
Webブラウザの文字コード体系とAPサーバの文字コード体系の違いをWebサーバが吸収するので,文字化けが発生しない。
- ウ
データへのアクセスを伴う業務ロジックは,Webサーバのプログラムに配置されているので,業務ロジックの変更に伴って,APサーバのプログラムを変更する必要がない。
- エ
負荷が軽い静的コンテンツへのリクエストはWebサーバで処理し,負荷が重い動的コンテンツへのリクエストはAPサーバで処理するように,クライアントからのリクエストの種類に応じて処理を分担できる。
会話形式の解説
講師今回は、WebサーバとAPサーバを別々の物理サーバに置くと何がよくなるか、という問題です。ポイントは、2つのサーバがそれぞれ何を担当しているかです。選択肢を読むときは、文の中でどのサーバに何をさせているかに注目してください。
受験者APサーバのAPはアプリケーションの略ですよね。Webサーバもページを返すので、正直どちらも同じような仕事をしている印象があります。
講師そこを整理しましょう。Webサーバはブラウザからのリクエストを受け付けて、HTMLや画像のような静的コンテンツ、つまり誰が見ても中身が同じファイルを返します。APサーバはプログラムを動かして業務処理を行い、その場で結果を作る動的コンテンツを担当します。データにアクセスする業務ロジックもAPサーバ側です。
受験者そうすると、業務ロジックをWebサーバのプログラムに置くと書いてある選択肢は、配置先が逆になっていますね。
講師そのとおりです。業務ロジックはAPサーバに置かれるので、ロジックを変更するときもAPサーバ側のプログラムを直すことになります。「APサーバの変更が不要」という結論は、役割の取り違えから出てきたものです。
受験者Webサーバにクライアントの実行環境があるので通信量が減る、という選択肢も気になりました。サーバ側で画面を動かしてくれるなら通信が減りそうに思えたのですが。
講師では確かめてみましょう。Webシステムで画面を表示して実行しているのはどこでしょうか。
受験者利用者の手元にあるWebブラウザです。なので、Webサーバに実行環境があるという前提がまず違うということですね。
講師はい。画面データもリクエストのたびにブラウザとWebサーバの間でやり取りされるので、画面データのやり取りが不要になるという結論も成り立ちません。
受験者文字コードの違いをWebサーバが吸収して文字化けが起きない、という選択肢はどうでしょうか。それらしく聞こえます。
講師サーバを物理的に分けても、文字コードの違いが自動で解消されるわけではありません。変換が必要ならアプリケーション側の処理などで別に対応します。配置を分けた効果として文字化けがなくなる、とはいえないので誤りです。
受験者残るのは、軽い静的コンテンツはWebサーバ、重い動的コンテンツはAPサーバで処理を分担できる、という選択肢です。最初に整理した役割にそのまま合っています。
講師それが正解です。物理サーバを分けておけば、それぞれの負荷に合った構成にでき、負荷の軽減にもつながります。
受験者選択肢ごとに「どのサーバが何を担当すると書いているか」を確かめれば、正しく書かれたものが一つだけ残るということですね。
講師はい。補足すると、動的な処理のリクエストも、まずWebサーバが受け付けてからAPサーバへ渡すのが一般的です。クライアントはブラウザで画面表示、Webサーバは受け付けと静的コンテンツ、APサーバは業務ロジックとデータアクセス、と3つに分けて覚えておくと、役割を入れ替えた引っかけに気づきやすくなります。
まとめ
WebサーバとAPサーバを別々の物理サーバに置くメリットを問う問題です。Webサーバはリクエストの受け付けと静的コンテンツの配信、APサーバはデータアクセスを含む業務ロジックと動的な処理、ブラウザは画面の表示を担当します。この役割に合うのは、静的コンテンツと動的コンテンツでリクエストの処理を分担できるという選択肢です。ほかの選択肢は、実行環境や業務ロジックの置き場所を取り違えているか、サーバを分けただけでは得られない効果を挙げています。
解答・解説
正解はエです
この問題のテーマ
Webシステムで、WebサーバとAPサーバを別々の物理サーバに置いたときに何がよくなるかを問う問題です。2つのサーバがそれぞれどんな役割を持つかを理解しているかが問われます。
解き方の考え方
まず役割を整理します。Webサーバはブラウザからリクエストを受け、HTMLや画像などの静的コンテンツを返します。APサーバはプログラムを動かして業務処理を行い、動的な結果を作ります。この分担に合っている選択肢を探し、役割を取り違えている選択肢は誤りとして外します。
選択肢ごとの解説
- ×ア Webサーバにクライアントの実行環境が実装されているので,リクエストのたびにクライアントとAPサーバの間で画面データをやり取りする必要がなく,データ通信量が少なくて済む。アの「Webサーバにクライアントの実行環境がある」という前提が誤りです。画面を表示して実行するのはクライアント側のWebブラウザで、Webサーバではありません。画面データもリクエストのたびにブラウザとWebサーバの間でやり取りされます。そのため「画面データのやり取りが不要で通信量が少ない」という結論は成り立ちません。
- ×イ Webブラウザの文字コード体系とAPサーバの文字コード体系の違いをWebサーバが吸収するので,文字化けが発生しない。イは文字コードの違いをWebサーバが吸収すると述べていますが、サーバを物理的に分けても文字コードの違いが自動で解消されるわけではありません。文字コードの変換は、アプリケーション側の処理などで別に対応する必要があります。配置を分けた効果として文字化けがなくなるとはいえません。
- ×ウ データへのアクセスを伴う業務ロジックは,Webサーバのプログラムに配置されているので,業務ロジックの変更に伴って,APサーバのプログラムを変更する必要がない。ウは業務ロジックをWebサーバに置くとしていますが、データアクセスを含む業務ロジックを受け持つのはAPサーバです。そのため、業務ロジックを変更するときはAPサーバのプログラムを修正することになり、「APサーバの変更が不要」という結論は役割の取り違えから出たものです。
- ○エ 負荷が軽い静的コンテンツへのリクエストはWebサーバで処理し,負荷が重い動的コンテンツへのリクエストはAPサーバで処理するように,クライアントからのリクエストの種類に応じて処理を分担できる。エのリクエストの種類による分担は、2つのサーバの役割にそのまま当てはまります。処理の軽い静的コンテンツはWebサーバが返し、処理の重い動的コンテンツはAPサーバが受け持ちます。物理サーバを分けておけば、それぞれの負荷に合った構成にでき、負荷を分散する効果も期待できます。
補足
動的な処理のリクエストはWebサーバが受け付けてから、APサーバへ渡すのが一般的です。選択肢の文が「どのサーバが何を担当するか」を正しく書いているかを確認すると、誤りの選択肢を見分けやすくなります。
POINT
- Webサーバは主に静的コンテンツの配信と、リクエストの受け付けを担当します。
- APサーバは動的な処理と、データアクセスを含む業務ロジックを担当します。
- Webシステムのクライアントは Webブラウザで、主に画面の表示を担当します。
- WebサーバとAPサーバを物理的に分けると、静的処理と動的処理で負荷を分担できます。
