平成27年春期試験午前問題 午後問4

問4 システムアーキテクチャ

キャンペーンサイトの構築に関する次の記述を読んで,設問1~3に答えよ。

 L社は,清涼飲料の製造販売を手掛ける中堅企業である。夏の新商品を宣伝するために,新商品の紹介やプレゼントの応募受付を行うキャンペーンサイト(以下,本システムという)を構築することになった。

〔システム基盤の選定〕
 本システムは,7~9月の3か月間だけ公開する予定である。また,プレゼントの応募を受け付けることから,特定の日時に利用が集中すると見込まれる。これらの特性に対応できるシステム基盤として,仮想化技術を用いたM社のPaaS(Platform as a Service)を選定した。M社のPaaSが提供するサービスを表1に示す。
pm04_1.gif
〔システム構成の検討〕
 本システムには,次の二つの機能がある。
  • 新商品紹介機能
     動画や写真,解説文などを用いて新商品を紹介する機能。
  • プレゼント応募受付機能
     新商品に貼り付けたプレゼント応募シールの裏に記載されたシリアル番号と応募者の情報を受け付ける機能。
 まず,新商品紹介機能を実現するためのシステム構成について考える。この機能は,動画や写真などのコンテンツをWebブラウザへ配信する。そのために,コンテンツをストレージサービスに配置し,Webサーバを経由してWebブラウザへ配信する構成にする。
 次に,プレゼント応募受付機能を実現するためのシステム構成について考える。この機能は,発行したシリアル番号の照合などを行い,受け付けた情報をDBサーバに保存する。DBサーバのデータを用いた動的なHTMLを配信するために,WebサーバとAPサーバを利用する。また,利用者の増減に対応するために,ロードバランササービス及び自動スケールサービスも併せて利用する。応募者の情報を暗号化する処理は,DBサーバ上にストアドプロシージャとして配置することを検討したが,①本システムの特性を考慮した結果,②APサーバ上の処理として実装することにした。

〔PaaS利用料金の試算〕
 各機能における1トランザクション当たりのシステムリソース消費量を表2に,ピークとなる9月の時間帯ごとのトランザクション数の見込みを表3に示す。
pm04_2.gif
 必要になるWebサーバの台数を時間帯ごとに試算する。
 Webサーバに求められる18:00~22:00の時間帯の1秒当たりの命令実行数は,二つの機能を合計するとa百万である。Webサーバ1台の能力の80%がトランザクション処理に使用できるとすると,Webサーバ1台について,トランザクション処理に使用できる1秒当たりの命令実行数はb百万である。したがって,必要なWebサーバの台数はc台である。
 同様に,その他のサーバの台数も求めることができる。
 続いて,各サービスの利用料金を試算する。
 Webサーバ及びAPサーバの料金は,求めた台数に利用時間と1時間当たりの料金を掛けることで算出できる。DBサーバは,それに加えてデータ保存量とデータ転送量に対する料金が必要になる。DBサーバの9月のデータ転送量は,1,000kバイト=1Mバイト,1,000Mバイト=1Gバイト,1,000Gバイト=1Tバイトとすると,dTバイトである。したがって,このデータ転送に掛かる料金はe円となる。

〔システム運用開始後の問題と対策〕
 予定どおりに本システムの運用が始まり,利用者が次第に増えてきた7月下旬,新商品紹介機能の応答が遅いというクレームが多く寄せられた。各サーバのアクセスログを解析したところ,ストレージサービスからWebサーバへのコンテンツの転送に想定以上の時間を要していることが判明した。そこで,システム構成を見直し,同じコンテンツが複数回利用される場合にはストレージサービスからの転送量を削減するように③コンテンツの配信方法を変更することで,問題を回避できた。

設問1

〔システム構成の検討)について,(1),(2)に答えよ。
  • 本文中の下線①とはどのような特性か。25字以内で述べよ。
  • 本文中の下線②のように処理を実装することで,どのような効果が得られるか。25字以内で述べよ。

