【違いを表で整理!】システムの信頼性、可用性、耐久性、耐障害性、冗長性など、IT関連の「◯◯性」の違いを表にしてまとめて整理

【違いを表で整理!】システムの信頼性、可用性、耐久性、耐障害性、冗長性など、IT関連の「◯◯性」の違いを表にしてまとめて整理 プログラミング
スポンサーリンク

AWS認定など、IT関連の勉強をしている際には、

「耐久性は99.999999999%、可用性は99.99%の高い堅牢性を誇る」

だとか、

「耐障害性を向上させるため、冗長性の確保が必要」

だとか、

「◯◯性」という用語がたくさん出てきます。

信頼性、可用性、耐久性、耐障害性、冗長性、堅牢性、保守性、保全性、安全性、結果整合性、読み取り一貫性などエトセトラエトセトラ・・・

どれもないよりはある方が、低いよりは高い方が、なんとなく安心で高性能なのはわかりますが、具体的にはどう違うのか、初学者の方はなかなか迷うのではないでしょうか。

これらをある程度使い分けないことには、正しい理解は出来ませんし、資格試験でも業務でも支障をきたすこと間違いありません。

しかも、あまり違いをはっきり解説してくれているサイトが見つかりませんでした。
(信頼性と可用性、可用性と耐久性など、2者を比較解説してくれるサイトはちらほら見つかるのですが・・・)

そこで、これらの違いを表に整理しました。



<比較表>システムの「◯◯性」一覧(+それぞれの違い)

出来ればパソコンで御覧ください。

