落とし穴に立て札を立てるが如く

ハマりどころの解決が少しでも早くなることを願って書いていきます

まずは 106 ページまで読んでみよう まだ読んでいる途中だけど SRE 本についてまとめてみる

こちらの記事は cloud.config tech blog にもマルチポストします。

ハイライト

  • SRE 本は分厚く見えますが「SREとは何か」については 106 ページまでにまとまっているのでまずは 106 ページまで読んでみるといいですよ!

はじめに

SRE サイトリライアビリティエンジニアリング Google の信頼性を支えるエンジニアリングチーム」は、全 550 ページにもわたってサイトリライアビリティエンジニアリング(以下 SRE)というエンジニアリング手法とは何か、どのように行うのかについて書かれた本です。
通称 SRE 本とも呼ばれており、SRE というものについて知るための最初の一冊なのですが、何と言っても分厚いです。
自分でも気になって読み始めて、私物としても買って読み進めているのですが読み切るのにはかなり時間がかかりそうです。
ただ、全体で Ⅴ 部まであるうちの第 Ⅱ 部まで読み終わり、ここがキリがよさそうに見えたので今の段階で一度、この本がどのようなことが書いてあって、どのように読むのがよさそうかについて現状の自分なりにまとめられればと思います。
「なぜ全部読み切る前から書評を書くの?」というのはあるのですが、理由としては二つあります。

  • 職場に最近この本がやってきて、周りのメンバーが興味を持っていそうなので。できれば一度読んでほしいので。鉄は熱いうちに打つ意味で
  • おもに自分のため、現状での自分の認識を整理する意味で。この先読み進めて印象が変わればそれはそれで書籍を読んで成長したということです

ということで、この記事の第一目的は職場の同じ部屋にいる周りのメンバーが SRE 本を手にして読み始め、何かを得るところまで読み進めさせることになります。そうなるといいな。
他にも、これから SRE 本を読もうと考えている人にとって実際に読み始めるきっかけになったり、すでに読んでいる方にとってこの本が読みやすくなったりすると幸いです。

全容

この本は全体で 5 部構成になっています。その中に各章があります。
それぞれの部で書かれていることをざっくり紹介します。

第 Ⅰ 部 イントロダクション(1-24 ページ)

SRE とは何か、どのようなことをするのかについて、それが生まれた当時の Google の背景を交えながら説明しています。
ソフトウェアエンジニアの背景を持ったエンジニアで運用を行うことでソフトウェアエンジニアリングのアプローチで運用を考えること、それを通してサイトの信頼性を上げていくことが SRE であるというのが結論になるかと思います。

第 Ⅱ 部 原則(25-106 ページ)

SRE の仕事の原則について説明しています。
ここで言う原則とは、SRE ではどのような要素に関心を持つか、どのように仕事を進めるかに関する諸々のトピックになります。
そのため、この書籍を「サイトリライアビリティエンジニアがどのような仕事をするのかについて知りたい」というモチベーションで読むなら一番重点的に読むべきかと考えています。
自分が読んでいるのは現状ここまでです。

第 Ⅲ 部 実践(107-408 ページ)

この章は SRE で扱うトピックについて細かく、各論を述べています。
全体で 300 ページもありますが、一つ一つのトピックの粒度が細かいのでここではディテールを詰めていくために読むことになりそうです。

第 Ⅳ 部 管理(409-478 ページ)

この章では、実際に SRE チームを運用していくときの方法論について書かれています。
新人 SRE がやってきたときにどのように学習経験を積ませて一人前の SRE に成長させるかが主なトピックになります。
逆に、自分が新人 SRE であったときにどのように業務を学んでいくべきかについて書かれていると見ることもできます。

第 Ⅴ 部 まとめ(479-496 ページ)

本当にその通りで、まとめの一言(一言ではない)が書かれています。

まずは 106 ページまで読んでみよう