解答例・解答の要点

  • 特定の日時に集中すると見込まれる特性 (18文字)
  • 利用者の増加に対応できる (12文字)

解説

〔システム基盤の選定〕を見ると、「本システムは,7~9月の3か月間だけ公開する予定である。また,プレゼントの応募を受け付けることから,特定の日時に利用が集中すると見込まれる」とあり、これに対応するためのシステム基盤としてPaaSを採用したと書かれています。問題になっている「応募者の情報を暗号化する処理」は、プレゼントへの応募が行われるたびに実行する処理であるため、やはり「特定の日時に利用が集中する」と考えられます。
  • 暗号化は多くの計算を必要とする処理であり、システム負荷の一因となります。パスワードのみの暗号化なら心配するほどではないのかもしれませんが、応募者の氏名・住所・連絡先等を暗号化するとなると相当な計算量となります。当初は暗号化処理を「DBサーバ上にストアドプロシージャ」として実装する予定でした(ストアドプロシージャとは、データベースに対する一連の処理をまとめた手続きにして、データベース管理システムに保存したものです)が、検討の結果、暗号化処理をAPサーバ上で行うことになっています。

    表1「M社のPaasSが提供するサービス」でDBサービスとAPサービスを比較すると、DBサービスは「スケールアウトやスケールアップはできない」と書かれています。これは、1つのシステムには既定の能力をもつ単一のDBサーバしか使えないことを意味しています。本システムでは、特定の日時に処理が集中することが予測されているため、スケールできないサービスに多くの処理を行わせる構成だと、過大な負荷が掛かり、応答時間の遅延やサービス停止を引き起こす可能性があります。一方、APサービスが自動スケールサービスの対象なので、APサーバでは利用の集中によるサービス品質低下を気にする必要はありません。

    したがって、暗号化処理をAPサーバ上に実装することにしたのは、キャンペーンサイトが「特定の日時に利用が集中すると見込まれる特性」をもつからだと言えます。

    ∴特定の日時に集中すると見込まれる特性

  • APサーバは、自動スケールサービスおよびロードバランササービスの対象になっているので、処理量が多くなったときでも、自動スケール&負荷分散によりCPU負荷を一定値以下に抑えられます。能力に上限があるDBサーバの計算量を少なくし、APサーバの計算量を増やすことで、ピーク時に処理可能な利用者数を増加させることが可能となります。

    ∴利用者の増加に対応できる

設問2

本文中のaeに入れる適切な数値を求めよ。

解答例・解答の要点

a:84,000
b:8,000
c:11
d:3.24
e:4,000

解説

表2・表3の情報から必要となるサーバの台数と費用を試算する問題です。数値の意味をしっかり理解して冷静に計算すれば解ける問題ですが、計算量は多めです。

aについて〕
Webサーバに求められる18:00~22:00の時間帯の1秒当たりの命令実行数が入ります。
18:00~22:00の時間帯の1秒当たりの(Webサーバ上での)命令実行数を、「新商品紹介機能」と「プレゼント応募受付機能」に分けて考えます。
新商品紹介機能
1秒間に800トランザクション(=800TPS)が実行され、1トランザクションあたり80百万命令を必要とします。したがって1秒当たりの命令実行数は、
●800[TPS]×80[百万命令]=64,000[百万命令/秒]
プレゼント応募受付機能
1秒間に500トランザクション(=500TPS)が実行され、1トランザクションあたり40百万命令を必要とします。したがって1秒当たりの命令実行数は、
●500[TPS]×40[百万命令]=20,000[百万命令/秒]
この2つを合算して、

 64,000+20,000=84,000[百万命令/秒]

と求められます。

a=84,000

