基本情報 平成30年度 春期 問13:テクノロジ系に関する問題
Web システムにおいて, Web サーバとアプリケーション (AP) サーバを異なる物 理サーバに配置する場合のメリットとして, 適切なものはどれか。
- aWeb サーバにクライアントの実行環境が実装されているので, リクエストのた びにクライアントと AP サーバの間で画面データをやり取りする必要がなく, デ ータ通信量が少なくて済む。
- bWeb ブラウザの文字コード体系と AP サーバの文字コード体系の違いを Web サ ーバが吸収するので, 文字化けが発生しない。
- cデータへのアクセスを伴う業務ロジックは, Web サーバのプログラムに配置さ れているので, 業務ロジックの変更に伴って, AP サーバのプログラムを変更する 必要がない。
- d負荷が軽い静的コンテンツへのリクエストは Web サーバで処理し, 負荷が重い 動的コンテンツへのリクエストは AP サーバで処理するように, クライアントか らのリクエストの種類に応じて処理を分担できる。正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d です。
WebサーバとAPサーバを分けるメリット=役割分担で得意なことに集中させる。
- Webサーバ:軽い「静的コンテンツ(HTML/CSS/画像)」をサクッと返す
- APサーバ:重い「動的コンテンツ(DBアクセスのある処理)」をじっくり計算
それぞれ別のサーバにすると、負荷を分散できて全体が速くなります。
👉 覚え方:役割分担で得意分野に専念!
ほかの選択肢:a〜c は技術的な前提が逆だったり間違いだったりする説明。
なぜこれが正解か
正解は d。Webサーバ(Apache、Nginx等)は静的コンテンツ(HTML、CSS、JS、画像)の配信に最適化されており、APサーバ(Tomcat、JBoss、IIS等)は動的な業務ロジック処理に最適化されている。両者を物理的に分離することで、負荷特性に応じた処理分担が可能となり、それぞれをスケールアウトしやすくなる。リクエスト種別に応じて適切なサーバで処理することで、全体のスループットが向上する。
各選択肢の解説
- a Webサーバにクライアント実行環境:誤り。Webサーバはクライアントとの通信を仲介するだけで、クライアント実行環境(ブラウザ等)はクライアント側にある。
- b 文字コード違いをWebサーバが吸収:そうした機能を提供するわけではない。文字化けは別の対策(一貫したエンコーディング設定)で防ぐ。
- c 業務ロジックがWebサーバに:本来APサーバが業務ロジックを持つ。逆。
- d 静的をWeb、動的をAPで分担 → 正解。
覚え方・ひっかけ注意
3層アーキテクチャ:プレゼンテーション層(Webサーバ)+ ビジネスロジック層(APサーバ)+ データ層(DBサーバ)。各層を分離することでスケーラビリティ、保守性、セキュリティが向上。物理分離・論理分離・コンテナ分離の各レベルがある。
3層アーキテクチャの構造
1. プレゼンテーション層(Web層):HTTPリクエストの受信、静的コンテンツ配信、SSL終端、ロードバランシング。Apache HTTP Server、Nginx、IIS、AWS ALB/CloudFront。
2. ビジネスロジック層(AP層):動的処理、業務ロジック、セッション管理、認証・認可。Tomcat、WebLogic、WebSphere、Jetty、Node.js、PHP-FPM、Gunicorn/uWSGI。
3. データ層(DB層):データ永続化、トランザクション管理。Oracle、PostgreSQL、MySQL、SQL Server、NoSQL(MongoDB、DynamoDB)。
物理分離のメリット
- 負荷分散:静的:動的でリクエスト特性が大きく異なる。Webサーバは軽量・並列度高、APサーバはCPU/メモリ集約。
- スケーラビリティ:層ごとに独立スケーリング可能(水平展開)。
- セキュリティ:DMZ(非武装地帯)にWebサーバ、内部ネットワークにAP/DBサーバを配置。多層防御。
- 可用性:層ごとに冗長化、障害分離。
- 保守性:各層を独立に更新・パッチ適用可能。
- キャッシュ最適化:静的コンテンツはCDN(CloudFront、Akamai、Cloudflare)へオフロード。
デメリット・課題
- ネットワーク遅延:層間通信のレイテンシ。
- 複雑性増大:構成管理、デバッグ、デプロイの煩雑化。
- コスト:サーバ・ライセンス費用増。
- データ整合性:分散システムでのトランザクション管理。
進化系統
- モノリシック(伝統):単一プロセスで全層を統合。
- 3層アーキテクチャ:物理分離による役割分担。
- SOA(Service Oriented Architecture):機能をサービス化、ESBで統合。
- マイクロサービス:細粒度サービス、API Gateway+各種サービス独立デプロイ。Netflix、Amazon等が先導。
- サーバレス(FaaS):AWS Lambda、Azure Functions、Cloud Run。インフラ管理不要。
- エッジコンピューティング:CloudflareWorkers、Edge functions。Web層を CDN エッジに展開。
試験での位置づけ
FE「システムアーキテクチャ」分野で頻出。応用情報・SAではマイクロサービス、12-Factor App、CAP定理、サーキットブレーカ、Strangler Fig パターン等のクラウドネイティブ設計パターンまで踏み込む。
実装上の選択肢
- リバースプロキシ構成:Nginx/Apacheの前段配置、SSLオフロード、静的キャッシュ。
- ロードバランサ構成:HAProxy、ELB、Nginx Plus による複数APサーバへの分散。
- コンテナ化:Docker + Kubernetes で各層を Pod 単位に分離。
- CDN前置き:Cloudflare/CloudFront でグローバル分散、エッジキャッシュ。
選択肢の発展補足
bの文字化けはHTTPヘッダのContent-Type charset指定、メタタグ、DB接続文字セット、プログラミング言語の内部表現等の各レイヤでの統一が必要。UTF-8 統一が現代の標準解。cの業務ロジック配置はMVCパターンでAP層に Controller/Service/Model を配置するのが定石。ファットクライアント vs シンクライアントの議論はクライアント側のロジック分担の話。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成30年度 春期 問13/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。