さんごー日記。

映画や本やゲームの感想をゆるく記録したり、プログラミングの勉強をゆるく記録するゆるい日記です。

応用情報処理技術者試験の過去問題を解きながらメモ。21日目。

応用上処理技術者試験の過去問題を解きながらメモしていきます。

今日は午後の問題の5問目から見ていきます。

午後の問題は全部で12問あり、そのうち6個を選択して答える事になります。

今はお勉強なので12問全部見ながら、試験でどの問題を選択するかをあらかじめある程度決めておけるようにしたいと考えています。

 

 

ロードバランサを用いた負荷分散に関する出題

この問題もまたもやもやする内容でしたので、違和感を覚えた所を先に書いておきます。

 

DNSやロードバランサなどによるネットワーク構成図が示されます。

前提となるネットワーク構成に関して、例えばこんな問題が出題されます。

 

「プライマリとセカンダリのDNSが同一の結果を返せるようにするために、何をすれば良いか」

 

その回答例が以下のような内容です。

 

「プライマリからセカンダリに情報をコピーしておく」

 

これ、普通の人はすんなり出てくる答えなのでしょうか?

なんというか、あまりにも分かり切った事すぎて逆に出てきませんでした…

これじゃ「同じ情報を返すようにするために、同じ情報を返すようにしておく」と言っているようなものではないのか。

トートロジーってやつですよね。それって答えと言えるのかな?

業務上で必要になる答えではないですよね。

 

業務で求められるのは、「どうやって運用のミスや負荷なく情報を同一に保っておけるか」という事であって、自動化する仕組みとかがあるのかなーと思ってしまったじゃないか。

愚痴をこぼしても試験に合格できるわけではないので、応用上処理技術者試験というのはこういうモノなのだと考えておくしかないのですけれど。

 

気を取り直して、DNSやロードバランサ周りで自分が把握できていなかった部分を調べておきます。

 

あらためて、ロードバランサとは何か

いちおう知っているつもりですが、改めて基本的な事をおさらいしておきます。

ロードバランサというのは複数のWebサーバーにアクセスを振り分ける事で負荷を分散する機器の事です。

ロード(load)は「負荷」という意味の英単語です。「道」(road)ではありません。

 

ロードバランサに集約されたアクセスを、配下のサーバーの指定したIPアドレスとポートに対して割り振っていきます。

これを実現している機構をNAPT(Network Address and Port Translation)、日本語読みでナプトと呼ぶそうです。

この最も基本的なロードバランシングの仕組みの事をレイヤー4ロードバランシング(L4)と呼び、その機器のことをL4スイッチなどと呼びます。

 

ポートの解析を含まずHTTPヘッダの解析までを行う物をL3スイッチ、アプリケーション層の解析まで行うものをL7スイッチと呼びます。

ここで言っているレイヤーというのはTCP/IPのプロトコル回想に対応しています。

 

負荷分散アルゴリズム

ロードバランサによる負荷分散の仕組みは一つではなく、分散アルゴリズムというものがいくつか存在しています。

機器ごとに特徴があったり、設定できたりすると思うので、それぞれアルゴリズムの特徴を覚えておいて、状況に応じて最適な機器やアルゴリズムを選択していくことになります。

分散アルゴリズムには以下の種類があるとされています。

 

  • ラウンドロビン … アクセスを各サーバーに順番に割り振っていく方式。シンプルだが負荷の分散性能は低い。
  • ハッシュ … ソースIPを元にしたハッシュ関数を用いて振り分けるサーバーを選択する方式。プロキシ経由など特定のソースIPからのアクセスが多いと負荷が偏る。
  • リーストコネクション … 最もコネクション数の少ないサーバーに割り振る方式。各サーバーの性能差がある場合は処理能力に余裕が無いサーバーにもアクセスが振り分けられてしまう。
  • リーストトラフィック … トラフィックが最も少ないサーバーに処理を割り振る方式。
  • リーストプロセッシング … 負荷が最も低いサーバーに処理を割り振る方式。
  • ファストアンサー … 最も応答が早いサーバーに処理を割り振る方式。
  • L7分散(アプリケーションスイッチ) … HPPTのCookie情報などアプリケーション層の情報をもとに処理を割り振る方式。同一IP、同一ユーザーからのアクセスでもセッションごとにサーバーを割り振る事ができる。

 

L4/L7のパケットシーケンス

L4/L7スイッチがパケットをどのようなシーケンスで処理しているのかが下記のWebページで解説されているので確認しておきました。

ロードバランサの本質(1):パケットフローから負荷分散の基本を理解する - @IT

 

L4/L7の各スイッチで、HTTPリクエストの前やその間に行っている「SYNパケット」や「ACKパケット」の動作まで把握しておくと各スイッチの特徴を把握しやすくなると思います。