用語定義単位違い(解釈)
1.信頼性(Reliability)
= 平均故障間隔
= Mean Time Between Failures
障害の発生のしにくさ」のこと。具体的には、システムやサービスが使えなくなる頻度やその間隔を示す指標。時間
or
%
システムの連続稼働時間が長いほど優秀。
(故障した際にどれだけ復旧に時間がかかるかは問わない)
2.可用性(Availability)
= 稼働率(稼働時間)
システムやサービスが利用できる時間の割合」のこと。
使いたい時に使える確率。
%システムの停止時間が少ないほど優秀
(あくまで稼働時間と停止時間の割合なので、頻繁に壊れても瞬く間に復旧するなら高可用性と言える)
3.耐久性・永続性(Durability)
= データ持続性
データの平均年間予測存続率。
1からAFR(年間故障率)を引いた確率。
%
/年
ストレージやDBの文脈で使用する、データを失わない確率
保全性・完全性(Integrity)に近いが、Integrityとは異なり、耐久性・永続性は数値で表現可能。
4.耐障害性
= フォールトトレランス(fault tolerance)
1.どれだけ障害に備えてあるか
2.障害耐性を高める仕組み
3.障害発生時に機能制限なしで動かし続けるための仕組み
AWSでは3の考え方。すなわち「たとえ障害が発生したとしてもサービスレベルアグリーメント(SLA)を守り続けられる構成」のこと。
概念のみ問題が起こったとしても、自動で復旧し、100%のサービスを維持する仕組みのこと。
問題が起こる前提(= Design for Failer)で考えるため、単一障害点(= SPOF)を排除する。復旧後に少しでも使いにくくなるならそれは耐障害性があるとは言えない。
5.障害回避
= フォールトアボイダンス(fault avoidance)
問題を発生させないための備え。
具体的に何を指すかは、結構あいまい。
概念のみそもそも、問題が発生しないための仕組み
Design for Failerが前提のAWSでは出てこない概念。
6.冗長性(Redundancy)
= 多重性
コンピューターやシステムに障害が発生した場合に備えて、冗長な(=無駄な)予備装置を普段から配置、運用すること。
「普段は無駄だけどいざという時に活躍する」そんな奴がいれば、それは冗長性があると言える。
概念のみ単にバックアップと言った場合は、自動的に短時間で復旧する(切り替わる)場合のみ、冗長性があると言える。
もちろん、冗長性があれば、信頼性や可用性の向上に寄与する(ただし、同じ意味ではない)。耐障害性の必要条件となることも多い(これも、同じ意味ではない)。
7.堅牢性堅いこと、丈夫なことなどを意味する表現。ハードウェアなどが丈夫で壊れにくい設計になっていることや、予期しないエラーや障害やセキュリティ上のリスクなどに柔軟に対応できること、などを幅広く指す。概念のみ丈夫で壊れにくいという、幅広い、曖昧な概念
信頼性や可用性、耐障害性が総じて高いことを表現している。
8.保守性(Serviceability)
= 平均修理時間
”障害復旧(メンテナンス)の容易さの度合い”のこと(Coming soon)
9.保全性・完全性(Integrity)”情報が矛盾を起こさずに一貫性を保てる度合い”のこと概念のみ耐久性・永続性(Durability)と異なり、概念のみ。
10. 安全性・機密性(Security)”情報の外部流出の起きにくさの度合い”のこと概念のみ(Coming soon)
11. 結果整合性
= 結果整合性モデル
= 結果整合性のある読み込み
「更新はそのうち全体に反映される」
データの保存や変更の直後に別のプロセスからアクセスを試みると、保存前や変更前の状態に見える可能性がある
有無データの更新の際にDBをロックすることによってデータの一貫性(Consistency)を担保するが、その間他の人はDBにアクセス出来ないため、可用性(Availability)を犠牲にすることになる。
12. 強い一貫性(Strong Consistency)
= 強い整合性のある読み込み
= 強力な整合性のある読み込み
= 強整合性
= 読み取り一貫性(Consistent Readオプション)
あるデータの追加や更新が行われれば、その直後から必ず追加後や更新後の状態が取得できるようになる。
更新が反映された最新データの応答を返す。
ただし、ネットワークの遅延または停止があった場合には利用できなくなる可能性あり。
有無データの更新時DBがロックされることはないため可用性とスケーラビリティを維持できるが、その代わりノード間でのデータの一貫性はデータ複製にかかる時間に依存することになるため、必ずしも担保されない。
  • 似たような表現は、まとめて「用語」(最左列)に記してあります。同じ概念で表現が異なるだけとご理解ください。
  • 参考文献から色々引っ張ってきて加工しております。文献そのままの表現が一番わかりやすいと判断した場合はコピペのものもありますがどうか許してください。
  • 正確性にかける表現がございます。「違い」がわかることを重視しているため、その目的を果たせる範囲であれば、その点もご容赦いただけると助かります。
  • 耐久性・永続性(Durability)と保全性・完全性(Integrity)の違いがあまり自信ないです。どなたかご意見をお持ちの方、ご教授いただけると嬉しいです。

おそらく、はっきりとした違いが議論されていない用語は、きっと同じ文脈で出てくることがないのだと推察しています。同じ土俵に上がってくることがないのに、あえて同じ土俵で比べるからよくわからないことになっているのかもしれません。だけど、だったらなおさら「明確な違い」があるはずで、説明できるはずですよね? 今回、それにチャレンジしてみた、という形です。

例えばデータベースとストレージ、どちらもデータを保存するものですが、ズバッと違いを説明できるでしょうか? どちらも慣れ親しんでいる方にとっては、「いや、そもそも役割が違うじゃん、比べるもんじゃないよ」と思われるかもしれませんが、学生さんやお子さんに聞かれたらなんて答えますか?

今回も、そんなチャレンジでした。

信頼性・可用性などの「◯◯性」をまとめた表現

この◯◯性をまとめた表現もあるみたいです。

RAS/RASISとは

RASは

  • Reliability(信頼性:壊れにくさ)」
  • Availability(可用性:使用可能状態の維持の度合い)
  • Serviceability(保守性:維持管理のしやすさ)

