トイルとは
トイル(Toil)とは直訳すれば「労苦」であり、プロダクションサービスを動作させることに関する作業で、手作業で繰り返し行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、作業量がサービスの成長に比例するといった傾向を持つものを指す。SREにおける重要な概念の一つであり、SREは日常的にトイルに対応しつつも、最低50%以上はエンジニアリングに当てるべきであるとされる。
トイルの定義
SREにおけるトイルは運用タスクを指すことが多いが、単純に「運用」や「やりたくない仕事」に置き換えられるものではない。一般的にトイルは以下の特徴を持つ。
・手作業であること
自動化されていない多くの仕事。スクリプトの実行を手作業で行う場合も含む。
・繰り返されること
トイルとは繰り返し行われる作業を指す。ある作業をするのが初めてだったり、新しい解決策を生み出しているのであればそれはトイルではない。
・自動化できること
機械的に置き換え可能な仕事はトイルである。逆に人間の判断が欠かせないものはトイルではない。
・戦術的であること
トイルは戦略的であったり予測に基づくもの(proactive)というより、割り込みで始まり何らかの対応を強いられるもの(reactive)である。例えばページャーのアラートへの対応はトイルである。このような仕事を完全になくすことはできないが、最小限になるよう努力する必要がある。
・長期的な価値を持たないこと
あるタスクの後でサービスが同じ状態だとすれば、それはトイルといえる。逆にそのタスクによって恒久的な改善が加えられれば、それはトイルではない。
・サービスの成長に対してO(n)であること
サービスのサイズ、トラフィックの量、ユーザー数などに比例してスケールするようなタスクはトイルである。
トイルとトイル以外の活動の分類
典型的なSREの活動は以下の4種類に分類できる。
・ソフトウェアエンジニアリング
コードの作成や修正、関連する設計やドキュメンテーション。一例を上げると自動化スクリプトの作成やスケーラビリティ担保のための機能の追加など。
・システムエンジニアリング
システムの設定や変更など。モニタリングのセットアップやOSのパラメーターチューニングも含む。
・トイル
サービスを稼働させることに直結している作業で、繰り返されたり、手作業だったりするもの。
・オーバーヘッド
サービスを稼働させることに直結してない管理的な作業。採用やミーティングなど。
トイルは急増しがちであるが、SREは最低50%をエンジニアリングの作業に当てることが求められる。
トイルの弊害
トイルのような手作業での運用業務は手軽な達成感をもたらすため、この種の仕事を好む人もいる。しかし、大量に処理しなければならなくなった時、トイルは以下の理由で有害である。
・キャリアの停滞
プロジェクトに使う時間が少なくなればキャリアアップが遅くなる可能性がある。
・モラルの低下
多すぎるトイルは燃え尽きや不公平感、倦怠に繋がる。
・混乱の発生
エンジニアリングではなくトイルにばかり時間が割かれるとSREの存在意義が難しくなる。
・進捗速度の低下
過剰なトイルはチームの生産性を下げる。
・習慣づけ
SREチームのトイルへの取り組みが熱心すぎると、本来開発側で行うべき運用タスクまで担当することになってしまう。
・摩擦の発生
チーム内にはトイルに不満を抱く人間もいる。
・信義違反
プロジェクトの作業を約束されて採用された人間がトイルばかりを行う結果になると、裏切られたと思われる危険性がある。
まとめ
SRE活動におけるトイルをゼロにすることは難しいが、自動化するなど少しずつ減らすことはできる。イノベーションを増やし、トイルを減らそう!
この記事が気に入ったらサポートをしてみませんか?