A社の佐伯さんがのらりくらりと

A社の佐伯さんがのらりくらりと。インターネットと少しだけ生活のこと。

うろ覚えだった知識をまとめてみたよ【コンピューターシステム編】

学習エントリ。 全体的な知識の底上げをすべく、復習も兼ねてまとめてみる。

システムの形態の分類

処理形態による分類
  • バッチ処理:データをある程度蓄積、指定した時点で一括処理。途中で人間による入力を行わない。大量のデータを一括で処理。月ごとの売上計算や、毎日の集計などで使う。
  • オンライントランザクション処理:データが発生するその都度処理を行う。処理すべきデータは通信回線で送る。電車の座席予約、銀行のATMなど。
  • リアルタイム処理:センサの信号に瞬時に反応する。ロボットなど。
分担形態による分類
  • 集中システム:コンピュータセンタに汎用機を設置して、すべての処理はそこで行う。拠点にはアクセス端末がある。センタのみ管理すればいいので、セキュリティ、運用、データ管理は比較的容易だが、障害発生時にシステム全体が停止する。
  • 分散システム:処理を行うコンピュータを各拠点に設置。拠点間を通信回線で接続。障害発生時に影響が局所化されるのはいいことだが、運用、データ管理、セキュリティ管理が比較的困難。
  • クライアント・サーバシステム:分散システムの一部。処理を行うサーバと処理の依頼を出すクライアント。
クライアント・サーバシステム

以下例 * ファイルサーバ:ファイル管理、共有 * データベースサーバ:DB管理とアクセス * プリントサーバ:プリンタの共有とか * Webサーバ:要求に応じて処理(HTML返すとか) * メールサーバ:メールの送信 * DNSサーバ:ホスト名に合わせたIPアドレスを送信

3層クライアント・サーバシステム

3層アーキテクチャとも言う。普通のウェブアプリケーションシステムはこれっぽい。MVCみたいなものかも。 * プレゼンテーション層:ユーザインターフェースに関わる部分。データの入力とか結果の出力とか * ファンクション層:業務ロジックやデータ加工 * データ層:データベースへのアクセス処理

システム性能を測る

MIPS

Million Instructions Per Second その名の通り一秒間に実行できる命令数を百万単位で表す指標。 たとえば一秒間に100,000,000回命令を実行できるCPUのMIPS値は100である。

FLOPS

FLoating point Operations Per Second 一秒間に実行できる浮動小数点演算の回数を表す。スパコンの性能などを測るために使う。

スループット

単位時間あたりに処理されるコンピュータの仕事の量

レスポンスタイムとターンアラウントタイム
  • レスポンスタイム(=応答時間)はコンピュータに処理の指示を出してから、結果の表示が始まるまでにかかる時間。オンライントランザクション処理システム、クライアント・サーバシステム、リアルタイム処理システムの性能を測る用途で使われる。
  • ターンアラウンドタイムは、入力を開始して結果の出力が完了するまでにかかる時間。例えばデータをDVDに書き込み、郵送でコンピュータセンタに送るとすると、帰ってくるまでのその郵送時間(システムの要素とは無関係)もターンアラウンドタイムに含まれる。主にバッチ処理システムに使われる。
ベンチマークテスト

測定用のソフトウェアを使用し、システムの処理性能を相対的に数値化

システムの信頼性を測るもの

RASIS

R:Reliability(信頼性):壊れにくいか A:Availability(可用性):正常に利用できるか S:Serviceability(保守性):保守・修理がしやすいか I:Integrity(安全性):不整合は発生しにくいか S:Security(機密性):情報の漏洩や改ざん、破壊の対する強さ

MTBFMTTR

MTBF(Mean Time Between Failure):信頼性を測る。システムが故障すること無く動作する時間の平均値。 MTTR(Mean Time To Repair):保守性を測る。修理に要した時間の平均値。

ちなみに可用性は稼働率で表せる。 稼働率 = MTBF/MTBF + MTTR また、故障率は 1/MTBF

バスタブ曲線

当たり前だけど故障率は時間の経過に伴って変化する。それをグラフ化したもの。システム運用初期段階は初期トラブルで故障率は高い傾向にある(初期故障)。その後は安定化する。この時の故障は偶発故障。システムの終末期は劣化、いわゆる寿命による故障が多くなる(摩耗故障)

複数の装置から構成されるシステムの稼働率

全体のシステムの稼働率は、各装置の稼働率を掛け合わせる

直列システム

システムを構成する複数の装置が正常に動作しているど、全体が正常に動作できるシステム。稼働率は単純に各装置の稼働率をかければよい。

並列システム

直列と違い、何台かが動いていれば問題なく動作する。 パターン①:すべてが停止してなければ(少なくとも1台動いていれば)よい場合 稼働率 = 1 - (全体が停止している確率)

パターン②:上記以外 全てのパターンの確率を合計する。

高信頼化技術

信頼性の高いシステムはフォールト・トレランスやフォールト・アボイダンスという考え方にもとづいて構築する必要がある。 信頼性の高いシステム=24時間365日動き続け、故障しにくいシステム

フォールト・トレランス

障害が発生してもシステム動作を継続できるよう対策しよう!という考え方。 同じ役割の装置を複数用意し一つが故障しても残りで代替できるもの。こんな感じの構成を冗長構成という。

冗長化いろいろ

デュプレックスシステム:本番系と待機系を用意。通常は本番系を稼働。本番系に障害が起きた場合、待機系に切り替える。 デュアルシステム:複数系統を同時に稼働させる。お互いを常にチェックしている。障害発生時には診断プログラムを走らせて障害部分を特定、それを切り離し動作を継続。デュプレックスシステムよりも信頼性は高い(=壊れにくい)。

デュプレックスシステムには3つの待機システムがある ホットスタンバイ:利用者が気づかんくらいの時間で待機系に切り替える。本番系と同じOSやアプリケーションを常に最新にしてるから。 コールドスタンバイ:切り替えに時間がかかる。本番系と同じOSやアプリケーションをまずインストールする必要がある。 ウォームスタンバイ:↑ふたつの中間

フォールト・アボイダンス

各装置の故障率を低くして、そもそも障害を無くそうよ、という考え方。結構コストが高くなる。

それ以外

フェールセーフ:故障時にシステムを出来るだけ安全な方向へ!(システム停止もやむをえない) フェールソフト:故障した部分は切り離す。機能を低下させてでも、システムの動作の継続を優先 フールプルーフ:人為的なミスが無いような設計をしよう!って考え方(もし利用者が誤っても、異常が起きないような作りにしよう) フォールトマスキング:故障しても、それを表面に出さず外部から分からないようにすること。

参考

https://www.amazon.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E3%83%9A%E3%83%83%E3%82%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E5%B9%B3%E6%88%9028%E5%B9%B4%E5%BA%A6-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93-TAC%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E8%AC%9B%E5%BA%A7/dp/4813265545www.amazon.co.jp