# Eliminating Toil
Navigation: [[index]] | [[overview]]
## 概要
SRE Workbook のトイル削減章であり、SRE Book の [[@2016__OReilly__SRE Book - Chapter 5 Eliminating Toil]] で定義されたトイルを、測定、優先順位付け、削減戦略、事例研究へ展開する。トイルは「サービス維持に関係する、反復的・予測可能・継続的なタスクの流れ」として扱われ、手作業、反復性、自動化可能性、事後対応性、永続価値の欠如、発生源以上の速度で増える性質で説明される。
章の前半は、トイルを人間時間やチケットなどの客観単位で測定し、費用対効果と間接効果を考慮して削減プロジェクトを選ぶ方法を示す。後半は Google のデータセンターネットワーク修理自動化と、filer-backed home directories 廃止の 2 事例を通じて、単純な自動化だけでなく、業務プロセスの廃止、部分自動化、セルフサービス、標準化、防御的自動化の重要性を示す。
## 主要主張
- トイルはチームの時間、士気、創造性、キャリア成長を奪うため、一定量は不可避でも上限を置き、測定して減らすべきである。
- 経験や直感によるトイル評価は再現性・客観性・移転性に欠ける。削減効果を四半期や年単位で維持するには、客観単位で継続測定する必要がある。
- トイル削減の費用対効果は、単純な時間節約だけでなく、文脈切り替え削減、士気向上、標準化、訓練時間削減、人為ミス削減、セキュリティ改善などの間接効果を含めて評価すべきである。
- トイル源はチケット処理、割り込み、リリース、移行、費用・容量計画、反復的なトラブルシューティングなど、多くの「普通の業務」に紛れ込む。
- 最適な戦略はトイル源を消すことだが、できない場合は、拒否、遅延、集約、部分自動化、セルフサービス化、ビジネス目標との結合、段階的自動化を組み合わせる。
- 自動化は管理者権限を持つほど危険になるため、入力検証、現在のメトリクス確認、影響範囲制限、タイムアウト、人間へのフォールバックが必要である。
- 人間ワークフローをそのまま機械化するのではなく、部品へ分解し、再利用可能なライブラリとして組み立てるべきである。
- 自動化は利用者や技術者の理解差により誤用されるため、現場利用者を含めたテストとフィードバックが不可欠である。
- トイルを根本から消すには、自動化よりも、古い業務プロセスやレガシーサービスを廃止・置換する方が効果的な場合がある。
## 章の構造
### トイルの定義と測定
- トイルの性質: 手作業、反復、可能なら自動化可能、戦術的でない事後対応、永続価値の欠如、発生源以上の速度で増加。
- 測定手順: トイルを特定し、人間努力を表す単位を選び、削減前・削減中・削減後に継続測定する。
- 測定単位: 分・時間、完了チケット、手動本番変更、予測可能なメール往復、ハードウェア操作など。
- 削減投資判断: 時間節約だけでなく、士気、割り込み削減、標準化、訓練、障害減少、セキュリティ、応答時間短縮を考慮する。
### よくあるトイル源
- チケット駆動プロセス: ユーザー要求は満たすが、静かにチーム時間を消費する。
- 割り込み: ディスク・メモリ・I/O 不足、手動再起動、容量調整など、重要作業から注意を奪う作業。
- リリース: 自動化済みでもロールバック、緊急パッチ、反復的設定変更がトイル化しうる。
- 移行: 一回限りに見えるが、反復的で事業価値が変わらない作業はトイルの性質を持つ。
- 費用・容量計画: 予約購入、ピーク対応、下流・上流制限確認、クラウド課金最適化など。
- 反復的トラブルシューティング: 分散システム化により、同じ脆いアーキテクチャ由来の障害調査が繰り返される。
### トイル管理戦略
- データ駆動でトイル源を比較し、修正費用と削減時間で順位付けする。
- 既存システムに由来するトイルを管理する前に、システムや業務プロセスを変えてトイル源を消せるかを検討する。
- トイル集約や意図的遅延により、割り込みを減らし、パターンを見つけやすくする。
- SLO とエラーバジェットに照らし、サービス健全性へ影響しない作業は無視できる。
- 「カーテンの裏のエンジニア」方式で、構造化入力を API やフォームで集めつつ、一部処理は人間が担う段階を作る。
- typed interface からセルフサービスへ移行し、例外時だけチケットへ劣化させる。
- 管理者支援を得て、新規要求からチームを守り、トイル削減を正当なプロジェクトとして扱う。
- 完璧な自動化を待たず、優先度の高い少数項目から始め、得た時間で改善を重ねる。
- 機器やサービスを「個別ペット」から共通インターフェースを持つ交換可能な群れへ寄せる。
- 自動化は防御的に作り、監視・アラート・計装を人間だけでなく機械オペレータにも消費可能にする。
## 事例 1: データセンターネットワーク修理自動化
Google のデータセンターは、成長に伴い Clos トポロジと SDN を導入し、スイッチ・リンク・ラインカードの数が大きく増えた。初期段階では、エンジニアが安全確認、ドレイン、再起動・修理、アンドレインを手作業で行っていた。この反復作業は典型的なトイルであり、人為ミスや優先順位付け不能も生んでいた。
Saturn 世代では、既存アラートとチケットシステムを再利用し、障害検知からリスク評価、ドレイン、再起動、二度目なら交換ケース作成へ進む修理自動化を導入した。Jupiter 世代では、より高い冗長性を前提に、スイッチを自動ドレインし、インストール、構成、検証、アンドレインまで自動化した。メモリエラーでは 3 年間の過剰分析を経て、詳細な原因切り分けよりも「検出したらドレイン・再起動・再インストールし、再発なら交換」という単純ポリシーで十分だと分かった。
この事例の教訓は、自動化は現場技術者の経験に依存しすぎてはいけないという点だ。新しい技術者が同時ドレインを多数実行して輻輳とパケットロスを起こした例から、UI、進捗フィードバック、影響上限、防御的チェックが必要だと分かる。自動化プロジェクトにもエラーバジェットを設定し、初期失敗を許容しながら改善を続ける管理者支援が必要である。
## 事例 2: filer-backed home directories の廃止
Corp Data Storage(CDS) SRE チームは、Google 社員向けのホームディレクトリと Team Shares を NetApp Storage Appliances 上の NFS/CIFS で提供していた。しかし、Piper、Git-on-Borg、Google Drive、Google Team Drive、Google Cloud Storage、x20 などの代替が成熟し、filer は WAN 遅延、運用費、Beyond Corp 互換性の面で不利になった。さらに、共有作成、権限変更、トラブルシューティング、容量管理、ハードウェア配置などが大きなトイル源だった。
CDS は Moonwalk で利用実態を BigQuery に集め、25 億ファイル、300 TB、6 万 POSIX ユーザー、400 ボリューム、124 NAS、60 地理サイトのアクセスパターンを分析した。単一代替では全用途を満たせなかったため、x20、Team Drive、Colossus、Piper/Git-on-Borg、履歴サービスなど、用途別の代替を組み合わせた。
Moira プロジェクトは、共有の状態・利用情報、無効化、アーカイブ、削除、延長、再有効化を扱うポータルと背景ジョブで、低接触の移行を実現した。ほぼ 2 年かけて機能を育て、最終的にホームディレクトリは 65,000 から約 50 まで減った。教訓は、古いトイル源を自動化するだけでなく、業務要件がずれたプロセスそのものを問い直し、セキュリティなど別の強い事業理由と結びつけると廃止が進みやすいという点である。
## 既存 SRE Book との関係
- [[@2016__OReilly__SRE Book - Chapter 5 Eliminating Toil]] はトイルの 6 特性と 50% ルールを定義する。本章は、その測定、費用対効果評価、削減戦略、Google 内事例を詳述する。
- [[@2016__OReilly__SRE Book - Chapter 7 Automation at Google]] と強く接続する。自動化はトイル削減の手段だが、管理者権限と大規模影響を持つため、防御的ソフトウェアとエラーバジェットが必要になる。
- [[@2016__OReilly__SRE Book - Chapter 10 Practical Alerting from Time-Series Data]] との接点は、アラートトリアージがトイル源になりうる点である。
- [[@2016__OReilly__SRE Book - Chapter 18 Software Engineering in SRE]] とは、運用作業をソフトウェア化し、再利用可能な部品へ分解する思想で接続する。
## 重要概念候補
- [[トイル]]: 測定単位、トイル源カテゴリ、削減戦略、事例を大幅に追記候補。
- [[トイル測定]]: 人間時間やチケット単位でトイルを定量化する新規 concept 候補。
- [[トイル削減投資対効果]]: 時間節約と間接効果を含む削減優先順位付け。
- [[防御的自動化]]: 管理者権限を持つ自動化に安全確認、影響上限、人間フォールバックを入れる設計。
- [[人間支援型インターフェース]]: typed interface と一部手動処理を組み合わせる段階的自動化。
- [[セルフサービス運用]]: Web フォーム、スクリプト、API、設定 pull request によりユーザー要求をサービス所有チームから切り離す。
- [[レガシー業務プロセス廃止]]: トイル源を自動化せず消す戦略。
- [[データセンターネットワーク修理自動化]]: Clos/Jupiter/Saturn のネットワーク修理事例。
## 実体候補
- [[Google]]
- [[Google SRE]]
- [[Saturn]]
- [[Jupiter]]
- [[Clos topology]]
- [[Software-defined networking]]
- [[Corp Data Storage]]
- [[Moonwalk]]
- [[Moira]]
- [[Tekmor]]
- [[Migra]]
- [[Azog]]
- [[NetApp Storage Appliances]]
- [[Piper]]
- [[Git-on-Borg]]
- [[Google Drive]]
- [[Google Team Drive]]
- [[Google Cloud Storage]]
- [[Colossus]]
- [[Beyond Corp]]
- [[BigQuery]]
- [[Bigtable]]
- [[Flask]]
- [[Dave Challoner]]
- [[Joanna Wijntjes]]
- [[David Huska]]
- [[Matthew Sartwell]]
- [[Chris Coykendall]]
- [[Chris Schrier]]
- [[John Looney]]
- [[Vivek Rau]]
- [[Betsy Beyer]]
- [[Max Luebbe]]
- [[Alex Perry]]
- [[Murali Suriar]]
## 統合時に更新すべき既存ページ候補
- [[トイル]]: 本章の測定手順、トイル源カテゴリ、管理戦略、2 事例を中心に大幅更新。
- [[ワークフロー自動化]]: 人間ワークフローをそのまま写すのではなく、部品化・再利用・セルフサービス化する原則を追加。
- [[自動化のアイロニー]]: 自動化が誤用や安全確認不足で障害を拡大しうる事例を接続。
- [[SRE]]: 50% ルールだけでなく、トイル削減を測定・投資判断・業務廃止として扱う実践を追加。
- [[エラーバジェット]]: 反トイル自動化にもエラーバジェットを設定し、初期失敗を許容して改善する考え方を追加。
- [[インシデント管理]]: 割り込みと反復的トラブルシューティングがトイル源になり、SLO と集約で制御する点を追加。
- [[オープンネットワーキング]] または [[ネットワークシミュレーション]]: Clos/Jupiter/Saturn のデータセンターネットワーク修理自動化を関連知見として接続可能。
## 未解決の問い
- トイル測定にチケット数を使うと、チケット化されない割り込みや認知負荷を過小評価しないか。
- 自動化にエラーバジェットを与える場合、その予算はサービス SLO のエラーバジェットとどう接続すべきか。
- LLM エージェントによる運用自動化は、トイル削減と新しいトイル生成のどちらに寄るか。監査、承認、説明、失敗時フォールバックが新しい手作業を作らないか。
## 出典
- Raw: `.raw/articles/eliminating-toil-2026-06-07.md`
- URL: https://sre.google/workbook/eliminating-toil/