オンコールとは?エンジニアリングのローテーション解説
オンコールとは、インシデントやアラートが発生したときに迅速に対応するため、多くの場合は通常の勤務時間外に、エンジニアを待機させる実践です。
システムは常に稼働しているため、誰かが常に対応できる状態でなければなりません。オンコールは、チームがそのカバレッジを提供する方法です。エンジニアのローテーションで、一定期間その責任を担い、呼び出されたときに応答します。うまく運用すれば持続可能で公平ですが、まずいと人を燃え尽きさせます。
オンコールであることの意味
オンコールのエンジニアは、そのシフト中のインシデントに対する指定された第一対応者です。呼び出されたら目標時間内に連絡が取れ、反応できることに同意します。この役割は可用性とオーナーシップに関するものです。何かが壊れたとき、オンコールの人こそがアラートシステムが連絡する相手です。
ローテーションとカバレッジ
チームはローテーションを通じてオンコールを分担し、一人が常に負担を背負わないようにします。スケジュールは誰がどの時間帯をカバーするかを定義し、シフト間で引き継ぎを行います。良いローテーションは負荷を公平に分散し、バックアップを用意し、時間外のカバレッジが分配・補償されるべき現実の負担であることを尊重します。
オンコールを持続可能にするもの
持続可能なオンコールは、低いアラートノイズ、良質なドキュメント、そして呼び出しを最小化すべきコストとして扱う文化に依存します。システムが信頼でき、アラートが調整されていてオンコールが静かであれば、耐えられます。すべてのシフトが絶え間ない呼び出しを意味するなら、それは離職を招きます。アラート量を減らすことが本当の解決策です。
runbookとツール
オンコールの有効性は準備から生まれます。一般的なアラートへの対処法を記したrunbook、システムの状態を示すdashboard、アラートを確実にルーティングするツールです。夜中に起こされた対応者が、システムをリバースエンジニアリングする必要はあってはなりません。行動するための知識は準備され、手元にあるべきです。
オンコールとdeploy
オンコールとdeployは密接に相互作用します。deployした人が影響への対処に最も適しているため、チームは週末や引き継ぎの直前にリスクの高いdeployを避けることがあります。deployのオーナーシップをオンコールの認識に結びつけ、変更を送り出した人が連絡可能な状態にすることで、不良なリリースから修正までの道のりが短くなります。
重要なポイント
- オンコールとは、インシデントの指定対応者になることを意味します。
- ローテーションは負担をチーム全体で公平に分け合います。
- 持続可能なオンコールは、低いアラートノイズと良質なドキュメントに依存します。
- deployのタイミングとオーナーシップはオンコールのカバレッジと結びついています。