RASISは

  • RAS +
  • Integrity(保全性・完全性:データがおかしくなっていないこと)
  • Security(安全性・機密性:使って良い人以外が使えないこと)

だそうです。表でいうところの1, 2, 8, 9, 10です。

8, 9, 10はわかりやすいですが、1, 2(信頼性と可用性)の違いが知らない人にとっては「?」となるポイントですね。信頼性と可用性の違いについては既に多くの記事で述べられているので、足りない方は追加でGoogle先生に聞いてみてください。

ACIDとは

  • Atomicity (不可分性・原子性)
  • Consistency (一貫性)
  • Isolation (独立性)
  • Durability (永続性)

エラーや停止が発生した場合でもデータの有効性を保証するためのデータベーストランザクションに必要な品質。一般に、リレーショナルデータベースに必要な要素です。

リレーショナルデータベースって何?という方はこちらでわかりやすく解説しています。

ACIDについては、まだDurabilityしか上記の表に入れていません。違いが重要な場面に遭遇したら、追加したいと思います。

参考文献

どのサイトも非常に参考になりました。この場をお借りしてお礼申し上げます。ありがとうございました。

信頼性と可用性は何が違う?:https://active.nikkeibp.co.jp/atclact/active/17/030800250/030800007/

信頼性と可用性の違い:https://bongineer.net/entry/rasis/

冗長化と可用性:https://www.networld.co.jp/sp/learn_first/storage/p08_09.html

クラウドの耐久性とは:https://www.joho-manage.com/article/047/

AWSの高可用性と耐障害性をまとめてみる:https://qiita.com/hz1_d/items/ca24e1d131bf475e23b1

「高速・堅牢・低コスト」サーバーの悩みは「S3」で解決!!:https://www.oro.com/ja/technology/004/

weblio辞書「堅牢性」:https://www.weblio.jp/content/%E5%A0%85%E7%89%A2%E6%80%A7

wikipedia「ACID」:https://nipponkaigi.net/wiki/ACID

「分かりそう」で「分からない」でも「わかった」気になれるIT用語辞典:https://wa3.i-3-i.info/

結果整合性について:https://izumisy.work/entry/2018/06/11/224719

システムの信頼性、可用性、耐久性、耐障害性、冗長性などの違いまとめ

みなさまの疑問は解決したでしょうか?

言葉というのは、時代と共に変わってゆくものです。

また、正確性にかける表現があるかもしれませんので、コメントいただけたら嬉しいです。

また、今プログラミングを勉強されている方は、プログラマーを目指している方も多いかもしれません。私も未経験からプログラマーになりました。その経験から、プログラマーを目指すことに意味があるのか、気になる方はこちらも合わせて御覧ください。

「AWSの資格に興味があるのだけれども、IT業界の経験が浅すぎて何から手をつけて良いのかわからない・・・」そんな方は、この記事を参考にしてみてください。

はるすと
はるすと

最後まで読んでくださってありがとうございました!

画像提供:Gerd AltmannによるPixabayからの画像

この記事を書いた人
こもれびエンジニア

自然と自由を愛するエンジニア。2021年1月に、大手製造業設計からプログラマ(Rails, AWS)へ転職。動物や自然との触れ合いや、汗を流すのが好き。

/HSP(繊細さん)/18デリケートな象/ストレングスファインダー(1分析思考/2親密性/3学習欲/4調和性/5収集心)、テニス、合気道、登山、あいだみつを、ジブリ、ワンピース、ドラゴンボール、AWS、Ruby on Rails、アイミング

twitterをフォローして、記事にならないちょっとした豆知識もチェック!
プログラミング
スポンサーリンク
SNSでシェア/コメントして、自分のアウトプット/発信力を高めるのにお使いください。 ↓ 各ページへジャンプ ↓
twitterをフォローして、記事にならないちょっとした豆知識もチェック!
スポンサーリンク
「そんなか」サイト

コメント

タイトルとURLをコピーしました