Skip to content

インシデント対応とトラブルシューティング

はじめに

午前3時、携帯電話が激しく振動し、オンラインサービスが全面的にダウンしている——あなたはどうするか? どのインターネットチームにとっても、インシデントは「起きるかどうか」の問題ではなく、「いつ起きるか」の問題です。優れたチームとは、インシデントが起きないチームではなく、インシデントが起きた際に迅速に対応し、効率的に復旧し、そこから学んで同じ過ちを繰り返さないチームです。

この記事で学べること

この章を終えると、次のことが身につきます:

  • 重大度分類の意識:P0〜P4 のインシデント重大度グレード基準を習得
  • 対応プロセス:検出から復旧までの完全なインシデント対応タイムラインを理解
  • 組織的連携:インシデント指揮システムにおける役割分担と協力メカニズムを理解
  • アラート体系:重要な問題を見逃さないためのアラートエスカレーション戦略を習得
  • ポストモーテム手法:「5つのなぜ」を使って根本原因を掘り下げ、価値のある振り返りレポートを作成
内容コア概念
第1章重大度分類P0〜P4、影響範囲の評価
第2章対応タイムライン検出→対応→復旧→振り返り
第3章指揮システムIC、コミュニケーションリード、テックリード
第4章アラートエスカレーション段階的アラート、段階的エスカレーション
第5章ポストモーテム5つのなぜ、非難しない文化

0. 全体像:障害は最良の教師である

Netflix には Chaos Monkey という有名なツールがあります——本番環境のサーバーをランダムに終了させます。狂っているように聞こえますが、背後にあるロジックは明確です:障害がやってくるのを待つより、意図的に障害を起こしてチームのインシデント対応能力を鍛えるということです。

インシデント対応は思い付きで行うものではなく、プロセス、役割、ツールの三位一体による体系的な構築に依存しています。消防隊が火災発生時に結成されるのではないのと同じで——彼らは普段から訓練、演習、設備の保守を行っています。

インシデント対応の4つのコア要素

  • 迅速な検出:包括的なモニタリングとアラートシステムにより、ユーザーが気づく前に問題を発見
  • 効率的な連携:明確な役割分担とコミュニケーションメカニズムにより、混乱中の重複作業を回避
  • 迅速な復旧:根本原因の特定よりもサービスの復旧を優先。まず止血し、それから治療する
  • 継続的改善:すべてのインシデントは学習の機会。ポストモーテムを通じてシステムとプロセスを継続的に改善

1. 重大度分類:すべてのインシデントに「全員出動」が必要なわけではない

ボタンの色の表示エラーと、決済システム全体のダウンは、明らかに同じレベルの問題ではありません。インシデント分類は、チームが適切なレベルのリソースで適切なレベルの問題に対応できるようにするためのものです——過剰反応でリソースを無駄にすることもなく、問題を軽視して損害を拡大させることもありません。

Incident Severity Levels
Select a level to understand response requirements and real examples.
P0
Critical Incident
Core business is completely unavailable, many users are affected, and there is serious financial loss or data loss risk.
Immediate response, staffed within 5 minutes
PhoneSMSChatEmail
Primary database is down and all reads/writes fail
Payment system is unavailable and users cannot order
Large-scale user data leakage
Incident commander joins within 5 minutes
Update management every 15 minutes
All relevant teams cancel leave and assist immediately
Complete postmortem within 24 hours
Level Comparison
LevelUser impactResponse timeOn-call requirement
P0All usersImmediate response, staffed within 5 minutesAll hands
P1Many usersRespond within 15 minutesCore team
P2Some usersRespond within 1 hourOn-call engineer
P3Very few usersAcknowledge today, handle this weekNormal planning
P4No direct impactSchedule by priorityNo on-call needed
レベル名称影響範囲対応要件
P0致命的コアビジネスが完全に利用不可即時対応、全員待機決済システムのダウン、データ漏洩
P1重大コア機能が深刻に損なわれている15分以内に対応ログイン失敗率 > 50%、API の広範なタイムアウト
P2重要一部の機能が異常1時間以内に対応検索結果が不正確、一部のページが500エラー
P3軽微非コア機能が異常営業時間内に対応アバターの読み込み失敗、非重要な通知の遅延
P4UXの問題イテレーションに組み込むUIのズレ、コピーの誤り

