サイトリライアビリティワークブック ―SREの実践方法

Book description

『SRE サイトリライアビリティエンジニアリング』で、サイトリライアビリティエンジニアリング(SRE)はプロダクションサービスの稼働と信頼性の維持がサービス設計の基本であるとし、行動の基礎となる原則と理論を述べました。その実践編であり副読本でもある本書は、SREを組織やプロジェクトで導入するにあたり、必要となる具体的な方法や手順を解説します。またこれまでGoogle内部で得た技術的ノウハウを解説し、さらにEvernote、The Home Depot、New York Timesなどさまざまな企業での事例を紹介します。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  本書への推薦の言葉
  5.  序文1
  6.  序文2
  7.  はじめに
  8.    本書の読み方
  9.    日本語版について
  10.   表記
  11.   コードサンプル
  12.   お問い合わせ先
  13.   謝辞
  14.  1章 SREとDevOpsとの関係
  15.   1.1 DevOpsの背景
  16.    1.1.1 サイロの抑制
  17.    1.1.2 アクシデントは普通のこと
  18.    1.1.3 変化は徐々に起こすべきもの
  19.    1.1.4 ツールと文化は相互に関係する
  20.    1.1.5 計測は必須
  21.   1.2 SREの背景
  22.    1.2.1 運用はソフトウェアの問題
  23.    1.2.2 サービスレベル目標(SLO)による管理
  24.    1.2.3 トイルの最小化のための作業
  25.    プロダクションの知恵
  26.    1.2.4 今年のジョブの自動化
  27.    1.2.5 失敗のコストの削減による速度の向上
  28.    1.2.6 開発者との共有オーナーシップ
  29.    1.2.7 役割や仕事の肩書きに関わらず同じツールを使うこと
  30.   1.3 比較と対照
  31.   1.4 組織のコンテキストと成功する採用の促進
  32.    1.4.1 狭く硬直したインセンティブは成功を狭める
  33.    1.4.2 修正は自分で行う。他の誰かを責めない
  34.    1.4.3 信頼性に関する作業を特化した役割として考える
  35.    1.4.4 「やるかどうか」は「いつやるか」に置き換えられる
  36.    1.4.5 評価の同等性のための努力:キャリアと金銭
  37.   1.5 まとめ
  38. 第Ⅰ部 基礎
  39.  2章 SLOの実装
  40.   2.1 SREにSLOが必要な理由
  41.   2.2 始めてみよう
  42.    2.2.1 信頼性のターゲットとエラーバジェット
  43.    2.2.2 何を計測するか:SLIの利用
  44.   2.3 うまく行った例
  45.    2.3.1 SLIの仕様からSLIの実装への移行
  46.    2.3.2 SLIの計測
  47.    2.3.3 SLIを使った最初のSLOの計算
  48.   2.4 適切な時間ウィンドウの選択
  49.   2.5 ステークホルダーの同意を得る
  50.    2.5.1 エラーバジェットポリシーの確立
  51.    2.5.2 SLOとエラーバジェットポリシーのドキュメント化
  52.    2.5.3 ダッシュボードとレポート
  53.   2.6 SLOターゲットの継続的改善
  54.    2.6.1 SLOの品質の改善
  55.   2.7 SLOとエラーバジェットを使った意思決定
  56.   2.8 高度なトピック
  57.    2.8.1 ユーザージャーニーのモデリング
  58.    2.8.2 インタラクションの重要性の段階付け
  59.    2.8.3 依存関係のモデル化
  60.    2.8.4 SLOを緩めてみる
  61.   2.9 まとめ
  62.  3章 SLOエンジニアリングのケーススタディ
  63.   3.1 EvernoteにおけるSLOの物語
  64.    3.1.1 EvernoteがSREモデルを採用した理由
  65.    3.1.2 SLOの導入:進行中の旅路
  66.    3.1.3 顧客とクラウドプロバイダーの間にあるSLOの壁を壊す
  67.    3.1.4 現状
  68.   3.2 Home DepotのSLOの物語
  69.    3.2.1 SLO文化プロジェクト
  70.    3.2.2 最初のSLO群
  71.    3.2.3 SLOの普及
  72.    3.2.4 VALETデータ収集の自動化
  73.    3.2.5 SLOの急増
  74.    3.2.6 バッチアプリケーションへのVALETの適用
  75.    3.2.7 テストでのVALETの利用
  76.    3.2.8 将来的な野望
  77.    3.2.9 まとめ
  78.   3.3 結論
  79.  4章 モニタリング
  80.   4.1 モニタリング戦略における望ましい機能
  81.    4.1.1 速度
  82.    4.1.2 計算
  83.    4.1.3 インターフェース
  84.    4.1.4 アラート
  85.   4.2 モニタリングデータのソース
  86.    4.2.1 例
  87.   4.3 モニタリングシステムの管理
  88.    4.3.1 設定をコードとして扱う
  89.    4.3.2 一貫性の推進
  90.    4.3.3 疎結合の優先
  91.   4.4 目的を持ったメトリクス
  92.    4.4.1 意図された変更
  93.    4.4.2 依存性
  94.    4.4.3 飽和
  95.    4.4.4 ユーザートラフィックの状態
  96.    4.4.5 目的を持ったメトリクスの実装
  97.   4.5 アラートのロジックのテスト
  98.   4.6 まとめ
  99.  5章 SLOに基づくアラート
  100.   5.1 アラートについて考慮すべきこと
  101.   5.2 重大なイベントに対するアラートの方法
  102.    5.2.1 1:ターゲットのエラーレート ≥ SLOの閾値
  103.    5.2.2 2:より長いアラートウィンドウ
  104.    5.2.3 3:アラートの期間のインクリメント
  105.    5.2.4 4:バーンレートに対するアラート
  106.    5.2.5 5:複数バーンレートのアラート
  107.    5.2.6 6:複数ウィンドウ、複数バーンレートのアラート
  108.   5.3 低トラフィックのサービスとエラーバジェットによるアラート
  109.    5.3.1 人工的なトラフィックの生成
  110.    5.3.2 サービスの組み合わせ
  111.    5.3.3 サービスとインフラストラクチャに対する変更の実施
  112.    5.3.4 SLOの引き下げあるいはウィンドウの拡大
  113.   5.4 極端な可用性のゴール
  114.   5.5 大規模環境におけるアラート
  115.   5.6 まとめ
  116.  6章 トイルの撲滅
  117.   6.1 トイルとは何か?
  118.    事例:トイルに対する手作業でのレスポンス
  119.   6.2 トイルの計測
  120.   6.3 トイルの分類学
  121.    6.3.1 ビジネスプロセス
  122.    6.3.2 プロダクションへの割り込み
  123.    6.3.3 リリースの世話
  124.    6.3.4 マイグレーション
  125.    6.3.5 コストエンジニアリングとキャパシティプランニング
  126.    6.3.6 不明瞭なアーキテクチャのトラブルシューティング
  127.   6.4 トイル管理の戦略
  128.    6.4.1 トイルの特定と計測
  129.    6.4.2 システムから発生するトイルに対するエンジニアリング
  130.    6.4.3 トイルの拒否
  131.    6.4.4 SLOを使ったトイルの削減
  132.    6.4.5 人が背後に控えるインターフェースから始める
  133.    6.4.6 セルフサービスメソッドの提供
  134.    6.4.7 上司及び同僚から支援を得る
  135.    6.4.8 トイルの削減を機能に格上げする
  136.    6.4.9 小さく始めて改善する
  137.    6.4.10 一様性の増加
  138.    6.4.11 自動化に内在するリスクの評価
  139.    6.4.12 トイルへのレスポンスの自動化
  140.    6.4.13 オープンソース及びサードパーティツールの利用
  141.    6.4.14 改善のためのフィードバックの利用
  142.    レガシーシステム
  143.   6.5 ケーススタディ
  144.   6.6 ケーススタディ1:自動化によるデータセンター内のトイルの削減
  145.    6.6.1 背景
  146.    6.6.2 問題の内容
  147.    6.6.3 実行すると決めたこと
  148.    6.6.4 最初の活動の設計:Saturnラインカードの修理
  149.    6.6.5 実装
  150.    6.6.6 2番目の活動の設計:Saturnラインカードの修理対Jupiterラインカードの修理
  151.    6.6.7 実装
  152.    6.6.8 学んだこと
  153.   6.7 ケーススタディ2:ファイラーを背後に持つホームディレクトリの廃止
  154.    6.7.1 背景
  155.    6.7.2 問題の内容
  156.    6.7.3 実行すると決めたこと
  157.    6.7.4 設計と実装
  158.    6.7.5 主要なコンポーネント
  159.    6.7.6 学んだこと
  160.   6.8 まとめ
  161.  7章 単純さ
  162.   7.1 複雑さの計測
  163.   7.2 単純さはあらゆる場面で目指すべきことであり、SREはその追求に適している
  164.    7.2.1 ケーススタディ1:エンドツーエンドのAPIの単純さ
  165.    7.2.2 ケーススタディ2:プロジェクトのライフサイクルの複雑さ
  166.   7.3 単純さの再獲得
  167.    7.3.1 ケーススタディ3:Display Ads Spiderwebの単純化
  168.    7.3.2 ケーススタディ4:共有プラットフォーム上での数百のマイクロサービスの実行
  169.    7.3.3 ケーススタディ5:pDNSはもう自分自身に依存しない
  170.   7.4 まとめ
  171. 第Ⅱ部 実践
  172.    運用作業の定義(プロジェクトの作業とオーバーヘッドとの対比)
  173.  8章 オンコール
  174.   8.1 『SRE サイトリライアビリティエンジニアリング』の「オンコール対応」の章の振り返り
  175.   8.2 Google内外でのオンコールの構成例
  176.    8.2.1 Google:新しいチームの形成
  177.    プレイブックのメンテナンス
  178.    8.2.2 Evernote:クラウドへの順応
  179.   8.3 実用的な実装の詳細
  180.    8.3.1 ページャーの負荷の解剖学
  181.    適切なレスポンスタイム
  182.    8.3.2 オンコールの柔軟性
  183.    シフトの長さ
  184.    8.3.3 オンコールチームの力学
  185.   8.4 まとめ
  186.  9章 インシデント対応
  187.   9.1 Googleにおけるインシデント管理
  188.    9.1.1 インシデントコマンドシステム
  189.    9.1.2 インシデント対応における主な役割
  190.   9.2 ケーススタディ
  191.    9.2.1 ケーススタディ1:ソフトウェアのバグ――ライトはついているのに誰も(Googleの)ホームにいない
  192.    9.2.2 ケーススタディ2:サービスの障害――できるものなら捕まえて
  193.    9.2.3 ケーススタディ3:電源喪失 ―― 雷に2回打たれるなどということは起こらない……それが起こるまでは
  194.    9.2.4 ケーススタディ4:PagerDutyにおけるインシデント対応
  195.   9.3 ベストプラクティスの実践
  196.    9.3.1 インシデント対応のトレーニング
  197.    9.3.2 事前準備
  198.    9.3.3 練習
  199.   9.4 まとめ
  200.  10章 ポストモーテムの文化:失敗からの学び
  201.   10.1 ケーススタディ
  202.   10.2 良くないポストモーテム
  203.    ポストモーテム:すべてのサテライトマシンのdiskeraseへの送出
  204.    10.2.1 このポストモーテムが良くない理由
  205.   10.3 良いポストモーテム
  206.    ポストモーテム:すべてのサテライトマシンのdiskeraseへの送出
  207.    10.3.1 このポストモーテムが良い理由
  208.   10.4 組織的なインセンティブ
  209.    10.4.1 非難のない振る舞いのモデル化と実施
  210.    10.4.2 ポストモーテムの成果に対する報酬
  211.    10.4.3 ポストモーテムのオープンな共有
  212.    10.4.4 ポストモーテム文化の失敗への対応
  213.   10.5 ツールとテンプレート
  214.    10.5.1 ポストモーテムのテンプレート
  215.    10.5.2 ポストモーテムのツール
  216.   10.6 まとめ
  217.  11章 負荷の管理
  218.   11.1 Google Cloudのロードバランシング
  219.    11.1.1 anycast
  220.    11.1.2 Maglev
  221.    11.1.3 Global Software Load Balancer
  222.    11.1.4 Google Front End
  223.    11.1.5 GCLB:低レイテンシー
  224.    11.1.6 GCLB:高可用性
  225.    11.1.7 ケーススタディ1:GCLB上でのPokémon GO
  226.   11.2 オートスケーリング
  227.    11.2.1 不健全なマシンの処理
  228.    11.2.2 ステートフルなシステムの扱い
  229.    11.2.3 保守的な設定
  230.    11.2.4 設定の制約
  231.    11.2.5 キルスイッチと手動オーバーライドの取り込み
  232.    11.2.6 バックエンドの過負荷の回避
  233.    11.2.7 トラフィックの不均衡の回避
  234.   11.3 負荷の管理のための戦略を組み合わせる
  235.    11.3.1 ケーススタディ2:ロードシェディングが自らの首を絞める
  236.   11.4 まとめ
  237.  12章 非抽象的な大規模システム設計の紹介
  238.   12.1 NALSDとは何か?
  239.   12.2 なぜ「非抽象的」なのか?
  240.   12.3 AdWordsの例
  241.    12.3.1 設計プロセス
  242.    12.3.2 初期の要件
  243.    12.3.3 1台のマシン
  244.    12.3.4 分散システム
  245.   12.4 まとめ
  246.  13章 データ処理パイプライン
  247.   13.1 パイプラインアプリケーション
  248.    13.1.1 データの並び替えあるいは構造化のためのイベント処理/データ変換
  249.    13.1.2 データ分析
  250.    13.1.3 機械学習
  251.   13.2 パイプラインのベストプラクティス
  252.    13.2.1 サービスレベル目標の定義と計測
  253.    13.2.2 依存性障害のための計画
  254.    13.2.3 パイプラインのドキュメンテーションの作成と管理
  255.    13.2.4 開発ライフサイクルのマッピング
  256.    13.2.5 ホットスポットの低減とワークロードパターン
  257.    13.2.6 オートスケーリングの実装とリソース計画
  258.    13.2.7 アクセス制御とセキュリティポリシーの遵守
  259.    13.2.8 プランのエスカレーションパス
  260.   13.3 パイプラインの要求と設計
  261.    13.3.1 必要な機能は?
  262.    13.3.2 冪等と2フェーズの変換
  263.    13.3.3 チェックポイント処理
  264.    13.3.4 コードのパターン
  265.    13.3.5 パイプラインのプロダクションレディネス
  266.   13.4 パイプラインの障害:回避と対応
  267.    13.4.1 潜在的な障害の形態
  268.    13.4.2 潜在的な原因
  269.   13.5 ケーススタディ:Spotify
  270.    13.5.1 イベント配信
  271.    13.5.2 イベント配信システムの設計とアーキテクチャ
  272.    13.5.3 イベント配信システムの運用
  273.    13.5.4 顧客の統合とサポート
  274.    13.5.5 まとめ
  275.   13.6 結論
  276.  14章 設定の設計とベストプラクティス
  277.   14.1 設定とは何か?
  278.    14.1.1 設定と信頼性
  279.    14.1.2 哲学と仕組みの分離
  280.   14.2 設定の哲学
  281.    14.2.1 ユーザーに質問する設定
  282.    14.2.2 質問はユーザーの目標に近いものであるべき
  283.    14.2.3 必須の質問とオプションの質問
  284.    14.2.4 単純さからの脱却
  285.   14.3 設定の仕組み
  286.    14.3.1 設定と結果データの分離
  287.    14.3.2 ツールの重要性
  288.    14.3.3 所有権と変更追跡
  289.    14.3.4 安全な設定変更の適用
  290.   14.4 まとめ
  291.  15章 設定の詳細
  292.   15.1 設定が引き起こすトイル
  293.   15.2 設定が引き起こすトイルの削減
  294.   15.3 設定システムの重要な属性と落とし穴
  295.    15.3.1 落とし穴1:設定をプログラミング言語の問題と認識しない
  296.    15.3.2 落とし穴2:偶然あるいはアドホックな言語機能の設計
  297.    15.3.3 落とし穴3:過剰なドメイン固有の最適化
  298.    15.3.4 落とし穴4:「設定の評価」への「副作用」の混入
  299.    15.3.5 落とし穴5:Python、Ruby、Luaのような既存の汎用スクリプティング言語の利用
  300.    とても短いJsonnetの紹介
  301.   15.4 設定言語の統合
  302.    15.4.1 特定のフォーマットでの設定の生成
  303.    15.4.2 複数のアプリケーションの駆動
  304.   15.5 既存のアプリケーションの統合:Kubernetes
  305.    15.5.1 Kubernetesが提供するもの
  306.    15.5.2 Kubernetesの設定の例
  307.    15.5.3 設定言語の統合
  308.   15.6 カスタムアプリケーション(インハウスソフトウェア)の統合
  309.   15.7 効果的な設定システムの運用
  310.    15.7.1 バージョニング
  311.    15.7.2 ソース管理
  312.    15.7.3 ツール
  313.    15.7.4 テスト
  314.   15.8 いつ設定を評価するか
  315.    15.8.1 非常に早い段階:JSONのチェックイン
  316.    15.8.2 途中の段階:ビルド時点での評価
  317.    15.8.3 終盤:実行時の評価
  318.   15.9 不正な設定に対するガード
  319.   15.10 まとめ
  320.  16章 カナリアリリース
  321.   16.1 リリースエンジニアリングの原則
  322.   16.2 リリースの速度と信頼性のバランス
  323.    異なるレートで変更されるコンポーネントの分離
  324.   16.3 カナリアとはなにか?
  325.   16.4 リリースエンジニアリングとカナリア
  326.    16.4.1 カナリアプロセスの要求
  327.    16.4.2 サンプルのセットアップ
  328.   16.5 ロールフォワードデプロイメント対シンプルなカナリアデプロイメント
  329.   16.6 カナリアの実装
  330.    16.6.1 SLOとエラーバジェットに対するリスクの最小化
  331.    16.6.2 カナリアの対象数と期間の選択
  332.   16.7 メトリクスの選択と評価
  333.    16.7.1 メトリクスは問題を示すものであるべき
  334.    16.7.2 メトリクスは代表的で起因を示すものであるべき
  335.    16.7.3 事前/事後の評価はリスクを含む
  336.    16.7.4 より優れたメトリクス選択のための段階的なカナリアの利用
  337.   16.8 依存関係と隔離
  338.   16.9 非インタラクティブなシステムでのカナリア
  339.   16.10 モニタリングデータに対する要求
  340.   16.11 関連する概念
  341.    16.11.1 ブルー/グリーンデプロイメント
  342.    16.11.2 人工的な負荷生成
  343.    16.11.3 トラフィックティーイング
  344.   16.12 まとめ
  345. 第Ⅲ部 プロセス
  346.  17章 過負荷の特定と回復
  347.   17.1 負荷から過負荷へ
  348.   17.2 ケーススタディ1:チームの半分が去った時点での作業過負荷
  349.    17.2.1 背景
  350.    17.2.2 問題の表明
  351.    17.2.3 実行すると決めたこと
  352.    17.2.4 実装
  353.    17.2.5 学んだこと
  354.   17.3 ケーススタディ2:組織及び作業負荷の変更後の認知過負荷
  355.    17.3.1 背景
  356.    17.3.2 問題の表明
  357.    17.3.3 実行すると決めたこと
  358.    17.3.4 実施
  359.    17.3.5 効果
  360.    17.3.6 学んだこと
  361.   17.4 過負荷の緩和のための戦略
  362.    17.4.1 過負荷の症状の認識
  363.    17.4.2 過負荷の低減とチームの健全性の回復
  364.   17.5 まとめ
  365.  18章 SREのエンゲージメントモデル
  366.   18.1 サービスのライフサイクル
  367.    18.1.1 フェーズ1:アーキテクチャと設計
  368.    18.1.2 フェーズ2:活発な開発
  369.    18.1.3 フェーズ3:限定公開
  370.    18.1.4 フェーズ4:一般公開(GA)
  371.    18.1.5 フェーズ5:非推奨化
  372.    18.1.6 フェーズ6:放棄
  373.    18.1.7 フェーズ7:サポート終了
  374.   18.2 関係性のセットアップ
  375.    18.2.1 ビジネスとプロダクションの優先順位のコミュニケーション
  376.    18.2.2 リスクの特定
  377.    18.2.3 目標を揃える
  378.    共有の目標:New York TimesにおけるSREのエンゲージメント
  379.    18.2.4 基本原則の設定
  380.    18.2.5 計画と実行
  381.   18.3 効率的な継続的関係性の維持
  382.    18.3.1 よりうまく共同で働けるようになることへの時間の投資
  383.    18.3.2 オープンなコミュニケーション経路の維持
  384.    18.3.3 定期的なサービスレビューの実施
  385.    18.3.4 基本原則がずれ始めた時点での再評価
  386.    18.3.5 SLOとエラーバジェットに基づく優先順位の調整
  387.    18.3.6 適切なミスの処理
  388.   18.4 より大規模な環境へのSREのスケール
  389.    18.4.1 単一のSREチームでの複数サービスのサポート
  390.    18.4.2 複数のSREチーム環境の構造化
  391.    18.4.3 変化する環境へのSREチームの構造の適応
  392.    18.4.4 まとまりのある分散SREチームの運営
  393.   18.5 関係性の終了
  394.    18.5.1 ケーススタディ1:Ares
  395.    18.5.2 ケーススタディ2:データ分析パイプライン
  396.   18.6 まとめ
  397.  19章 SRE:壁の向こうへの到達
  398.   19.1 我々が自明だと考える真実
  399.    19.1.1 信頼性は最も重要な機能
  400.    19.1.2 モニタリングではなくユーザーが信頼性を決める
  401.    19.1.3 プラットフォームを動作させるなら、信頼性はパートナーシップである
  402.    19.1.4 重要なものはすべていつかプラットフォーム化する
  403.    19.1.5 顧客が苦労しているなら、速度を落とさなければならない
  404.    19.1.6 SREは顧客と共に実践しなければならなくなる
  405.   19.2 ハウツー: 顧客とのSRE
  406.    19.2.1 ステップ1:SLOとSLIが会話の手段
  407.    19.2.2 ステップ2:モニタリングの監査と共有ダッシュボードの構築
  408.    19.2.3 ステップ3:計測と再交渉
  409.    19.2.4 ステップ4:設計レビューとリスク分析
  410.    19.2.5 ステップ5:実践、実践、実践
  411.    19.2.6 思慮深く規律を守る
  412.   19.3 まとめ
  413.  20章 SREチームのライフサイクル
  414.   20.1 SREなしでのSREの実践
  415.   20.2 SREロールの開始
  416.    20.2.1 最初のSREを見つける
  417.    20.2.2 最初のSREの配置
  418.    20.2.3 最初のSREの立ち上げ
  419.    20.2.4 分散SRE
  420.   20.3 最初のSREチーム
  421.    20.3.1 形成期
  422.    20.3.2 混乱期
  423.    20.3.3 統一期
  424.    既存のチームのSREチームへの転換
  425.    20.3.4 機能期
  426.   20.4 さらなるSREチームの形成
  427.    20.4.1 サービスの複雑さ
  428.    20.4.2 SREの展開
  429.    20.4.3 地理的な分割
  430.   20.5 多数のチームの運営のための推奨プラクティス
  431.    20.5.1 ミッションコントロール
  432.    20.5.2 SRE Exchange
  433.    20.5.3 トレーニング
  434.    20.5.4 横断的プロジェクト
  435.    20.5.5 SREの流動性
  436.    20.5.6 出張
  437.    20.5.7 ローンチ調整エンジニアリングチーム
  438.    20.5.8 プロダクションエクセレンス
  439.    20.5.9 SREへの投資と雇用
  440.   20.6 まとめ
  441.  21章 SREにおけるIT変更管理
  442.   21.1 SREは変化を抱擁する
  443.   21.2 変更管理の紹介
  444.    21.2.1 Lewinの3ステージモデル
  445.    21.2.2 マッキンゼーの7-Sモデル
  446.    21.2.3 Kotterの変更をリードするための8ステッププロセス
  447.    21.2.4 ProsciのADKARモデル
  448.    21.2.5 感情ベースのモデル
  449.    21.2.6 デミングのサイクル
  450.    21.2.7 これらの理論のSREへの適用
  451.   21.3 ケーススタディ1:Wazeのスケーリング――アドホックな変更から計画された変更へ
  452.    21.3.1 背景
  453.    21.3.2 メッセージキュー:信頼性をメンテナンスしながらのシステムの置き換え
  454.    21.3.3 変更の次のサイクル:デプロイメントプロセスの改善
  455.    21.3.4 学んだこと
  456.   21.4 ケーススタディ2:SREにおける共通ツールの採用
  457.    21.4.1 背景
  458.    21.4.2 問題の状況
  459.    21.4.3 実行すると決めたこと
  460.    21.4.4 設計
  461.    21.4.5 実装:モニタリング
  462.    21.4.6 学んだこと
  463.   21.5 まとめ
  464.  まとめ
  465.   この先……
  466.   将来は過去に属する
  467.   SRE + <他の分野>
  468.   しずく、細流、そして奔流
  469.   SREは私たち全員のもの
  470.   謝意
  471.  付録A SLOドキュメントの例
  472.   サービスの概要
  473.   SLIとSLO
  474.   根拠となる事項
  475.   エラーバジェット
  476.   補足・留意点
  477.  付録B エラーバジェットポリシーの例
  478.   サービスの概要
  479.   目標
  480.   目標ではないこと
  481.   SLO違反のポリシー
  482.   障害のポリシー
  483.   エスカレーションポリシー
  484.   背景
  485.  付録C ポストモーテム分析の結果
  486.  編者・訳者紹介
  487.   編者紹介
  488.   監訳者紹介
  489.   訳者紹介
  490.   カバーの説明
  491.  奥付

