デブサミ2019 - 感想 「Site Reliability Engineering at Google」
2019-02-15(金) 午後から Developers summit 2019に行ってきました。
参加あきらめていたので事前登録していなかったのですが、急に時間ができたので行ってみました。
タイムテーブルをみるとほぼ満席だったのでダメかな・・と思ったのですが、ダメもとで当日の列に並んだら普通に入れました。(1セッションだけは立ち見でした)
参加したセッションはどれも興味深かったのですが、そのうち1つのセッションについて感想を書きます。
「Site Reliability Engineering at Google」
グーグル・クラウド・ジャパン合同会社
Google Cloud ソリューションズ アーキテクト
中井 悦司氏のセッション
SREは最近注目を浴びている職種の一つですが、元になったのはGoogle社で生まれたソフトウェア開発と運用に置ける文化です。
世界規模で多くのサービスを開発・運用しているGoogle社で、エンジニアがどのように取り組んでいるのか、セッションでは、その一部を紹介してくださいました。
50%ルール
Burnout(燃え尽き)防止対策として、50%はデベロッパーとしての仕事、50%は運用の仕事する。50%ルールが脅かされるほど運用作業が増えた場合は、改善を要求できる(手が掛かるシステムは開発チームにつき返すことができる権利をSREチームが持っている)。
Google社と言えど、日々の泥臭い運用作業もこなさなければならない。つまらない仕事ばかりで燃え尽きてしまわないよう、ワクワクする仕事も半分やれる権利が与えられている。
SLO(Service Level Objective)とエラーバジェット
1.0 - SLO = エラーバジェット とし、エラーバジェットがなくなりそうになったら開発チームを巻き込んで改善を最優先で対応する。
時には、SREがシステムを改修することもある。
そもそもSLOが適切であることも大事で、特に新規サービスでは運用しながら調整していく。
しっかりと、目標が数字で管理されていることはとても重要で、先が見えない、根拠が理解できない障害対応をやらされている感をもつことがなくなる。
システム設計をSREにデザインレビューしてもらう
追加機能のオンオフ
問題発生時のロールバック
カナリアリリースに対応した設計
など、共通化、標準化、SREに引き継ぎしやすい作りかたでシステムを設計する。
そもそも、作る前から開発と運用が協力しあって設計するのは無駄がなくてとても良い。
Toil(労苦)の削減
問題解決を最優先して、他人に頼る事を本人のスキル不足とは認識しないことを徹底する。自分一人でなんとかしようと頑張りすぎることがあだになって問題解決に時間をかけてしまうことを防ぐ。
チーム開発ではとても重要なことだけれど、判断はとても難しい。
ここを明確に定義しているのはさすが。
Postmortem(Incidentの振り返り)
障害が起きた時は、一つのGoogleDocsに関係者全員で記憶が薄れないうちにダンプする。その際、個人は避難しない(個人のミスを誘発するシステムを設計したチームの責任と考える)。
改善策の実施はSREチームのプロジェクトとして実施する。
作成したドキュメントは社内全体に公開し、障害対応により得られた知見を全てのエンジニアに共有する。また、障害対応実地訓練にも活用される。
振り返り会がただの思い出話や愚痴で終わってしまうことはないか?
問題を掘り下げてタスク化して改善するところまでやらないと、振り返り会は意味がない。
感想のまとめ
セッションの冒頭にスピーカーの中井氏もおっしゃっていましたが、Google社でやっているから弊社でも・・ということではなく、会社によって合う合わないはあります。
しかし、システムが安定稼働し、ビジネスが成功するために協力しあうことはどの会社やチームでも必要なことで、どんなツールを導入するか?以前に、このような基本になる考え方を会社やチームの文化として浸透させるために、議論を深めていくことはとても大事であると感じました。
これらのことは、書籍「SRE- サイトリアイアビリティエンジニアリング」や「The Site Reliability Workbook」に詳しく記載されているそうです。
SRE本は分厚いですが、今回のセッションを聞いて読む決心をしました(いや、普通に読みなさいと言われそうですが・・)。
まだ、職種としてSREが明確に存在している企業は多くないと思いますが、内容は開発・運用に携わる全ての人に参考になるものではないかともいます。
それに気づくことができて、参加してよかったと思いました。
この記事が気に入ったらサポートをしてみませんか?