17章データ耐久性のエンジニアリング
James Cowling(Dropbox, Inc.)
SREは信頼性を第一に考えますが、多くのエンジニアにとって信頼性という用語は可用性、つまり「サイトを稼働させ続けるにはどうすればよいか」を考えることと同義です。とはいえ、信頼性は多面的な関心事で、その特に重要な側面が耐久性、つまり「データの損失や破損を避けるにはどうすればよいか」を考えることになります。
耐久性に関するエンジニアリングは、ユーザーデータを保存する企業にとって極めて重要です。一定期間のダウンタイムであれば大部分の企業が生き残れますが、ユーザーデータの相当な部分を失ってしまうと、生き残れる可能性はほとんどありません。しかし、耐久性の高いシステムに関する専門知識を構築するのは特に難しい課題です。ほとんどの企業では組織の成長とシステムの成熟に伴い、時間の経過とともに可用性が改善していきますが、耐久性に関する1つの間違いが会社の息の根を止める出来事となる可能性もあります。それゆえ、耐久性を損なう現実の脅威と、それにエンジニアが対処する方法を理解するために、早い段階から取り組みに投資することが重要になります。
17.1 レプリケーションは最低保障
データを失いたくなければ複数のコピーを保存すべきです。これについては書籍を読む必要もなかったでしょう。耐久性に関して基本中の基本といえる要件なので、以下ではざっと概観することにします。
17.1.1 バックアップ
データは必ずバックアップします。バックアップの優れている点は、プライマリのデータストアから論理的にも物理的にも切り離されていることです。データベースの状態が失われるか破損する結果となる運用エラーの場合も、おそらくバックアップには影響が及ばないでしょう。理想的にはバックアップは、インフラストラクチャにとってローカルな場所とオフサイトの2か所に保存し、ローカルでの速やかなアクセスおよびローカルの物理的な災害に対する防護の両方を提供する必要があります。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access