msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「SRE サイトリライアビリティエンジニアリング」感想

概要

SRE サイトリライアビリティエンジニアリングを読みました。 感想を書きます。

www.oreilly.co.jp

前提

目的

  • 2023年7月〜9月の目標の注力分野の 1 つに SRE・DevOps を掲げていた
  • SRE サイトリライアビリティエンジニアリング(以下、SRE 本)は SRE の聖書的な立ち位置であると考え、本書を通じて SRE の概念的な部分の理解や包括的な内容を知りたかった

事前知識

SRE 関連では、下記の書籍を読んでいました。Google が執筆した SRE シリーズは読んだことがありませんでした。

DevOps 関連で言えば以下の書籍を読んでいました。

読了時間

1 回 1 人で読もうと考えていたのですが、難易度が高く読みきれませんでした。とりあえず、5 ~ 10 時間程度で軽く 1 週して、勉強会を計画しました。 勉強会は、下表のように全 9 回で計画しました。 準備に 5 ~ 6 時間かけて、当日の勉強会は 1 ~ 2 時間で行いました。 そのため、合計所要時間は約 7 時間 × 9 回から、およそ 63 時間程度で読み切ったと考えています。

No. 日付
1 2023/06/06 第 Ⅰ 部 1 章 ~ 第 Ⅱ 部 4 章
2 2023/06/13 第 Ⅱ 部 5 章 ~ 9 章
3 2023/06/20 第 Ⅲ 部 10 章~ 12 章
4 2023/06/27 13 章 ~ 17 章
5 2023/07/04 18 章 ~ 21 章
6 2023/07/11 22 章 ~ 23 章
7 2023/07/18 24 章 ~ 26 章
8 2023/07/25 27 章 ~ 第 IV 部
9 2023/08/01 30 章 ~ 第 Ⅴ 部

感想

SRE の原理・哲学・文化・実践例をカバーしており、当初の予定通り、概念と包括的な内容を学べました。個人的には最初に SRE を学ぶ書籍として選んでよかったと考えています。 しかし、内容が Google の具体的な例で共感を感じづらかったりする部分や SRE に従事していないことから経験不足により読みづらい部分もあり、初心者が 1 人で読むには難易度が高いと思いました。 良かった点と読み進めるのが難しかった点について記述していきます。

良かった点

良かった点は何よりも SRE に関する包括的な内容です。 本書では、SRE における信頼性の意味が下記のように定義されています。このように、SRE で重要な信頼性の定義についてから始まります。

ここでは、信頼性とは「[システムが]求められる機能を、定められた条件の下で、定められた期間にわたり、障害を起こすことなく実行する確率」です。これはOco12の定義に従っています。

他にも、運用面やチームで抱えるよくある問題を押さえており、納得感のある内容が満載でした。 特に文化および哲学ではすぐに取り入れる必要のある考え方が何度も語られており、抜粋して箇条書きにすると以下の文言です。

  • 私たちは、“SRE”の“E”は私たちの組織の特徴を定義していると強く信じているので、最低でも SRE の時間の 50%はエンジニアリングに費やされるように努めています。オンコールは残りの時間の 25%以上にならないようにして、他の 25%はプロジェクトの作業ではない、他の種類の運用業務のために残せるようにします。
  • 初心者はしばしばトラブルシューティングでつまずくことになりますが、これはトラブルシューティングが理想的には二つの要素に依存するためです。一つは一般的なトラブルシューティングの手法の理解(すなわち特定のシステムの知識とは関係のない部分)で、もう一つはシステムに関するしっかりとした知識です。
  • 障害から学びを得るための最も良い方法は、過去に何が壊れたのかを書き記しておくことです。
  • テストとは、変更が生じたときにある領域における等価性を示すための仕組みです。
  • ポストモーテムを書くことの主な目的は、インシデントがドキュメント化されること、影響を及ばしたすべての根本原因(群)が十分に理解されること、そしてとりわけ、再発の可能性や影響を削減するための効果的な予防策が確実に導入されるようにすることです。
  • SRE はゼネラリストであることが多いものです。これは、深さ優先よりも幅優先で学びたいという意欲があることから、広い視点からの理解に向いていることによります(そして、現代的な技術インフラストラクチャの複雑な内部動作ほど広い視点が求められるものは滅多にありません)。
  • システムの設計者は、信頼性やパフォーマンスのために正確性を犠牲にすることはできません。
  • データの完全性を考えるにあたって重要なのはクラウド上のサービスがユーザーから利用可能であり続けることなのです。ユーザーがデータへアクセスできることは特に重要です。
  • おかしくならないものはないというだけではなく、どんなものもいつかはおかしくなるということを認識できれば、それはあらゆる本物の緊急事態に対して備えるための大きな一歩になります。
  • とはいえ、本物のプロダクションシステムを実際に壊したり直したりすることで得られる経験はそれらに勝ります。
  • 「願望は戦略にあらず」。この Google の SRE チームでの合い言葉には、準備とディザスタテストという言葉で私たちが言い表したいことが集約されています。SRE の文化とは、永遠に続く警戒と問いかけです。