HTTPリクエスト/レスポンスに関しては把握していましたが、パケットの流れは知らなかったのでおさらいしておきました。図は上記サイトを見るとわかりやすいです。

以下、言葉だけ確認しておきます。

 

  • SYNパケット … synchronize packetの略。コネクションを確立するためにクライアントから送られるパケット。TCPヘッダのコントローフラグの中のSYNフラグが立っているパケット。
  • SYN+ACKパケット … synchronize + acknowledgement packetの略。SYNパケットに対してACKフラグを立ててクライアントに変身することで、サーバーが応答可能であることをクライアントに伝える。SYNフラグとACKフラグが立っている。 
  • ACKパケット … acknowledgement packetの略。SYN+ACKパケットを受け取ったクライアントがサーバーに送信するパケット。このパケット送信後に、HTTPリクエスト文を送信する。

 

 

このSYN~ACKまでの流れで接続を確立する方式の事をスリーウェイハンドシェイクと呼びます。

L4スイッチの場合はこれら3つのパケットをロードバランサが受け取った際に、そのまま振り分け先のサーバーにパケットを転送します。

L7スイッチの場合は、まずSYN~ACKとHTTPリクエストまでをロードバランサ側で止めてから振り分け先のサーバを確定した後に、SYN~ACKとHTTPリエクストをサーバーに送信するというシーケンスになります。

 

 

DNSの冗長化

DNSが死ぬとユーザーからのアクセスがロードバランサにすら到達しなくなってしまうので、DNSの冗長化も可用性を維持するための対策として重要です。

DNSの冗長化について調べておきます。

 

DNSの冗長化はプライマリ、セカンダリのDNSを配置するとう構成を取る事が多いようです。

通常はプライマリDNSが動作しており、プライマリDNSの障害発生時にバックエンドでスタンバイしていたセカンダリDNSに動作を引き継ぐ事でサービスの提供を継続します。

プライマリとセカンダリのDNSの間ではゾーン転送によってレコード情報を同期します。

簡単ですがここでは概要まで。

 

販売管理システムに関する問題

データベースのテーブル設計絡みの問題です。

まずはじめに問題を解いてみた感想からいうと、この問題も前提条件がかなりの部分で曖昧になっています。

答え合わせをしてみて、誤回答の理由を見てはじめて「知られざる仕様」が明らかにされます。

もし実際の仕事でこんな「言わなくても分かるでしょ」的な対応をされたら、次の職場を探し始めるかもしれない…

データベース周りは特に新たに覚えるべきポイントはなかったけど、試験のクセみたいなところは覚えておく必要がありそう。

応用上処理技術者試験の合格率が低い原因ってこういう所にあるのではないだろうかと思う。

 

問題の気になるポイント。なんのデータベースなのかが曖昧

スーパーマーケットの会員のポイントサービスにおける、ポイントサービス部分のデータベースのER図が示され、空欄を埋める問題が出ます。

仕様の重要な部分が空欄になっているので、文章中から拾える情報を使って穴を埋めていく事になります。

しかし回答を見ると「非会員の売り上げデータも含まれる」とあります。回答でそれ言われても遅いですよね???

ポイントサービスは会員サービスなのに、非会員の売り上げデータも含まれるとは、こんなのどうしたら想像できるのか?

ポイントサービスのデータベースではなく、実際には全体の売り上げを管理しているデータベースだったようです。

 

試験が始まる前に仕様に関する打ち合わせをさせてもらいたい。

だいたいなんでER図の穴埋めなんてやらなきゃいけないのか分からない。

自分が設計するならまだしも、他人が考えた仕様を想像して答えるなんて実際の業務ではあり得ない事なんだが…

 

問題の気になるポイント。「効率」が何のことか分からない

設問の文章中に「効率よく行うためには」という言葉が使われているが、この表現がまた曖昧で困る。

データ効率のことをなのか時間効率のことなのかで答えが変わってきてしまう。

問題として欠陥があるのではないでしょうか…

 

回答の説明では「時間がかかってしまうので…」という表現が使われていたので、応用情報処理技術者試験における「効率」とは「時間的効率」の事を指すのだと、とりあえず認識しておこうと思います。

 

 

今までぼんやり把握していたつもりのロードバランサの動作をおさらいできたり、応用上処理技術者試験の特徴みたいなものが少し見えてきて良かったです。

今日は以上です。

 

 

平成29年度のに対応した過去問題集はこちら。

応用情報処理技術者試験は、その時その時のトレンドを取り入れた問題が出題されます。最新の情報をチェックしておくと良いでしょう。 

平成29年度【春期】応用情報技術者 パーフェクトラーニング過去問題集 (情報処理技術者試験)

平成29年度【春期】応用情報技術者 パーフェクトラーニング過去問題集 (情報処理技術者試験)