データベースリライアビリティエンジニアリング

―回復力のあるデータベースシステムの設計と運用

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
308
ISBN
978-4-87311-940-3
原書
Database Reliability Engineering
FORMAT
Print PDF EPUB
Ebook
3,740円
Ebookを購入する
Print
3,740円

テクノロジーの進化に合わせて、データベースもまた進化しています。従来のパフォーマンス、スケーラビリティが重要なことはもちろん、今日ではセキュリティ、インフラのコード化、CI/CD、クラウド活用といったタスクにも取り組んでいかなければなりません。 データベースの本質は、長期的に安定していること。つまりリライアビリティ(信頼性)です。時代とともにアーキテクチャやツールが変わってもこの原則は変わりません。本書はデータベースのリライアビリティを実現するための考え方を「データベースリライアビリティエンジニアリング」と定義して、その具体的な手法を紹介します。
はじめにDBREの基本概念を解説し、サービスレベルの定義と測定、リスク評価と管理、オペレーションの可視化に進みます。そして、データベースを取り巻くインフラストラクチャの構成管理と自動化、バックアップとリカバリ、リリースマネジメント、セキュリティ、ストレージ、アーキテクチャパターンについて踏み込んでいきます。
開発者、システム管理者、データベースの本質を究めてデータベースリライアビリティエンジニアへと進化したいDBAはもちろん、サービスのリライアビリティに関わるすべてのエンジニア必読の一冊です。

目次

序文
訳者まえがき
はじめに

1章 イントロダクション
    1.1 DBREの指針
        1.1.1 データを守れ
        1.1.2 周囲を巻き込め
        1.1.3 骨折り仕事を減らせ
        1.1.4 サーバーの家畜化は時代の流れ
        1.1.5 分業制に囚われるな
    1.2 オペレーションの本質
    1.3 欲求段階説
        1.3.1 生存と安全の欲求
        1.3.2 愛と帰属の欲求
        1.3.3 承認の欲求
        1.3.4 自己実現の欲求
    1.4 この章のまとめ

2章 サービスレベルマネジメント
    2.1 SLOの必要性
    2.2 SLOの指標
        2.2.1 レイテンシ
        2.2.2 可用性
        2.2.3 スループット
        2.2.4 耐久性
        2.2.5 費用対効果
    2.3 サービス目標の定義
        2.3.1 レイテンシ指標
        2.3.2 可用性の指標
        2.3.3 スループットの指標
        2.3.4 費用対効果の指標
    2.4 SLOに基づいた監視とレポート
        2.4.1 可用性の監視
        2.4.2 レイテンシの監視
        2.4.3 スループットの監視
        2.4.4 費用対効果の監視
    2.5 まとめ

3章 リスクマネジメント
    3.1 リスク評価
        3.1.1 不確定要素と複雑性のリスク
        3.1.2 リソース不足とリソースマネジメント
        3.1.3 個人にまつわるリスク
        3.1.4 集団にまつわるリスク
    3.2 どうすればいいの?
    3.3 してはいけないこと
    3.4 実際の作業:はじめの一歩
        3.4.1 リスク評価
        3.4.2 リソースの棚卸し
        3.4.3 優先順位づけ
        3.4.4 リスク管理と意思決定
    3.5 改善のサイクル
    3.6 まとめ

4章 オペレーションの見える化
    4.1 現在の見える化の標準仕様
        4.1.1 見える化をBIのように扱う
        4.1.2 仮想環境におけるクラスタの見える化
        4.1.3 高分解能でのメトリクス収集
        4.1.4 アーキテクチャをシンプルに保つ
    4.2 OpVizフレームワーク 
    4.3 データの入力
        4.3.1 テレメトリ/メトリクス
        4.3.2 イベント
        4.3.3 ログ
    4.4 データの出力 
    4.5 監視の第一歩
        4.5.1 データは安全か
        4.5.2 サービスは落ちていないか
        4.5.3 顧客のサービス体験に痛みが伴っていないか 
    4.6 アプリケーションの計器
        4.6.1 分散トレーシング
        4.6.2 イベントとログ
    4.7 サーバーやインスタンスの計器
        4.7.1 イベントとログ 
    4.8 データベースの計器
    4.9 データベースの接続レイヤ
        4.9.1 利用率
        4.9.2 リソースの飽和点
        4.9.3 エラー
    4.10 データベースの内部構造の見える化
        4.10.1 スループットとレイテンシのメトリクスの見える化
        4.10.2 コミット、再実行、ジャーナリングの見える化
        4.10.3 レプリケーション状態の見える化
        4.10.4 メモリ構造の見える化
        4.10.5 ロックと並行性の見える化
    4.11 データベース内オブジェクトの見える化 
    4.12 データベースクエリの見える化
    4.13 データベースのアサートとイベントの見える化
    4.14 まとめ

5章 インフラストラクチャエンジニアリング
    5.1 ホスト
        5.1.1 物理サーバー
        5.1.2 オペレーティングシステムおよびカーネル
        5.1.3 ストレージエリアネットワーク
        5.1.4 物理サーバーの利点
        5.1.5 物理サーバーのコスト
    5.2 仮想化
        5.2.1 ハイパーバイザ
        5.2.2 並行性
        5.2.3 ストレージ
        5.2.4 実際のケース
    5.3 コンテナ
    5.4 DBaaS(サービスとしてのデータベース)
        5.4.1 DBaaSへの挑戦 
        5.4.2 DBREとDBaaS
    5.5 まとめ

