# データ耐久性 ## 定義 データ耐久性(data durability)は、信頼性のうち「データの損失や破損を避けること」に関わる側面であり、「サイトを稼働させ続けること」を扱う可用性(availability)とは独立した関心事である。可用性は組織の成長とシステムの成熟に伴い時間の経過とともに改善しやすいのに対し、耐久性はたった1つの間違いが会社の存続を左右しうるという非対称性を持つため、耐久性の高いシステムに関する専門知識を早い段階から構築することが重要になる。耐久性はレプリケーション(バックアップ・非同期/準同期/クォーラムレプリケーション・イレイジャーコーディング)を最低保障としつつ、マルコフモデルによる定量推定(故障率 λ=1/MTTF、リカバリ率 µ=1/MTTR、レプリケーショングループの n 台中 m 台超の喪失でデータ損失とするモデルから、1時間あたりのデータ損失率 R(loss) を導出する)で見積もることができるが、この推定値は理論上の上限値にすぎない。現実にデータを失わせるのは、モデル化・保護が容易な日常的なディスク故障ではなく、「知らないでいることを知らない」(unknown unknowns)相関障害・運用者の操作ミス・ソフトウェアバグである。この現実の脅威に対処するため、耐久性エンジニアリングは分離(物理的・論理的・運用上)・保護(テスト・セーフガード・リカバリ)・検証(エラーゼロの継続的な確認)・自動化(脆弱性のウィンドウの短縮と運用者の疲弊回避)の4本の柱として構成される。(Source: [[@2021__OReillyJapan__SREの探求 - Chapter 17 データ耐久性のエンジニアリング]] p.291, §17.1.2.1, §17.2) ## 横断的知見 - (このセクションは複数ソースの突き合わせで得られる知見を蓄積する。現時点で本概念に集約されているソースは [[@2021__OReillyJapan__SREの探求 - Chapter 17 データ耐久性のエンジニアリング]] の1件のみであり、横断的知見はまだ蓄積されていない。今後、耐久性・データ損失・データ破損を扱う別ソースが ingest された際に本節へ追記する。関連する既存概念([[ハードディスク信頼性]]・[[データセンター信頼性]]・[[イレイジャーコーディング]]・[[RAID]])には、本概念のマルコフモデル・分離/保護/検証/自動化という4本柱の枠組みと接続しうる知見が既に蓄積されており、それぞれの概念ページの横断的知見に本ソースからの視点を追記した。) ## 未解決の問い - 耐久性のマルコフモデル(§17.1.2.1)は個々のディスク故障を独立事象と仮定するが、[[データセンター信頼性]]・[[ハードディスク信頼性]]が集約する実証研究(Google 2007・Microsoft 2010 等)はハードウェア障害の時間的・空間的相関を示している。この相関を組み込んだ場合、9 ナインズ・24 ナインズという楽観的な推定値はどの程度下方修正されるべきか。 - 「知らないでいることを知らない」(unknown unknowns)相関障害を早期検知するための具体的な兆候・テレメトリは何か。本章は分離・検証によってその影響範囲を狭めることを説くが、事前検知の方法論には踏み込んでいない。 - 分離(物理的・論理的・運用上)・保護・検証・自動化という4本柱の投資配分は、企業規模やデータの性質(構造化データか非構造化オブジェクトか)によってどう変わるべきか。本章は Dropbox(エクサバイト規模)の事例を詳述するが、中小規模の組織における適切な投資水準の指針は示していない。 - 耐久性(データを失わない)と可用性(サイトを止めない)がトレードオフになる局面(例: 疑わしいデータをすぐに削除せず「ごみ箱」に留保することで可用性を犠牲にする判断)は、他にどのようなパターンがあるか。 ## 関連 - ソース: [[@2021__OReillyJapan__SREの探求 - Chapter 17 データ耐久性のエンジニアリング]] - 概念: [[ハードディスク信頼性]](マルコフモデルの入力となる AFR・MTTF の実証データ) / [[データセンター信頼性]](障害相関のデータセンター規模の実証研究) / [[イレイジャーコーディング]](レプリケーションのオーバーヘッドを抑えつつ耐久性を高める手法) / [[RAID]](自動化されていない伝統的な冗長化アーキテクチャとの対比) / [[分散ストレージ]](耐久性を実現するストレージ基盤) / [[セルフヒーリング]](自動ディスク修復ワークフローの上位概念) / [[単一リーダーレプリケーション]](レプリカ昇格によるデータ損失のリスク) / [[制御ロールアウト]](ストレージコードリリースプロセスとの対比) / [[クォーラムベースレプリケーション]](密結合レプリケーションのリスク) - 実体: [[James Cowling]] / [[Dropbox]] - 書籍: [[SREの探求]] ## 出典 - [[@2021__OReillyJapan__SREの探求 - Chapter 17 データ耐久性のエンジニアリング]](James Cowling, 「データ耐久性のエンジニアリング」, David N. Blank-Edelman(編)『SREの探求』, オライリー・ジャパン, 2021, 17章)