Product information

  • Title: サイトリライアビリティワークブック ―SREの実践方法
  • Author(s): Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne, 澤田 武男, 関根 達夫, 細川 一茂, 矢吹 大輔, 玉川 竜司
  • Release date: June 2020
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119137

You might also like

book

進化的アーキテクチャ ―絶え間ない変化を支える

by Neal Ford, Rebecca Parsons, Patrick Kua, 島田 浩二

現代におけるエンタープライズアーキテクチャは、もはや静的な計画をあてにすることはできなくなっています。そしてソフトウェア開発エコシステムは、ツールやフレームワーク、技術イノベーションの流れと共に絶え間なく変化しています。こうした状況の中で、いったん構築したシステムを成長させていくには、さまざまな変化に適応しながら進化するアーキテクチャをシステムに組み込む必要があります。本書は、そうしたアーキテクチャを「進化的アーキテクチャ」と名付け、その構築に必要な考え方や技術、実践方法などについて解説するものです。

book

リーンエンタープライズ ―イノベーションを実現する創発的な組織づくり

by Jez Humble, Joanne Molesky, Barry O'Reilly, 角 征典, 笹井 崇司, Eric Ries

新規事業を生み出し、顧客にすばやく価値を届けるには、それを支援する体制が必要です。本書は、あらゆるムダを省き、継続的に仮説検証を繰り返しながら、プロダクトやサービスを構築する「リーンスタートアップ」の手法を既存の企業に適用するための方法を説明します。市場環境や顧客ニーズの変化に対応し、イノベーションを加速させ、組織文化、ガバナンス、財務管理を最適化し続けるハイパフォーマンス組織になるための原則とパターンを、さまざまな成功企業のケーススタディとともに詳述します。