自分は SRE チームに所属していなければ、運用業務が主担当でもないです。それでも、これらの考え方は刺さる部分が多く、さっそく取り入れなければいけないと判断しました。 すぐに取り入れられたのは、具体的にはポストモーテムです。 実際の障害やインシデントから仕様の理解を深めようということで、受け入れられ導入しました。 導入してから 1 ヵ月に満たない程度で、記述をしたのはごく一部の人物だけですが、自分が可能な範囲でも継続していきます。
ほかにも普段から実践している開発者テストには、いくつか信頼性に対する相関があると考えました。 適切なテストが記述できているという前提があれば、テストカバレッジも信頼性に寄与する指標だと思い直しました。 普段の OKR に掲げている通り開発者テストを実践しつつも、チームで信頼性について話し合う際に関連付けようと考えています。 そして、将来的には統合テストやシナリオテストにつなげていきたいです。

読み進めるのが難しかった点

読み進めるのが難しかった点は 2 つあります。 1 つめは、第 Ⅲ 部の内容が具体的すぎる点です。 Google のプロダクトの例があまりにも具体的すぎて、記述内容をまったく理解できない部分が非常に多かったです。 そして第 Ⅲ 部が、最もページ数が多いため 1 人で読んでいる時に途中で心が折れました。 2 つめは、自身の経験不足な点です。 自分自身は SRE エンジニアでもなければ、運用業務が主担当でもないです。 そのため、文化や考え方に共感しつつも、一部の用語や課題感などは、難しく感じました。

これらの理由から、1 人で読み進めていた際に読み進めること困難であると気がつき、勉強会方式に切り替えました。 具体的には、事前に「印象に残ったこと」「疑問に感じたこと・議論したいこと」をあらかじめ MIRO 上に書き出しておき、当日 10 分ほどで読み直した後に、議論を始めるといった形式です。 こうすることで、互いに認識があった部分や疑問に思った部分を経験を踏まえて、効率的に議論できました。 精読するには不向きですが、互いの経験で本書の内容を補完しつつ理解を深められたと考えています。

勉強会の MIRO

感想まとめ

まとめると、SRE の原理・哲学・文化・実践例を学べる書籍で SRE について学ぶには良い本でした。 しかし、1 人で読み切ったり自分ごととして考えるのは難しい書籍だと思いました。 そのため、知人や会社の人と勉強会で認識を合わせながら自身の経験と照らし合わせつつ読み進めた方が良いと思いました。
勉強会の開催が難しければ、サイトリライアビリティワークブックと合わせて読むか、先にサイトリライアビリティワークブックを読んだ方が、良い可能性があります。 理由は、サイトリライアビリティワークブックの序文に下記が記載されているからです。

本書は Google による前作『SRE サイトリライアビリティエンジニアリング』と対になる書籍です。本書を最大限に活用するには、『SRE サイトリライアビリティエンジニアリング』(原書“Site Reliability Engineering”はhttps://landing.google.com/sre/sre-book/toc/から入手可能)を読んでおくこと、あるいは参照できるようにしておくことをおすすめします。

しかし、自分はまだサイトリライアビリティワークブックを読んでいないため、適切かどうかはわかりません。

次に関連で勉強すること

引き続き SRE 関連の書籍を読み進めていきます。次に読もうと考えているのは以下の書籍になります。

SLO サービスレベル目標を先に読もうと考えています。 理由は、SLO の理解を深めることで目標設定に寄与できそうだからです。 最近出版された本のため、紹介動画も YouTube に 2 つ上がっており、読み進めやすそうだと考えています。 後者は副読本的な立ち位置ですので、時間があかないようにSLO サービスレベル目標を読み終えたら読もうと考えています。

まとめ

本記事では、SRE について包括的な内容を学ぶためにSRE サイトリライアビリティエンジニアリングを読み感想を記述しました。 原則・哲学・文化・実践例がふんだんに盛り込まれており、SRE を学ぶ際に確実に読むべき書籍の 1 冊でした。 1 人では読みづらい部分があったので、勉強会で工夫して読み進めました。 さまざまな人との経験を話し合いながら読み進めると効果が大きい書籍だと考えています。 引き続き SRE の書籍を読み進めていきます。