Toil(機械的作業)
定義
Toilとは、プロダクションサービスを動かすための作業のうち、以下の特性をすべて持つものを指す:
| 特性 | 説明 |
|---|---|
| 手動 | 人間が実際に操作する必要がある |
| 繰り返し | 同じ作業が定期的に発生する |
| 自動化可能 | ソフトウェアで代替できる |
| 戦術的 | 長期的な価値を生まない、応急処置的 |
| スケーリング問題 | サービス成長に比例して作業量が増える |
例:サーバーの手動再起動、デプロイ前チェックリストの手動実行、週次で取るスナップショット
なぜ重要か
Toilが増えると:
- エンジニアのモチベーションが低下する(意味のない繰り返し)
- Toilが50%を超えると、本来のエンジニアリング活動ができなくなる
- サービスが大きくなるほど線形以上に増大するため放置すると限界が来る
GoogleのSREは「Toilを全業務の50%以下に保つ」ことを組織的に約束している。
適用場面
- チームが「忙しい割に前進している感じがない」と言い始めたとき
- オンコール対応が毎回同じ操作の繰り返しになっているとき
- 新メンバーが「なんでこれ手動でやるの?」と聞いてくるとき
Toil削減のアプローチ
- まず測定する — 週ごとに何時間費やしているかを記録
- 原因を分類する — アラート対応・デプロイ・設定変更など
- 最大のToil源から自動化 — 投資対効果が高いものを選ぶ
- 削減できないToilは受け入れる条件を明確化 — SLOで管理
関連ルール
出典
Google SRE Workbook(Betsy Beyer他)第6章「Eliminating Toil」