この書籍は全体で 550 ページもあります、一息では読み切れないのもごもっともです。
ただ、この書籍を読む最初の一番の目的は「SRE とは何か」であるかと思います。
その場合は、最初の 106 ページまで読むと大体ほしいものが見つかるかと思うので、まずはそこまで読んでみるのがおすすめです。
というのも、全容で書いた通り、第 Ⅱ 部では SRE の仕事の原則について説明しています。
ここを読めば、SRE の基本的な考え方やそのための概念を理解することができます。
SRE の話題でよく言われるトイルとは何か、SLI、SLO、SLA とは何か、エラーバジェットとは何か、エラーバジェットを使ってどのように仕事をするのかがわかります。
そしてそれらのためにどのように監視や自動化を進めていくのか、アプリのリリースはどのように行うかの具体的な方針が書かれています。
その前の第 Ⅰ 部では SRE とは何かの概要がつかめるので、第 Ⅰ 部と第 Ⅱ 部までで SRE についての概要と基本的な考え方が身に付けられてしまいます。
逆に、第 Ⅲ 部は 300 ページもあるものの中身としてはアラートや障害対応、ロードバランシングといった各論に入っていくのであとで時間を作って読むか、最低限気になったトピックだけ拾い読みする読み方でも良さそうです。
ということで、SRE 本を読むならまずは最初の 106 ページまでをそれなりに集中して読んで、それから他の部を読むのが SRE とは何かについて知る上では良さそうです。

次に読むなら?

第 Ⅳ 部が良さそうです。
というのも、第 Ⅳ 部では SRE の主に育成方法が解説されているのですが、逆に見ると自分が SRE らしいスキルを身に付けたいときにどのように動くべきか、学ぶべきかが書かれているともいえるためです。
第 Ⅰ 部、第 Ⅱ 部と読んできて SRE というエンジニアリング手法に興味が出てきたら次はそれを身に着けるための方法が知りたくなるかと思います。

  • プロジェクトの目的を理解しながら作業を行う
  • ポストモーテムを読む/書く
  • 他のメンバーが行っている障害対応を横で見る(シャドウイングする)
    など、目次を見ただけでもやるべきことが見つかりそうです。
    自分も、次に読むならここかなと考えています。

「SRE とは?」今答えるなら

今の理解を試すため、あとでもっと SRE について知ったあとで読み返して恥ずかしくなるために今の SRE についての理解を書いておきます。
サイトリライアビリティエンジニアリングとは、文字通りサイトの信頼性を高めることを目的としたエンジニアリング手法です。
業務としては主にインフラの運用を行うのですが、ここにソフトウェアエンジニアリングのアプローチを組み込むことでより良い運用を目指します。
例えば、サイトの許容できるレベルの信頼性について SLO をプロダクトオーナーと合意し、それを満たすことを目標にインフラの運用を行います。
SRE チーム内では許容できる SLO と現状の余裕分をエラーバジェットとして管理し、SLO を下回らないように(国内では「SLO を割る」という言い方もあるようです)プロダクト開発チームと折り合いをつけながらサイトの信頼性とプロダクト開発のスピードを両立します。
運用における繰り返しの仕事、オーバーヘッドをトイルと呼び、これについてはできる限りうまく自動化したり仕組みを改善(エンジニアリング)することで減らそうとします。

まとめると、特に運用をエンジニアリングで改善するという考え方をすることがソフトウェアエンジニアリングのアプローチをとるということで、サイトリライアビリティエンジニアリングそれがなのかな・・・と今は考えています。
そうするとサイトリライアビリティエンジニアリングという文字通りの意味「サイトの信頼性」からは少し離れている気もするのですが、そこは「はじめに」で著者も認めているとおり、その内容をはっきりと表現出来ていないということなのかなと思います。
最初に名前を付けた時と実際に運用していく中で振る舞いやコアにあるものが変わってくることはよくあることなので、これもそういうものなのかな・・・・・という理解です。

おわりに

今回の記事では「SRE サイトリライアビリティエンジニアリング」という書籍について、途中まで読んだ状態で内容をまとめてどのように読むと読みやすいかを考えて説明してみました。
全体ではかなり分厚い書籍ですが、まずは特に最初の 106 ページを読もうと考えて読むとそれなりにハードルが下がるかと思うのでおすすめです。
周りのメンバーや他の人がこの書籍から何かを得る助けになっていると幸いです。
また、自分でも 3 章から先も引き続き読み進めるつもりです。
全体を読んでから何か考えが変わったりしたらまたブログを書くと思います~

参考