障害対策の技術用語

前回のRASISについて調べた時の、それ以外のメモです。

こういった用語は普段使わないし、既に感覚として理解しているものもありますが、きちんと知っておくのも悪くないなと思います。



ACID特性

主にデータベースにおいて、トランザクション処理に求められる特性。

Atomicity(原子性)

データの処理が「完了」か「未実行」のいずれかで曖昧さがない

Consistency(一貫性)

データの矛盾がない。整合性を満たす

Isolation(独立性)

処理間の依存関係がない

Durability(永続性)

処理結果が完全に保護される

CAP定理

Consistency

データの一貫性を保つ

Availability

システムの可用性を保つ

Partitions

システムを分散させる

この3つのうち、同時には2つしか実現できないということを証明したもの。

超並列分散処理を行うパブリック・クラウドにおいては、可用性を確保する代償として、データの一貫性を犠牲にすることでCAP定理を満たしている。
(Consistencyは満たせそうだが厳密な意味では満たせない)

BASE特性

Basically Available

システムの可用性を最優先する一方、

Soft-state

一時的に一貫性のない状態を許容し、

Eventual consistency

即時ではなく最終的にすべてのデータの整合性をとることで

システム全体が一貫した状態になるような特性のこと。

新・ACID特性

GoogleのGregor Hohpe氏は、クラウドにおけるACIDは次のような意味になると言った。

  • Associative (結合の)
  • Commutative (相互の)
  • Idempotent (べき等の)
  • Distributed (分散の)

  • 詳しくは
  • Into the Clouds on New Acid – Enterprise Integration Patterns
  • [PDF] Programming the Cloud: the Inernet as Platform

  • 障害対策

    Fail Soft

    故障時にシステム・ダウンをさせず、部分的な機能低下に留める。リトライ機能、バッファ・クリア機能、ソフトウェア・イニシャル機能の導入

    Fail Safe

    故障時に常にシステムを安全に稼動させる。フェイル・マネージャ機能、リカバリー・ソフトの導入。ウォッチドック機能の強化。

    Fault Avoidance

    障害そのものをなくそうとする考え方

    Fault Tolerant

    故障しにくいよう、システムに冗長性を持たせる。バッファサイズの拡張、デュアル・システム化など

    Fool Proof

    不特定多数の使用者がいるプログラムで意図しない使用をされても、故障しないように工夫すること

    保守対策

    バージョン・アップ

    ソフトウェア機能改善・修正版のインストール機能。システムを停止することなく実施可能とする

    エラーロギング

    エラー内容の記録と表示

    自己診断

    起動時やメンテナンス・モード時に起動させ、システム状況を確認する

    検査モード

    検査コマンド等でシステムを任意にテスト可能とする

    バスタブ曲線

    ハードウェアのライフサイクルの概念



    初期故障期

    装置の使い始めの故障で時間と共に減っていきます

    偶然故障期

    装置の安定時期で、故障はあまり発生しません

    磨耗故障期

    ある程度の時間が経過した時に故障が増えていきます



    SSDやioDriveだとバスタブ曲線の概念と異なるので時代の流れですね。

    常に現場で学んできた私としては、障害関連をまとめると
     『できるだけ迷惑がかからないよう努めて、終わり良ければ全て良し』
    であながち間違っちゃいない気がしますが、

    こういった概念や定義を、経験に当てはめて考えなおすとまた面白いですね。
    (先に概念の勉強だけしてもつまらなそう・・・)