장애 사후 분석 보고서 (Incident Postmortem)
장애 발생 원인을 분석하고 재발 방지 대책을 수립하기 위한 사후 분석 보고서 템플릿입니다.
장애 사후 분석 보고서: [서비스명/장애 요약]
날짜: 2026-05-05
작성자: [이름]
상태: [Draft / Reviewed / Completed]
1. 개요 (Summary)
장애의 전반적인 요약입니다. 무엇이 발생했고 어떤 영향이 있었는지 2~3문장으로 기술합니다.
- 장애 발생: 2026-05-05 14:00 (KST)
- 장애 복구: 2026-05-05 15:30 (KST)
- 총 장애 시간: 90분
- 영향 범위: [예: 결제 API 호출 실패, 전체 사용자의 약 15%]
2. 타임라인 (Timeline)
장애 발생부터 복구까지의 주요 이벤트를 시간 순서대로 기록합니다.
| 시간 | 이벤트 | 비고 |
|---|---|---|
| 14:00 | 시스템 모니터링 알람 발생 (HTTP 500 에러 급증) | 온콜 담당자 할당 |
| 14:15 | DB 커넥션 풀 고갈 확인 | 인프라 팀 협업 요청 |
| 14:40 | 특정 배치 작업에 의한 부하 발생 확인 | 원인 파악 완료 |
| 15:00 | 배치 프로세스 강제 종료 및 커넥션 리셋 | 복구 작업 시작 |
| 15:30 | 서비스 정상화 확인 | 복구 완료 |
3. 원인 분석 (Root Cause Analysis)
“왜” 발생했는지 심층 분석합니다. (5-Whys 기법 활용 권장)
- 표면적 원인: DB 커넥션 풀 부족으로 인한 API 타임아웃.
- 근본 원인: 정기 배치 작업의 쿼리가 인덱스 최적화가 되어 있지 않아 테이블 풀 스캔이 발생했고, 이로 인해 트랜잭션이 길어지면서 커넥션을 반환하지 못함.
4. 해결 방법 (Resolution)
장애를 복구하기 위해 취한 즉각적인 조치입니다.
# 긴급 조치 예시
# 배치 프로세스 중단
$ ./scripts/stop-batch.sh --job-id=X123
# DB 커넥션 강제 종료
$ psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE ..."
5. 재발 방지 대책 (Action Items)
장애가 다시 발생하지 않도록 하기 위한 향후 과제입니다.
- 배치 쿼리 인덱스 최적화 (담당: [이름], 기한: 2026-05-10)
- DB 커넥션 풀 임계치 도달 시 자동 알림 강화
- 서비스 부하가 적은 새벽 시간대로 배치 작업 스케줄 변경
6. 결론 (Conclusion)
이번 장애를 통해 배운 점이나 향후 시스템 안정성을 위한 제언을 기술합니다.