🌊

【1章】データベースリライアビリティエンジニアリングの読書メモ

2021/06/14に公開

O'Reilly Japan - データベースリライアビリティエンジニアリング の読書メモです。

序文

本書は、データベースとそれを支えるインフラストラクチャのエンジニアリングおよびオペレーションにおけるガイドブックであり、同時に慣れ親しんだキャリアから新しい一歩を踏み出すための冒険の書です。

はじめに

  • 本書は、 DBA の上級職として DBRE に進化するためのフレームワーク
  • DBRE は、システムエンジニアリングの基礎の上に、データ専門のドメインを身に着けた職種

対象者

  • データベースの設計、構築、オペレーションをリライアブルに行うことについて興味がある方
  • データベースに興味があり、自分の専門分野の幅を拡げたい方
  • データベースのスペシャリストとしてキャリアを築きたい方

前提

  • 一般的な Linux/Unix の基本知識
  • システム管理知識
  • 一般的なウェブやクラウドの知識

構成

  1. イントロダクション
    • データベースリライアビリディエンジニアリングの基本概念
  2. サービスレベルマネジメント
    • サービスレベルの仕様
    • 基準を保守するためにすること
  3. リスクマネジメント
    • 基本的な考え方
    • DBRE におけるリスクの対応方法
    • 陥りがちな罠や複雑性
  4. オペレーションの見える化
    • メトリクスとイベントの測定方法
    • 監視システムのコンポーネントやアーキテクチャ
  5. インフラストラクチャエンジニアリング
    • データベースを取り巻くインフラストラクチャの構成管理と自動化
    • 仮想化、コンテナ化、自動化、オーケストレーション、コード化
  6. インフラストラクチャマネジメント
  7. バックアップとリカバリ
    • バックアップとリカバリのスケールとテスト、オペレーション
  8. リリースマネジメント
    • データベースのテスト、ビルド、デプロイ
    • 安全かつ確実なデプロイの実現
  9. セキュリティ
    • どのように計画し、管理し、実践するか
    • そのために必要なインフラストラクチャ
  10. ストレージ、インデックス、レプリケーション
    • ストレージの種類
    • インデックス、レプリケーション、データの保存方法
    • データの比較、ソート、構造化されたログのマージツリー
    • インデックスのパターンとレプリケーションのトポロジー
  11. データベースのフィールドガイド
    • データベースが持つ特徴と分類分け
    • 開発者が知っておくべき特性、内部の実装
  12. さまざまなデータアーキテクチャ
    • 分散データベースやパイプライン
    • それぞれの利便性や複雑さ、一般的な使用方法
  13. 実践 DBRE
    • 組織でどのように DBRE 文化を醸成するか

本編

1. イントロダクション

  • なぜリライアビリティエンジニアリングなのか
    • データベースのプロは管理者ではなくエンジニアである必要がある
    • 運用の最適化、自動化にエンジニアが必要なため
    • 多様なユースケースに追随できるのもエンジニア
1.1. DBRE の指針
データを守れ
  • チーム間に壁を設けない権限設定と責任モデルを導入
  • バックアップとリストア方法を適切に実装し、組織内で標準化、自動化
  • セキュリティ方針を適切に実装し、それを標準化する
  • 方針をプロビジョニング及びデプロイの自動化プロセスに組み込む
  • データの要求仕様を決定する際、各々のデータベースが持つ耐障害性を考慮する
  • 自分たちの実装した自動化や冗長性及びベストプラクティスを大事にする
  • 動作環境を変更する際、万一に備えてテストや代替策の準備、及び影響範囲を把握する
周囲を巻き込め
  • データベースの現在の状況を把握するのに必要十分なメトリクスの収集
  • バックアップとリストアの手順を確立し、新しいデータベースを迅速に構築する
  • データベースのアーキテクチャ及び設定について、レビュー及び共有を行う
  • 全員がデプロイ可能
  • データベースのアクセス権について標準化を行う
  • データベースを変更する際は、予め検証環境でのデプロイ及びテストを実施する
  • 骨折り仕事を減らせ
    • 自動化できるのにしてない作業は、サービスの拡大に併せて肥大化する
分業制に囚われるな
  • ソフトウェアの動作環境であるインフラの構成と制御方法を知らないままでは、エラーに対して貧弱で実行速度は遅く、セキュリティもおろそかなコードしか書けない
1.2. オペレーションの本質

オペレーションはシステムとソフトウェアを構築し、運用し、保守するために必要な知識の集大成

SaaS 企業によるデーターベースのサーバーレス化が進んでも、オペレーションは無くならない。
これらを使いこなすために、アーキテクチャやそこで実行される自分のコードのパフォーマンスについて、もっと知る必要がある。

1.3. 欲求段階説

マズローの欲求段階説をデータベースに当てはめてみる。

1.3.1. 生存と安全の欲求
  • データーベースの稼働に必ず必要なのは、バックアップ、レプリケーション、フェイルオーバー
  • スケールの準備も必要
1.3.2. 愛と帰属の欲求
  • データ(ベース)の管理 == システム全体の管理
  • コードレビューとデプロイを習慣化する
  • 構築と変更管理
  • データベースをチームの誰もが触れるようにする
  • ガードレールを用意し、間違いの発生を防ぎ、万一発生した場合でもリカバリできるようにする
1.3.3. 承認の欲求
  • 観測可能
  • デバッグ可能
  • 内部が把握可能
  • 分析可能

つまり、データベースで発生したイベント(アラート)の意味を把握し、対応方法を明確化する必要がある。

1.3.4. 自己実現の欲求

データベースは開発者の仕事を引き受け、人間の失敗を防ぐものでなければならない。
現在の問題に対処しつつ、将来発生しうる問題に対しても対応策を用意しておく。

1.4. まとめ

ここで紹介する考え方のフレームワークは、日々変化していくシステムに対して、機能別にどのような対応をしていくべきかの道を示しています。

GitHubで編集を提案

Discussion