分類の基本原則

  • 影響を受けるユーザー数:100%のユーザーに影響するP2は、1%のユーザーに影響するP1よりも緊急度が高い場合がある
  • ビジネスへの影響:収益に直接影響する問題(決済、注文)は優先度が高い
  • 段階的対応の可能性:影響を軽減する一時的な回避策がある場合、重大度を適切に下げることができる
  • 動的調整:調査が進むにつれて、レベルの引き上げや引き下げが行われる可能性がある

2. 対応タイムライン:検出から振り返りまでの完全なプロセス

インシデント対応はリレー走のようなもので、各段階に明確な目標とバトンタッチのポイントがあります。明確なタイムラインは、チームが混乱の中でも秩序を保つことを可能にします。

Incident Response Timeline
Select each phase to understand key actions.
1
Detect
T+0
2
Triage
T+5min
3
Mitigate
T+15min
4
Resolve
T+1h
5
Postmortem
T+48h

インシデント対応の5つの段階

  1. 検出(Detection):モニタリングアラート、ユーザーからの報告、または内部点検を通じて異常を発見。目標:できるだけ早期に発見し、MTTD(平均検出時間)を短縮。
  2. 対応(Response):インシデントの確認、重大度の評価、対応チームの招集、コミュニケーションチャネルの確立。目標:迅速に効果的な対応体制を構築。
  3. 緩和(Mitigation):デプロイのロールバック、バックアップノードへの切り替え、レート制限/デグレードなどの一時的な措置でサービスを復旧。目標:まず止血し、ユーザー体験を回復。
  4. 解決(Resolution):根本原因を見つけて完全に修正。目標:根本的な問題を排除し、再発を防止。
  5. 振り返り(Postmortem):プロセス全体を振り返り、根本原因を分析し、改善措置を策定。目標:障害から学び、システムをより堅牢にする。
指標意味最適化の方向性
MTTD平均検出時間モニタリングカバレッジの向上、アラート閾値の引き下げ
MTTR平均復旧時間復旧の自動化、対応計画のリハーサル
MTBF平均故障間隔システムの信頼性向上、単一障害点の排除

3. 指揮システム:この「戦い」を指揮するのは誰か?

大規模なインシデントで最も恐れるべきは技術的な難題ではなく、混乱です——十数人が同時に調査を行い、誰も他人が何をしているのかを知らず、重要な情報が様々なチャットグループに断片的に拡散しています。インシデント指揮システム(Incident Command System)は、この問題を解決するために存在します。

Incident Command System
Click a role card to understand responsibilities and collaboration.
🎖️
Incident Commander
Incident Commander
📢
Communications Lead
Communications Lead
🔧
Operations Lead
Operations Lead
💻
Development Lead
Development Lead
🎖️Incident Commander
1Coordinate the entire incident response
2Make key decisions such as rollback, traffic shifting, and degradation
3Keep roles collaborating without confusion
4Control response rhythm and synchronize progress regularly
Big-picture viewDecision makingCoordinationStress management
"Current status: payment service is unavailable. Ops checks the database, backend prepares rollback, comms updates every 10 minutes."
Scenario: P0 Payment System Incident
14:02MonitoringPayment success rate drops from 99.9% to 12%, triggering P0 alert.
14:03CommanderConfirms P0 incident, opens incident channel, gathers roles.
14:05CommsNotifies management and updates status page to degraded service.
14:08OpsFinds primary DB CPU at 100% and connection pool exhausted.
14:10DevIdentifies yesterday slow query release as root cause.
14:12CommanderDecision: rollback yesterday change and perform DB failover immediately.
14:15OpsDatabase failover complete and connections recover.
14:18DevCode rollback deployment complete.
14:20CommsPayment success rate recovers to 99.8%; service recovery announced.

3つのコアとなる役割

  1. インシデントコマンダー(Incident Commander, IC):インシデント対応の全体責任者。意思決定、リソースの調整、ペースの管理を担当。ICは最も技術的に優れている必要はありませんが、最も冷静で、最も大局観のある人でなければなりません。
  2. コミュニケーションリード(Communication Lead):外部コミュニケーションを担当——ステータスページの更新、顧客への通知、経営陣への報告。これにより、ICと技術スタッフはコミュニケーションの業務に邪魔されることなく、問題の解決に集中できます。
  3. テックリード(Tech Lead):技術的な調査と修復を担当。技術スタッフの分業を組織し、ICに進捗とソリューションを報告。

4. アラートエスカレーション:重要な問題を見逃さない

