トイル

手作業で繰り返し行われる運用作業で、自動化によって削減すべき対象

SRE運用

トイルとは

トイル (Toil) は、Google の SRE (Site Reliability Engineering) が定義した概念で、手作業で繰り返し行われ、自動化可能で、サービスの成長に比例して増加する運用作業である。トイルを削減し、エンジニアリング作業 (自動化、設計改善) に時間を使うことが SRE の目標。

トイルの特徴

特徴 説明
手作業 人間が手動で実行 SSH してログを確認
繰り返し 同じ作業を何度も行う 毎朝のデプロイ確認
自動化可能 スクリプトやツールで置き換え可能 手動のDB バックアップ
戦術的 長期的な価値を生まない アラートの手動対応
スケールしない サービスの成長で作業量が増加 ユーザー追加の手動処理

トイルの例

手動デプロイは CI/CD パイプラインに、手動のサーバー設定は IaC (SAM, Terraform) に、手動のログ確認は CloudWatch Alarm + SNS に、手動の証明書更新は ACM (自動更新) に、手動のスケーリングは Auto Scaling に、手動のバックアップは DynamoDB PITR や RDS 自動バックアップに置き換える。

Google SRE の 50% ルール

SRE チームの作業時間の 50% 以上をトイルに費やしてはならない。50% を超えたら、自動化に投資してトイルを削減する。

理想: エンジニアリング 70% / トイル 30%
許容: エンジニアリング 50% / トイル 50%
危険: エンジニアリング 30% / トイル 70% → 自動化に投資

トイルの測定

1. 1 週間の作業を記録
2. 各作業を「トイル」か「エンジニアリング」に分類
3. トイルの割合を計算
4. 最も時間を消費しているトイルから自動化

AWS でのトイル削減

インフラ構築は CloudFormation / SAM、デプロイは CodePipeline / GitHub Actions、モニタリングは CloudWatch + SNS、スケーリングは Auto Scaling や Lambda、バックアップは DynamoDB PITR や RDS 自動バックアップ、証明書管理は ACM (自動更新)、シークレット管理は Secrets Manager (自動ローテーション) で自動化する。

サーバーレスとトイル

Lambda + DynamoDB + API Gateway のサーバーレス構成は、サーバー管理、パッチ適用、スケーリングのトイルをゼロにする。

実務での活用方法は関連書籍にも詳しい。

関連用語