アドベントカレンダー10日目:SREを読んでみた「トイルの撲滅」編

  • 2020.12.13
184
NO IMAGE

今回から新しい章に入ります。
新しい内容は、タイトル通りトイルの撲滅についてです。

トイルの定義

トイル(toil)とは、直訳で「労苦」という意味ですが、SREにおいては、どのような意味を持つのでしょうか?何がトイルに分類されるのでしょうか?
トイルは、単につまらない仕事というわけではありません。例えば、行わなければならない管理上の作業(チームのミーティングやタスクの報告)は、これはオーバーヘッドにあたります。長期的な価値のあるつまらない仕事もあります。例えば、サービスのアラートの設定全体をクリーンアップするなどです。これは、トイルには当たりません。
トイルに関しては、以下のようなものであると説明されています。

トイルとは、プロダクションサービスを動作させることに関係する作業で、手作業で行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、作業量がサービスの成長に比例するといった傾向を持つものです。1

開発という視点からすれば、このトイルへ対処することがSREの主な仕事になると思います。
すべてを満たす必要はないですが、タスクがトイルと判断される以下は観点になります。

  • 手作業であること
    見逃しがちだと思いますが、何らかのスクリプトを実行させるのに必要な時間もトイルとなります。
  • 繰り返されること
    一回や二回程度では、トイルにはならず、何度も繰り返される作業のことです。ただ、ミーティングのようなそれが何かの解決策になっている場合は、これにあたりません。
  • 自動化できること
    マシンが自動で行える作業やそのタスクを行う必要性をなくせる仕組みが作れるのならば、トイルになります。人間の判断が必要な物はトイルとは言えないです。
  • 戦術的であること
    戦略的、計画的に行われることではなく、割り込みなどから生じたものへの対応として、行うことはトイルになります。この手のタスクは完全になくすことはできないですが、少なくする様に努める必要があります。
  • サービスの成長に対して、O(n)であること
    サービスが成長するごとに作業が増すものです。

トイルに対処しなければ、サービスが成長するごとにトイルの量が増し、やがて作業の内の100%がトイルになってしまいます。
従来のシスアド方式のように、シスアドチームを肥大化させないためには、トイルを見つけ出し、自動化することが重要です。

タスクの分類

トイルかそうでないかという観点が持てれば、システムにおいて、必要な作業を見極めることができます。
典型的なSREの活動は、以下のようなものがあります。

  • ソフトウェアエンジニアリング
    コードの作成や修正を含む作業であり、設計やドキュメント作成作業も含みます。
  • システムエンジニアリング
    プロダクションの設定、設定の変更、システムに関するドキュメントの作成などです。一回の作業で改善効果が持続する方法で行われます。
  • トイル
  • オーバーヘッド
    サービスを稼働させるのに直接関係のない管理的な作業

トイルが及ぼす悪影響

トイルは、完全になくすことができるものではなく、少量ならば、手っ取り早く達成感をえることができるかもしれません。
しかし、トイルが多すぎる場合には、注意必要です。
トイルが多すぎることによる悪影響は、たくさんありますが、例として以下のようなものが挙げられています。

  • キャリアの停滞
    つまらない仕事からは、キャリアを生み出すことはできません。
  • モラルの低下
    多すぎるトイルは、燃えつきや倦怠、不満につながります。
    1

やりがいの感じられない仕事とは、トイルの多い仕事と言い換えることができるかもしれません。逆を言えば、トイルを減らすこと自体を仕事へのやりがいに変換できるとも考えられます。

まとめ

  • トイルとは、手作業で繰り返し行われるもののこと
  • トイルを減らさないと、やりがいも減っていく

雑記

  • 一日のタスクを分類してみる。

引用

  1. Betsy Seyerほか SRE サイトリライアビリティエンジニアリング オライリー 51-56