この記事はモチベーションクラウドシリーズアドベントカレンダー2021の18日目の記事です。
はじめまして、リンクアンドモチベーションCREチームの粟田です。
本記事では、弊社で行なってきたMTTRの改善をどのようにしてきたか、を題材に、生産性向上を目的とした業務フロー改善のポイントを紹介します。
何について書いてるの?
エンジニア組織における、多種多様な業務を行う中で、改善をしようとするも、以下のような課題にぶつかったことはないでしょうか?
- 課題がなんとなくある気はするが、思い付かない...
- コスパよく改善したいが、時間だけかかっている...
弊社でもMTTRの短縮に目的としたインシデントフローのブラッシュアップを行う際、上記のような壁にぶつかりました。
しかし、以下のステップで課題を特定し、インシデントフローの改善をすることで、最終的にMTTR30分の短縮へとつなげることができ、また一般業務フロー改善にも利用できる内容であるため、紹介したいと思います。
業務フロー改善の3ステップ
- 目標を定める(理想設定)
- 時間を計測・記録する(現状把握)
- 全体→詳細記録した時間から課題を特定し、改善策を打つ(課題設定・解決策立案)
それぞれの内容について、具体的に行った内容を交えつつ紹介したいと思います。
1. 目標を定める
課題は理想と現状のギャップであるため、まず理想を描く必要があります。
そのために、理想となる目標を定めます。
インシデントフローにおける目標は、「MTTR 1時間未満」と設定しました。
書籍「LeanとDevOpsの科学」を参考に、ハイパフォーマーの基準を目指そう、ということで設定しました。
2. かかった時間を記録する
続いて、課題特定の準備として、かかった時間を記録します。
多少面倒かもしれませんが、
- 蓄積すること
- 詳細に洗い出しておくこと
が、課題特定につながりました。
具体的には、二つの情報を記録しています。
※以降転載する図表は実際に数値ではなくサンプルです。
①各インシデントにおける復旧時間をその対応方法とともに、蓄積。
②一つのインシデントにおける各対応内容と、かかった時間などの情報を詳細に記録。
①のそれぞれのインシデントに対して、発生〜暫定対応完了までのステップを、体制構築・原因調査・暫定対応時の詳細な内容に分けて、時間計測をしていました。
3. 全体→詳細と課題を特定し、改善策を打つ
これまでのステップで、理想と現状がわかったので、最後のステップは課題特定と改善策の決定です。
1で決めた目標を達成するために、2で貯めた記録を元にボトルネックとなる課題を特定し、その改善策を決めます。
進め方は、
- 全体で蓄積したデータから、目標と照らして削減マストであり頻度の高い種別を抽出
- 時間がかかっている特定の種別にて、詳細に貯めた時間を確認し、不要に時間をかけている作業を特定
- 対象の作業から改善策を決定
と進めました。
具体的には、
①各インシデントにおける復旧時間の蓄積から、どの対応方法のインシデントが復旧に時間がかかっていたかを特定
図のように、ロールバックを対応方法とする場合、時間がかかる傾向にあることが発見されました。
②ロールバックを行うインシデントの対応時の詳細な時間を確認し、不要に時間をかけている作業と原因を特定
課題抽出から改善策の策定までのアクションは以下のように整理されます。
-
時間がかかっている対象作業の特定
- 詳細に時間の記録より、ロールバックの判断・レビュー・実作業に時間がかかっていることを特定
-
各時間がかかっている作業の妥当性の検証
- 妥当性を検証することで、課題であるフローは、ロールバックの判断とレビューであることを特定
-
課題であるフローの解決できる粒度への整理
- 判断時には、判断基準が不明瞭であったために実行の判断に時間がかかってしまったことが課題であることと整理
- レビュー時はレビュー依頼の際のコミュニケーションの取り方が悪く、レビュワーが気づけなかったことが課題であると整理
-
改善策の決定
- インシデント時のロールバックの際の判断基準の明確化
- 緊急リリースの際のレビュー依頼
上記流れを踏むことにより、最終的には冒頭にも述べたような30分のMTTRの改善へとつながりました。
まとめ
今回ご紹介した事例のように、時間の計測や記録には多少工数を要するものの、3ステップで課題特定→改善することによって、妥当性が高く、かつコミュニケーションフローの整備といったようなコスパの良い策で改善をすることができるようになります。
インシデントフローの改善はもちろん、リリース作業フローなどといった定常的な業務にも適用できると考えておりますので、業務改善にお役立ていただければ何よりです。