トイルの可視化及び削減の運用
背景
日々業務の中で定期的もしくは突発的に行われる作業(そういった作業をトイルと呼びます)がありました。 随時それらを課題として上げて解決していくものもあれば、特に課題として上げなかったものや、解決せずに放置されたものもあり、潜在的にトイルが多数ありました。 また、トイルの管理が行われていない事により、トイルそのものがどれだけ存在するか、またどれだけの時間が奪われているのか分からない状況でした。
システムの信頼性を向上する為には、トイルを把握及び削減し、システム及び信頼性向上の為の開発に時間を費やすべきです。そこで、トイルの削減を目的にトイルの可視化及び削減の運用を始めることにしました。
実践手順
1) トイルを定義する
2) トイルの洗い出し方法、測定方法、タスクの作成方法を決定
3) 2)を基にトイルの洗い出しと測定、タスクの作成、タスクの消化
4) 3)を繰り返し行う
内容
1) トイルを定義する
次の2点のいずれかもしくは両方を満たす作業をトイルと定義しました。
項目 | 内容 |
---|---|
開発者が関わる作業 | 開発者が行う突発的な作業や定期的な作業を含みます。総じて開発者の時間を奪う作業を指します。 一方日々行われる広告登録などのオペレーションは含めません。そういったオペレーション課題はSRE側ではなく、開発側で管理してもらう事にしています。 |
サービスを動作させるために必要な作業 | サービスの売上に関わる失敗したバッチ処理の再実行などが含まれます。 採用活動などサービス自体とは関係無い活動は含みません |
上記を満たした上で、基本的には次のいずれか1つ以上を満たすものとしました。
項目 | 例 |
---|---|
手動で行う作業 | 失敗したバッチを、手動で再実行する |
繰り返し行う作業 | バッチが失敗するたびに、手動で再実行する |
長期的な価値を持たない作業 | アラートにより該当サーバにログインし、確認するのみ。 |
割り込みで始まった作業 | アラート対応 |
サービスの成長に比較して増える作業 | 手動でスケーリングを行う |
トイルの例
- バッチの失敗による通知があれば、最初に気づいた人が手動で再実行する
- アラートの発生により何度もアクセスする過去のログの探索に時間がかかる
- 失敗したバッチのソースコードの置き場所が分からない
トイルでは無いものの例
- サービスやツールの作成
- スケーラビリティや信頼性のための機能の追加
- ApacheやMySQLなどミドルウェアの設定変更
- カーネルパラメータのチューニング
- ドキュメントの作成
- アラート設定
2) トイルの洗い出し方法、測定方法、タスクの作成方法を決定
次のフローでトイル削減の運用する事にしました。
- 月1回のアンケートでトイルの確認
- タスク管理ツールにアンケート結果をコピーし、月1回の開発者とSREが集まるMTGで確認
- 各アンケート結果について次の項目を確認
- トイルであるか
- 過去1ヶ月間でどれくらい時間を奪われたか
- タスクの作成
- 作業難易度
- 容易(1時間~1日程度)
- 普通(1日~3日程度)
- 困難(4日以上)
- 担当者
- 優先度
- ほとんど発生しない。年に数回程度
- 定期的に発生する。月1程度
- 作業や調査などに大量に時間を消費するトイル。毎週発生する
- 対応期限
- 作業難易度
3) 2)を基にトイルの洗い出しと測定、タスクの作成、タスクの消化
● Google Formsを使用してアンケートの実施
対象者はエンジニアのみとし、トイルの精査は全員で行うため、アンケート自体は負担を減らすために質問は1つのみにし、回答も曖昧で良いものとしました。
実際に行った質問内容は次の画像を参照してください。
● 全アンケート結果をタスク管理ツールに記載
タスク管理ツールとして使用いていたAsanaを用いて、次のボードを作成しました。
ボードには未設定
、To-Do,進行中(優先度1)
などのセクションを作成し、その中の未設定
に全アンケート結果を記載しました。
● アンケート結果の精査
記載した内容を元に、月1回で行う開発チームとSREチームが集まるMTG中に精査しました。
2)
の 3.
と4.
を基に、アンケート結果の精査及びタスクを作成し、それらをTo-Do,進行中(優先度1)
などのセクションに移動させました。
4) 3)を繰り返し行う
タスクとして作成したトイルを削減しつつ 3)
を繰り返します。
参考文献
Besty Beyer, et al. 編, 澤田 武男, et al. 監訳, 玉川 竜司 訳. SRE サイトリリアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム. オライリー・ジャパン, 2017