bについて〕
1台のWebサーバが実際に処理できる命令実行数が入ります。
表1の「Webサービス」行を見ると、Webサーバは1台につき10,000MIPS相当のCPU処理能力があると書かれています。本文中には、トランザクション処理に使用できるのはWebサーバ1台の能力の80%という条件があるので、このWebサーバ1台の実際のトランザクション処理能力は、

 10,000MIPS×0.8=8,000MIPS

であるとわかります。MIPS(Million Instructions Per Second)は、1秒間に処理できる命令実行数を百万単位で示したものですから、1秒間に処理できる命令実行数は8,000百万命令です。

b=8,000

cについて〕
トランザクションを処理するために必要なサーバの台数が入ります。
84,000[百万命令/秒]のトランザクションを8,000[百万命令/秒]のWebサーバで処理するので、トランザクション処理に必要なWebサーバの台数は、

 84,000÷8,000=10.5台

と求められます。サーバ台数に小数が入るのはおかしいので、小数点以下第1位を切り上げて11台とします(10台では処理能力不足なので)。

c=11

dについて〕
DBサーバのデータ転送量が入ります。
表2を見ると、DBサーバの転送はプレゼント応募受付機能でしか発生せず、1トランザクション当たりのデータ転送量は10kバイトと書いてあります。18:00~22:00の時間帯で、「プレゼント応募受付機能」は1秒間に500トランザクション(=500TPS)発生するため、1秒当たりのデータ転送量は、

 10[kバイト]×500[TPS]=5,000[kバイト/秒]=5[Mバイト/秒]

と求められます。18:00~22:00は4時間、すなわち「3600×4=14,400秒」なので、この時間帯の総データ転送量は、

 5[Mバイト/秒]×14,400[秒]=72,000[Mバイト]=72[Gバイト]

と求められます。

同様に18:00~22:00以外の時間帯で、1日にどれだけのデータ転送量があるかを計算します。1日のうち"それ以外の時間"は「3,600×(24-4)=72,000秒」なので、トランザクション数50TPSを乗じて、

 10[kバイト]×50[TPS]×72,000[秒]=36[Gバイト]

したがって、9月中における1日分のデータ転送量は、

 72[Gバイト]+36[Gバイト]=108[Gバイト]

9月は9/1~9/30まで30日間あるので、1か月分のデータ転送量は、

 108[Gバイト]×30[日]=3,240[Gバイト]=3.24[Tバイト]

d=3.24

eについて〕
データ転送にかかる料金を求めます。
9月のデータ転送量は3.24Tバイトであり、表1にDBサービスのデータ転送量は、1Tバイト当たり1,000円であると書かれています。ここで注意することは、表1の注記に「…1Tバイトなど各単位に満たないものは全て切り上げて計算する」とあるので、3.24Tバイトは4Tバイトとして料金を計算しなければならないことです。

 4[Tバイト]×1,000[円/Tバイト]=4,000[円]

e=4,000

設問3

本文中の下線③について,コンテンツの配信方法をどのように変更したのか。30字以内で述べよ。

解答例・解答の要点

コンテンツをWebサーバでキャッシュして配信する (24文字)

解説

〔システム運用開始後の問題と対策〕の中で「ストレージサービスからWebサーバへのコンテンツの転送に想定以上の時間を要している」ことが問題であると分析されていることから、解決のためにはストレージサービスからWebサービスへのデータ転送量を減らすことが求められます。

「同じコンテンツが複数回利用される場合」には、最初のみストレージサーバからWebサーバにデータを転送し、2回目以降はWebサーバ内に保管したデータをクライアントに転送するという、いわゆる「キャッシュ」の仕組みが有効です。Webサーバ上で、さらにバックエンドに位置するサーバに対してキャッシュメカニズムを働かせる機能は、WebキャッシュやHTTPキャッシュなどと呼ばれ、クライアントに同じHTTPレスポンスを返すことが多いシステムでは強力な負荷軽減策となります。模範解答は「コンテンツをWebサーバでキャッシュして配信する」です。

∴コンテンツをWebサーバでキャッシュして配信する

Pagetop