アラートシステムはインシデント対応の「目」です。しかし、アラートが少なすぎると見落としが生じ、多すぎると「アラート疲労」を引き起こします——毎日何百ものアラートを受け取っていると、本当に重要なものが簡単に埋もれてしまいます。アラートエスカレーション戦略がこの問題を解決する鍵です。

Alert Escalation
Choose a scenario and observe how alerts escalate.
📡
Monitoring detects issueT+0s
Prometheus detects exhausted DB connection pool and query timeouts.
Automatically triggers P0 alert.
📱
On-call engineerT+30s
Phone, SMS, and chat notify the on-call DBA at the same time.
👥
Team leadsT+5min
Automatically escalates to database and backend team leads.
🎖️
Engineering directorT+15min
Issue is not mitigated, so it escalates to director.
🏢
VP / CTOT+30min
Major incident escalates to executives for external communication.
Escalation Rules
P3/P4 alerts: notify only the on-call engineer; no escalation needed.
P2 alerts: escalate to team lead if not acknowledged within 15 minutes.
P1 alerts: escalate after 5 minutes unacknowledged, then to director after 30 minutes unresolved.
P0 alerts: notify the whole chain immediately; escalate to VP/CTO if not mitigated within 15 minutes.

アラートエスカレーションの3層のメカニズム

  1. 一次対応(L1):アラートがトリガーされたら、まずオンコールエンジニアに通知。15分以内に確認されない場合、自動的にエスカレーション。
  2. 二次エスカレーション(L2):チームリーダーと関連ドメインの専門家に通知。30分以内に緩和されない場合、さらにエスカレーション。
  3. 三次エスカレーション(L3):技術責任者と経営陣に通知、全面的な緊急対応を開始。
アラートレベル通知方法対応期限エスカレーション条件
WarningIM メッセージ営業時間内に対応30分間未解決の場合
Critical電話 + IM15分以内に確認未確認または未緩和の場合
Fatal電話一斉発信 + SMS5分以内に対応経営陣に自動エスカレーション

5. ポストモーテム:障害から学ぶ

インシデントが解決された後、最も重要なステップはポストモーテム(振り返り)です。ポストモーテムは責任を追及するためではなく、システム的な改善の機会を見つけるためのものです。GoogleやMetaなどの企業は「非難しないポストモーテム」文化を実践しています——「誰がこのエラーを犯したか」ではなく、「なぜシステムがこのエラーの発生を許したのか」に焦点を当てます。

Postmortem: 5 Whys Analysis
Click "Ask again" to dig layer by layer into root cause.
SymptomDepth 0 / 4
💡Payment system was completely unavailable for 18 minutes during peak traffic.
Postmortem Template
1Incident summary+
2Timeline+
3Impact assessment+
4Root cause analysis+
5Improvements+
6Lessons learned+

「5つのなぜ」分析法

表面の症状から出発し、「なぜ」を繰り返し問い続け、根本原因に到達します:

  1. なぜサービスがダウンしたのか? → データベース接続プールの枯渇
  2. なぜ接続プールが枯渇したのか? → スロークエリが接続を占有して解放しない
  3. なぜスロークエリがあるのか? → インデックスがなく、フルテーブルスキャンが発生
  4. なぜインデックスがないのか? → 新規テーブルのリリース時にDBAレビューがなかった
  5. なぜレビューがなかったのか? → 必須のSQLレビュープロセスが存在しない

根本原因は「誰かがインデックスを追加するのを忘れた」ことではなく、「SQLレビュープロセスが存在しない」ことです。根本原因を修正してこそ、再発を防止できます。


まとめ

インシデント対応とトラブルシューティングは、すべての技術チームに不可欠な能力です。個人のヒーロー的な活躍に頼るのではなく、体系的なプロセス、明確な役割分担、継続的なポストモーテムによる改善に依存するものです。

この章の重要ポイントを振り返ります:

  1. 段階的対応:P0〜P4 の分類により、各レベルの問題に適切な対応力度を確保
  2. 明確なタイムライン:検出→対応→緩和→解決→振り返り、各段階で目標が明確
  3. 指揮システム:IC + コミュニケーションリード + テックリード、役割分担により混乱を回避
  4. アラートエスカレーション:段階的アラート + 自動エスカレーションで重要な問題を見逃さない
  5. 非難しないポストモーテム:「5つのなぜ」で根本原因を掘り下げ、個人の責任追及ではなくシステムの改善に注力

参考文献