情報系のべんきょう

情報系のノートを作ります.ビギナー向けでは無いです.

システム構成<前編>

1.クライアントサーバシステム

クライアントサーバシステムとは,システムをクライアントとサーバに役割を分割することです.

飲食店でいうとホールとキッチンみたいなかんじです.

ユーザに操作されるクライアントは色々な要求をサーバに投げます.クライアントの代わりに処理をしたり情報を渡したりするのがサーバの役目です.

ホールが注文を取ってきて,キッチンが料理を作ってホールに渡すという飲食店のシステムと同じです.

(a)2層クライアントサーバシステム

上で説明したように,クライアント(プレゼンテーション層)とサーバ(データ層)に分けるシステム形態のこと.

(b)3層クライアントサーバシステム

2層よりももう1層細かく分割します.

サーバ側にファンクション層という,データ加工などの処理をする層を追加します.

イメージでは,クライアントとサーバ \times 2の3つにシステムを分割するかんじです.

2層では1つのサーバがデータの受け渡しとデータ処理の両方を行っていたのに対して,3層ではその2つの仕事を2つのサーバで役割分担するんです.

2.システムの構成方式

機器やシステムに冗長性を持たせることで,システム全体の信頼性を向上させる手法をここでは4つ紹介します.

(a)デュアルシステム

dual:二つの,二重の

全く同じ2系統のシステムをどちらも稼働させ,同じデータを処理して結果を互いに照合させます.

片方がトラブルとかで停止したら,もう片方のみで稼働させ,復帰したらもう一度両システムを稼働させます.

(b)デュプレックスシステム

duplex:二重の

同じ系統のシステムを2台用意し,普段は片方を稼働させ,もう片方は待機させておく方式.

本番系のコンピュータに障害が発生したら,予備系にディスクやネットワークを切り替えて運転を継続します.

デュプレックスシステムの中にもホットスタンバイウォームスタンバイコールドスタンバイがあります.

簡単にいうと,予備系システムが待機しているときにどれぐらい準備ができているかです.

ホットスタンバイ

予備系にはいつでも切り替えられます.

本番系のOSやアプリケーションなどをあらかじめ起動させておきます.

本番系に障害が起きたときに予備系に切り替えることをフェールオーバ,本番系が障害から復帰し元の運用形態に戻すことをフェールバックといいます.

障害時の切り替えは最速であるという反面,常に予備系を稼働させているのでコストが高いです.

ウォームスタンバイ

予備系を「ある程度」起動させておき,本番系の障害発生時に予備系に切り替えます.

(ある程度ってなに...)

と初めは思いましたが,どうやらソフトウェアなどによって予備系の起動の仕方は異なるらしい.

コールドスタンバイ

予備系は普段は停止しています.

もっというと,予備系は全く稼働していなかったり,稼働はしているが本番系とは関係ない処理をしている,などの状況があります.

本番系とは完全に独立しているので設計や運用などはシンプルですが,本番系の障害時には切り替えに時間がかかったり,本番系の処理を引き継げないことも多いというデメリットがあります.

(c)ロードシェアシステム

複数の系で一連の処理を行い,負荷を分散させる手法.

一連の処理が停止する可能性は低いですが,障害時には一部の系に負荷が偏るという特徴があります.

(d)クラスタリング

cluster:(ぶどうとかの)ふさ,群れ

クラスタ構成とは,複数のコンピュータがネットワークで接続されており,全体で一つのコンピュータのように振る舞うことです.

クラスタ構成を実現することを クラスタリングといいます.

クラスタ構成にはHAクラスタHPCクラスタがあります.

HAクラスタ(High Availability クラスタ)

可用性向上を目的としたクラスタ構成.

ホットスタンバイによる構成と,複数台のコンピュータにより並列処理を行う負荷分散クラスタがあります.

負荷分散クラスタでは,障害が起きたコンピュータは見捨てて他のコンピュータで処理を続けます.

HPCクラスタ(High Performance Computing クラスタ)

性能向上を目的としたクラスタ構成.

数千ものコンピュータに複雑な計算などを分散させて,スーパーコンピュータのような能力を実現させることが可能です.

まだ続きはあるのですが,長くなりそうなので次の記事に続きます....

参考:アイテックIT人材教育研究部(2020)「2021応用情報・高度共通 午前試験対策書」

性能評価

MIPS(Million Instructions Per Second)

単位時間あたりの処理可能な命令の数(単位は 100万であることに注意)

定義より,MIPS値の逆数(正確にはMIPS \times 100万の逆数)をとると 1命令あたりの実行にかかる時間を算出できます.

例えば 2.5MIPSであるCPUを持つ計算機は,

 2.5 \times 100万 = 250万

なので, 1秒間に 250万命令を実行可能.

そして逆数をとることにより

 \dfrac{1}{2.5 \times 10⁶} = 4 \times 10^{-7}