book

Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス

by Titus Winters, Tom Manshreck, Hyrum Wright, 竹辺 靖昭, 久富木 隆一

Googleの現役ソフトウェアエンジニアたちが、超大規模ソフトウェアの開発と保守を長期的に支えてきたGoogle社内の多様なベストプラクティスを、文化、プロセス、ツールの側面からこの一冊に凝縮。時間と変化、規模と成長、トレードオフとコストという3つの基本原理に沿って、コードを持続可能にする方法論を紐解きます。「謙虚、尊敬、信頼」、心理的安全性、ダイバーシティとインクルージョンなど公正を重んじる文化から、コードレビューやテスト構成法など人間の行動を規定するプロセス、継続的インテグレーションや大規模変更システムなど変化への対応を支援する自動化ツールの基盤技術まで、Googleが試行錯誤を経て獲得した教訓を余すところなく紹介しています。経済学、心理学、マネジメント論などを背景にした人間への深い洞察をふまえ、データ駆動かつトレードオフから導かれる、定量的かつ定性的な決定プロセスも解説。Googleの成長力の源泉を理解でき、得られる知見は、学生から組織の意思決定者、小規模スタートアップからデジタルトランスフォーメーション(DX)を目指す大企業まで、幅広く活用できます。

book

入門 監視 ―モダンなモニタリングのためのデザインパターン

by Mike Julian, 松浦 隼人

本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です。