MogLog

メモというか日記というか備忘録というか

『SRE サイトリライアビリティエンジニアリング』第5章読んだ

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

以下、『SRE サイトリライアビリティエンジニアリング - Googleの信頼性を支えるエンジニアリングチーム -』の第5章を読みながらメモをとったもの。第5章は「トイルの撲滅」というタイトル。


トイルの定義

  • トイルとは何か

    • トイルとは、プロダクションサービスを動作させることに関係する作業で、手作業で繰り返し行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、作業量がサービスの成長に比例するといった傾向を持つもの
  • 以下の項目に1つ以上当てはまる仕事はトイルの度合いが高いと言える

    • 手作業であること
      • 例えば自動化スクリプトを手作業で実行する作業。スクリプト化して手作業を減らしてはいるが、スクリプトを実行するために人間が作業しなければならないのはトイルの時間と言える
    • 繰り返されること
      • 初めての作業や2回目程度の作業であれば、それはトイルではない。トイルは繰り返し何度も何度も行われるもの
    • 自動化できること
      • マシンが人間同様に行えるタスクや、そのタスクの必要性が無くなる仕組みが作れるのであれば、その仕事はトイルである
      • 逆に、人間の判断が欠かせないタスクはトイルではない
    • 戦術的であること
      • トイルは戦略的であったり予測に基づくものではない。割り込みで始まり、問題などが生じたことへの対応として行われる作業である
      • オンコールの対応はトイルである。この種の作業は完全に無くすことは難しいが、最小限になるように努めなければならない
      • memo: “戦術的” の対義語にあたるのが “戦略的” ?
    • 長期的な価値を持たないこと
      • あるタスクを終えた後でも、サービスが同じ状態のままなのであれば、そのタスクはおそらくトイルである
    • サービスの成長に対して O(n) であること
      • サービスのサイズ、トラフィック量、ユーザ数などに比例してスケールするようなタスクが含まれているなら、それはトイルである

トイルは少ないほうが良い理由

  • GoogleのSREチームは、トイルを各人の作業時間の50%以下に抑えるという目標を掲げている
    • SREの作業時間のうち、最低でも50%は将来のトイルを削減するか、サービスに機能を追加するエンジニアリングに費やされるべき
    • トイルを確認しないままにしておくと、急速に拡大して全員の時間を100%埋め尽くしてしまう傾向があるため、この目標を掲げている
  • トイルを減らし、サービスをスケールさせる作業が、サイトリライアビリティエンジニアリングにおける「エンジニアリング」である

エンジニアリングであるための条件

  • エンジニアリングの作業とは、新しいことをするためのものであり、本質的に人間の判断を必要とする
  • サービスに恒久的な改善を加え、戦略によって導かれる
  • 典型的なSREの活動はおおよそ以下のように分類できる
    • ソフトウェアエンジニアリング
    • システムエンジニアリング
      • プロダクションシステムの設定、設定の変更、システムに関するドキュメント作成が含まれ、1回の作業で改善効果が持続するような方法で行われる
      • 例:モニタリングのセットアップと更新、ロードバランシングの設定、サーバの設定、OSのパラメータチューニング
    • トイル
      • サービスを稼働させることに直結している作業で、繰り返されたり、手作業だったりするもの
    • オーバヘッド
      • サービスを稼働させることに直結していない管理的な作業
      • 例:採用、人事の事務作業、ミーティング、バグのキューの整理、スニペット、ピアレビュー、自己評価

トイルは常に悪なのか

  • トイルは、必ずしも全員を不幸にしてしまうわけではない
    • 予測可能な繰り返しのタスクはごく穏やかなものである。こういったタスクは達成感と手っ取り早い勝利の感覚を生む
    • 低リスクでストレスが少ない活動であることが多い
    • 場合によっては、トイルを含むタスクに引き寄せられ、この種の作業を楽しめる人さえいる
  • トイルは常に同じように悪いわけではなく、多少のトイルは避けられないものだということは誰もがはっきりと認識しておかなければならない
  • 少量のトイルは気にしなくてよい。特にエンジニアがそういった少量の作業を楽しめるのであれば、トイルは問題ではない
  • 逆に言うと、 大量に処理しなければならなくなったときにトイルは有害になる
  • 多すぎるトイルが悪である代表的な理由
    • キャリアの停滞:キャリアアップが遅くなったり急停止する。つまらない仕事がキャリアを生み出すことはない
    • モラルの低下:多すぎるトイルは燃え尽きや倦怠、不満につながる