6章 インフラストラクチャマネジメント 
    6.1 バージョンコントロール
    6.2 データベースインフラ設定の定義
    6.3 データベースインフラ設定とビルド
    6.4 データベースインフラ設定の管理
        6.4.1 設定定義の実行
    6.5 インフラストラクチャ定義とオーケストレーション
        6.5.1 モノリシックなインフラストラクチャ定義
        6.5.2 垂直的な分割
        6.5.3 水平的な分割
    6.6 テストとコンプライアンス
    6.7 サービスカタログ
    6.8 すべてを1つに
    6.9 開発環境
    6.10 まとめ

7章 バックアップとリカバリ
    7.1 基本的原則
        7.1.1 物理VS論理 
        7.1.2 オンライン VSオフライン 
        7.1.3 フル、インクリメンタル、そして差分バックアップ
    7.2 リカバリ考察
    7.3 リカバリのシナリオ
        7.3.1 想定内のシナリオ
        7.3.2 想定外のシナリオ
        7.3.3 エラーの影響範囲
        7.3.4 障害の重大度
    7.4 リカバリ戦略の解剖
        7.4.1 計画1:問題の発見
        7.4.2 計画2:階層化ストレージ
        7.4.3 計画3:リカバリに役立つツール
        7.4.4 計画4:テスト
    7.5 リカバリ戦略を定義する
        7.5.1 オンラインのリカバリ戦略(高性能なストレージを使用する場合)
        7.5.2 オンラインのリカバリ戦略(低性能なストレージを使用する場合)
        7.5.3 オフラインストレージ
        7.5.4 オブジェクトストレージ
    7.6 まとめ

8章 リリースマネジメント
    8.1 教育と協力
        8.1.1 データベース情報のキュレーターとなる
        8.1.2 データベース議論の触媒となる
        8.1.3 ドメイン固有知識
        8.1.4 脱セクショナリズム
    8.2 継続的インテグレーション
        8.2.1 前提条件
    8.3 テスト
        8.3.1 テストフレンドリな開発
        8.3.2 コミット後のテスト
        8.3.3 完全なデータセットを利用したテスト
        8.3.4 ダウンストリームテスト
        8.3.5 運用テスト
    8.4 デプロイメント
        8.4.1 マイグレーションとバージョン管理
        8.4.2 影響分析
        8.4.3 マイグレーションのパターン
        8.4.4 手動か自動か
    8.5 まとめ

9章 セキュリティ
    9.1 セキュリティの目的
        9.1.1 盗難からの保護
        9.1.2 意図的な破壊からの保護
        9.1.3 意図しない破壊からの保護
        9.1.4 データを外部に晒さない
        9.1.5 コンプライアンスと監査の標準化
    9.2 機能としてのデータベースのセキュリティ
        9.2.1 教育と協調
        9.2.2 セキュリティプロセスの設計、実装、そして組織への浸透
        9.2.3 統合とテスト
        9.2.4 オペレーションの見える化
    9.3 脆弱性と悪用
        9.3.1 STRIDE
        9.3.2 DREAD
        9.3.3 予防策のベストプラクティス
        9.3.4 サービス拒否攻撃
        9.3.5 SQLインジェクション
        9.3.6 ネットワークと認証プロトコル
    9.4 データの暗号化
        9.4.1 財務情報
        9.4.2 健康情報
        9.4.3 個人情報
        9.4.4 政府や軍の情報
        9.4.5 機密および部外秘の情報
        9.4.6 送受信中のデータの暗号化
        9.4.7 データベースに保存されているデータ
        9.4.8 ファイルシステム上のデータ
    9.5 まとめ

10章 ストレージ、インデックス、レプリケーション
    10.1 データ構造のストレージ
        10.1.1 データベースの行ストレージ
        10.1.2 ストアドストリングテーブルとログ構造のマージツリー
        10.1.3 インデックスの生成
        10.1.4 ログとデータベース
    10.2 データのレプリケーション
        10.2.1 単一リーダーによるレプリケーション
        10.2.2 複数リーダーのレプリケーション
    10.3 まとめ


11章 データストアフィールドガイド
    11.1 概念としてのデータストアの属性
        11.1.1 データモデル
        11.1.2 トランザクション
        11.1.3 BASE
    11.2 データベースの内部特性
        11.2.1 ストレージ
        11.2.2 CAP定理
        11.2.3 一貫性とレイテンシのトレードオフ
        11.2.4 可用性
    11.3 まとめ

12章 さまざまなデータアーキテクチャ
    12.1 アーキテクチャのコンポーネント
        12.1.1 フロントエンドデータベース
        12.1.2 データアクセスレイヤ
        12.1.3 データベースのプロキシ
        12.1.4 イベントとメッセージシステム
        12.1.5 キャッシュとメモリストア
    12.2 データアーキテクチャ
        12.2.1 LambdaとKappa
        12.2.2 イベントソーシング
        12.2.3 CQRS
    12.3 まとめ

13章 実践DBRE
    13.1 データベースリライアビリティ文化
        13.1.1 チームの壁を打ち破れ
        13.1.2 データドリブンな意思決定
        13.1.3 データの整合性とリカバリ力
    13.2 まとめ