システムの信頼性と稼働率

```故障しやすく、復旧に時間がかかるシステムは信頼性が低い```と言える。
稼働率というのはそうしたトラブルのない、無事に支えていた期間を割合として示すもの。
稼働率の計算に用いる```平均故障間隔(MTBF)```や```平均修理時間(MTTR)```などともに信頼性を表す指標として用いられる。

# RASIS（ラシス)
RASISはシステムの信頼性を評価する概念のこと。
またその概念の要素の頭文字からなっている。
```Relibality(信頼性)```、```Avilability(可能性)```、```Serviceability(保守性)```、```Integrity(保全性)```、```Security(安全性)```

### Relibality(信頼性)
* ```システムが正常に稼働している状態```にあること。
  故障せずに稼働し続けている方が良い。指標値として```MTBF```がある。

### Avilability(可能性)
* 必要な時にいつでも利用できる状態にあること。
  システムが導入されてからの全運転時間中、正常稼働できていた時間が長いほど良い。指標値として```稼働率```を用いる。

### Serviceability(保守性)
* 故障などの障害発生時に、```どれだけ早く発見、修復が行えるか```ということ。```修復に要する時間が短いほど良い。```指標値として```MTTR```を用いる。

### Integrity(保全性)
* 誤作動がなく、```データの完全性が保たれていること```。データが破壊されたりすると悪い。

### Security(安全性)
* 不正利用に対して```システムが保護されている```こと。機密性ともいう。

# 平均故障間隔（MTBF: Mean Time Between Failure)
故障と故障の間隔を表すもの。故障していない時間とは問題なく普通に稼働できている時間のこと。
「平均すると、何時間（何日、何週間、何か月、何年）に1回故障してるの？」のこと。

もう少し真面目ぶって書くと
1回故障してから次に故障するまでの時間（間隔）の平均値
...
平均故障間隔は
```動いていた時間の合計 ÷ 故障回数```になる。

出典 https://wa3.i-3-i.info/word15646.html

### 気づき
信頼性の指標なのか。

# 平均修理時間(MTTR： Mean Time To Repair)
```修理に必要な時間```を表すものです。
修理時間としてこれぐらいは```システムが稼働できない時間```を示している。
```故障時間の合計 ÷ 故障回数```になる。

この```時間が短いほど保守性の高いシステム（保守がしやすいという意味）```だと言える。

### 気づき
保守性の指標なのか。

## MTTRを短くするためには
エラーログ取得機能を使う。
これを使うことで```障害の原因を特定する手がかりをつかむ```ことができる。

# システムの稼働率を考える
```正常稼働できていたのはどれくらい```の割合かを表すもの。
この数字が１００％に近いほど、```品質が高いシステム```ということになる。

### 求め方
```平均故障間隔に平均故障間隔と平均修理時間```を足したもので割る。
分子が大きければ良いのか。

# 直列につながっているシステムの稼働率
システムが複数にシステムによって構成されてる場合、全体の稼働率とシステムの稼働率の指標とはまた異なる。

複数のシステムをつなぐ方法には```直列接続と並列接続```がある。

## 直列の接続の特徴
* 片方のシステムに生じたトラブルによってシステム全体に影響を及ぼす

### 直列システムの稼働率
```稼働率A*稼働率B```で求めることができる。

# 並列につながっているシステムの稼働率
並列接続では、片方のシステムが```故障した場合でも、残る片方のシステムで稼働```し続けることができます。

## 並列接続のシステムの故障確率
並列接続が故障するということは、両方とも故障した場合である。
その故障した場合の確率とは

### 一台の故障確率の求め方
```故障確率＝１ー稼働率```で求まる。

### 両方の故障確率の求め方
```全体の故障率=故障確率A*故障確率B```

### 全体の故障率の求め方
```全体の故障率＝故障率A＊故障率B```

#### 気づき
直列では稼働率だけで並列接続は故障率だけが書かれている。
どうしてだろうか？
これから勉強しなければいけない。

# フォールバック（fall back: 縮退運転）
障害が発生した場合に、部分的に使えなくなったり```性能（資源）が落ちたりしても、システムの稼働を維持```する考え方や運用方法。
稼働を維持することが不可欠なシステムで行われ、このようなシステムでは、```故障箇所を切り離したり予備機を稼働```させるなどを自動的に行うように設計する。

# 故障しても耐えるという考え方 フォールトトレラント
壊れても大丈夫なようにと対策を図る考え方を```フォールトトレラント```という。
この考え方の実現方法を以下紹介する。

## フェールセーフ
```安全性を確保する方向で壊れるよう```仕向ける方法。
障害による致命的な問題にまで至らないようにする。
```故障の場合は安全性が最優先```

## フェールソフト
故障した場合は```一部機能を切り離して継続```させる。
しかし
```システムの機能は低下```する。
故障した場合は、```継続性が最優先```

## フールプルーフ
```誤動作しないように安全対策を施しておく```方法。
```意図しない使い方をしても、故障しないようにする```

# もう一つの考え方　フォールトアポイダンス
品質管理などを通じてシステム構成要素の```信頼性を高め、故障そのものの発生を防ごう```とする考え方。

# バスタブ曲線
機械や装置というのはいつか必ず壊れるもの。そうした```故障の発生頻度と時間の関係```のグラフ
## バスタブ曲線図 

https://anzeninfo.mhlw.go.jp/yougo/image/basutabu1.gif

### 初期故障期間
製造初期は、```製造上の欠陥などによる故障率が高く```なります。
この期間は時間の```経過とともに故障率が下がり```ます。

### 偶発故障期間
```故障率がほぼ一定で安定```した状態。
操作ミスなどによる、```突発的な故障が発生する程度```です。

### 摩耗故障期間
```ライフサイクル末期の製品寿命```がきた状態。
装置の摩耗などにより、```故障率が時間とともに増出```します。


# システムに必要なお金の話
システムを評価するにあたってお金の話は避けられない。

### 初期コスト
```システムの導入時```に必要となるコスト

### 運用コスト
```維持管理していくため```に必要なコスト

### TCO
システムに必要となる、これらのコストを全てひっくるめたコスト

# 問題を解いた時の気づき
## 稼働率の求め方
並列接続の稼働率を測るときは、絶対稼働してるのは１００％＝１になる。
それから稼働率を引くとシステムが停止している確率が出る。
それを足し合う。そうすることでシステム全体の停止する確率が出る。
また全体のシステムが絶対動くのが１になる。
それから停止する分を引けば全体の稼働率が出る。

考えずに台数が多ければ稼働率が高いと思った。
しかし台数が多ければ信頼性が高いと言える。
正常に動く稼働率は可用性を求めている。
これの違いだろう。

# 出典
https://gihyo.jp/book/2022/978-4-297-12375-8

https://gihyo.jp/book/2020/978-4-297-11781-8