なので, 1命令あたり 4 \times 10^{-7}秒かかります.

ベンチマークテスト

 \large ベンチマークテスト

性能評価用の特別なプログラムを実行させることで,システムのハードウェアやソフトウェアの性能を評価すること.

代表的なものを紹介します.

1. \large ギブソンミックス

科学技術計算用のベンチマークで,不動小数点演算をさせるらしい.

今はほとんど使われていないとかなんとか.

2. \large コマーシャルミックス

商業分野の事務処理用で使われるベンチマーク

3. \large SPECベンチマーク

SPEC(The Standard Performance Evaluation Corporation)が提供しているベンチマーク

整数演算の性能評価をするSPECintと,不動小数点演算の性能評価をするSPECfpとがあります.

4. \large TPCベンチマーク

TPC(Transaction processing Performance Council:トランザクション処理性能評議会)が開発したベンチマーク

トランザクション処理システムに求められるような性能も評価可能.

保守

 \large キャパシティプランニング

新規システムの開発や,既存システムの改良などの際に行われる作業.

システムに対するユーザの要求を把握し,将来的にシステムに求められるであろうリソースを推定した後,経済性や拡張性を考慮したシステム構成を計画,構築,保守をすること.

システムの構成要素であるリソースの測定を行うことを \large モニタリングともいう.

最後に

この分野の問題は,問題をよく読んで計算をすれば難しくはない印象があります.

ただし,ぱっと見ではかなり複雑で初見だと解けなさそうな気しかしません.

大事なのは \large 問題を熟読すること

計算問題は別の記事で書きます.

参考:アイテックIT人材教育研究部(2020) 「応用情報・高度共通 午前試験対策書」

MTBFとMTTR

MTBFMTTR

MTBF(Mean Time Between Failure):平均故障間隔

システムが故障から復旧してから,次に故障するまでにかかる平均の時間

MTTR(Mean Time Between Repair):平均修理時間

システムが故障したとき,復旧にかかる時間


例えば,MTBF 6MTTR 2の時は下図のようになります.

ここで,青色はシステムが正常に稼働した時間,赤色はシステムが正常に稼働していない時間(以下,異常時間)を表します.

f:id:chankilu23:20201121235501p:plain

図からは明らかですが,

 \rm{MTBF}=\dfrac{\mathbf{正常稼働時間}}{\mathbf{故障回数}} \rm{MTTR} = \dfrac{\mathbf{異常時間}}{\mathbf{故障回数}}

が成り立ちます.

簡単な変形により,正常稼働時間や異常時間をMTBFMTTRから算出も可能.

英語表記はまぎらわしいため,何の略なのか覚える方がよさげ.


稼働率(アベイラビリティ)

全運転時間に対する,正常稼働時間の割合のこと.

平均を考える時には,上図のようにMTBFMTTRが周期的に繰り返されるので, 1周期分のみを考えればよいです.

 1周期分の全運転時間:MTBF+MTTR

 1周期分の正常稼働時間:MTBF

なので,稼働率

 \mathbf{稼働率} = \dfrac{\rm{MTBF}}{\rm{MTBF+MTTR} }

で求まります.


直列系,並列系

次に,稼働率が求まったとして,稼働率 AのシステムXとYを組み合わせたときの全体のシステムの稼働率を計算していきます.

まずは直列系システム.

f:id:chankilu23:20201121200434j:plain

これはとても簡単で,システムXもYも稼働すると考えて,確率をかけ算すればOK!

(稼働率)  = (Xが正常かつYが正常)

 = A²


次に並列システム.

f:id:chankilu23:20201121200513j:plain

こっちはちょいとややこしい.

私は2通りの求め方を知っているので今回はその2つを紹介します.

前提で知っていなければいけないのは,Xが正常か異常か,そしてYが正常か異常かで合計 4パターンの状態があるということです.

(i) 気合で計算する

システムX,Yのいずれかが稼働していれば全体も稼働するので,片っ端から足します.

(稼働率)  = (Xは正常かつYは正常) + (Xは正常かつYは異常) + (Xは異常かつYは正常)

 = A² + A(1-A) + (1-A)A

 = 2A - A²

計算が多いと嫌ですね()


(ii) 余事象の考え

システムX,Yの両方が異常である時以外は稼働する,と考えます.

つまり,全体の確率 1からシステムX,Yが両方異常である確率を引きます.

(稼働率)  = 1 - (Xが異常かつYが異常)

 = 1-(1-A)(1-A)

 = 2A-A²

実際の計算では, 1-(1-A)(1-A)の式が使い勝手が良さそう.

最後に

APでは直列系と並列系が混ざったいわゆる複合系システムというものが出題されるようですがそれは今回は触れません.

そのうち問題演習の記事を書くかも(?)

参考:アイテックIT人材教育研究部(2020)「2021応用情報・高度共通 午前試験対策書」