Blog

장애 재발을 막는 개발팀 장애 회고 보고서 작성 양식과 운영법

2026-09-25

Team of developers working together on computers in a modern tech office.

Photo by cottonbro studio on Pexels

1. 왜 비난 없는 장애 회고(Post-Mortem) 문화와 표준 양식이 필요한가

개발팀을 이끄는 팀장과 중간관리자가 가장 큰 압박을 느끼는 순간 중 하나는 운영 환경에서 심각한 서비스 장애가 발생했을 때입니다. 서비스가 중단되고 고객 문의가 폭주하며 경영진의 압박이 이어지면, 담당 개발자는 위축되고 팀 전체의 분위기는 급격히 경직됩니다. 이러한 상황에서 장애 원인을 특정 개발자의 개인적 실수(예: 실수로 배포한 코드, 오타, 테스트 누락)로 귀결시키면, 팀원들은 실수를 숨기게 되고 유사한 장애는 반드시 재발하게 됩니다.

장애 회고(Post-Mortem)의 핵심 목적은 '누가 실수했는가'를 찾는 것이 아니라 '시스템과 프로세스의 어떤 허점이 이 실수를 서비스 장애로까지 이어지게 만들었는가'를 분석하는 것입니다. 사람이 아닌 시스템에 집중하는 '비난 없는 회고(Blameless Post-Mortem)' 문화가 정착되어야 팀원들이 솔직하게 당시 상황을 공유하고 근본적인 원인을 파악할 수 있습니다.

이를 실무에 즉시 적용하기 위해서는 매번 새롭게 보고서를 작성하는 번거로움을 줄이고, 필수 분석 항목이 누락되지 않도록 표준화된 양식(Template)을 구비해야 합니다. 정형화된 서식은 장애 분석의 기준을 제공하며, 회고 회의가 감정적인 비난이나 명목상의 보고로 변질되는 것을 막아주는 훌륭한 나침반 역할을 합니다.

2. 바로 복사해서 사용하는 장애 회고 보고서 표준 템플릿

아래 양식은 실무 개발팀에서 장애 발생 후 작성하여 공유할 수 있는 표준 장애 회고 보고서 양식입니다. 필요에 따라 문서 도구(Confluence, Notion, Google Docs 등)에 그대로 복사하여 템플릿으로 등록해 사용할 수 있습니다.

장애 회고 보고서(Post-Mortem Report) 표준 양식

[기본 정보]

  • 장애명: [예시] OOO API 응답 지연 및 결제 실패 장애
  • 장애 등급: [SEV-1 / SEV-2 / SEV-3]
  • 장애 발생 시각: YYYY-MM-DD HH:MM
  • 장애 감지 시각: YYYY-MM-DD HH:MM (감지 채널: 모니터링 알람 / 고객 센터 / internal)
  • 복구 완료 시각: YYYY-MM-DD HH:MM
  • 총 장애 시간: OO시간 OO분
  • 장애 리드(Incident Commander): OOO (작성자: OOO)
  • 참석자: OOO, OOO, OOO

[1. 장애 요약 및 영향 범위]

- 장애 현상: 어떤 기능이 동작하지 않았거나 지연되었는지 요약 작성합니다.
- 영향 받은 사용자/시스템: 영향받은 전체 요청 수, 실패한 트랜잭션 건수, 예상 피해 금액 또는 고객 문의 건수 등을 수치로 작성합니다.

[2. 장애 타임라인 (Chronology)]

장애 전후의 모든 상황을 분 단위로 기록합니다.

  • HH:MM - 관련 배포 또는 작업 수행
  • HH:MM - 모니터링 시스템(예: Datadog, Prometheus)에서 경고 알람 발생
  • HH:MM - 장애 대응 인원 소집 및 상황 파악 시작
  • HH:MM - 원인 추정 및 임시 조치(롤백/임시 서버 증설 등) 실행
  • HH:MM - 지표 정상화 확인 및 서비스 정상 복구 선언

[3. 근본 원인 분석 (Root Cause Analysis - 5 Whys)]

단순 현상이 아닌 근본 원인에 도달할 때까지 '왜'를 반복합니다.

  • Why 1: 왜 결제 요청이 실패했는가? -> DB 커넥션 타임아웃이 발생했기 때문입니다.
  • Why 2: 왜 DB 커넥션 타임아웃이 발생했기 때문인가? -> 특정 조회 쿼리의 실행 시간이 10초 이상 소요되어 커넥션 풀이 고갈되었기 때문입니다.
  • Why 3: 왜 해당 쿼리 실행 시간이 갑자기 늘어났는가? -> 이번 배포에서 인덱스가 적용되지 않은 신규 검색 조건이 추가되었기 때문입니다.
  • Why 4: 왜 인덱스가 누락된 채 배포되었는가? -> 스테이징 환경의 데이터량이 적어 쿼리 성능 테스트를 거치지 않았기 때문입니다.
  • Why 5: 왜 스테이징 환경에서 성능 테스트 기준이 없었는가? -> 배포 전 체크리스트에 쿼리 실행 계획(EXPLAIN) 검증 단계가 포함되어 있지 않았기 때문입니다.

[4. 잘한 점 및 아쉬운 점 (Keep & Problem)]

  • 잘한 점 (Keep): 장애를 빠르게 감지한 점, 모니터링 알람이 정상 작동한 점 등
  • 아쉬운 점 (Problem): 배포 전 쿼리 검증 절차 부재, 롤백 수행 결정까지의 지연 등

[5. 재발 방지 액션 아이템 (Action Items)]

담당자와 완결 예정일을 명시하여 실행 가능한 과제로 등록합니다.

  • [단기] 스테이징 DB 데이터 세트 재구성 및 쿼리 검증 프로세스 추가 (담당자: OOO / 완료예정일: YYYY-MM-DD)
  • [중기] 슬로우 쿼리 자동 감지 및 CI/CD 빌드 차단 파이프라인 구축 (담당자: OOO / 완료예정일: YYYY-MM-DD)

3. 장애 영향도 평가 및 심각도 분류 기준 표

장애 회고를 효율적으로 운영하려면 장애의 규모와 파급력에 따른 등급 체계가 정립되어 있어야 합니다. 심각도 기준에 따라 회고 회의 소집 여부, 보고 범위, 복구 SLA 목표가 달라집니다. 팀장과 팀원들이 공통으로 이해할 수 있는 심각도 분류 기준 체계를 표준화해야 합니다.

  • 필수 (24시간 이내 회고 회의 개최)
  • 필수 (3일 이내 회고 보고서 작성)
  • 선택 (유사 사례 빈발 시 작성)
  • 장애 등급 정의 및 영향 범위 대응 SLA (목표) 회고 보고서 작성 필수 여부
    SEV-1 (Critical) 핵심 서비스 전체 중단, 핵심 결제/회원가입 기능 불능, 전체 고객의 20% 이상 영향 감지 후 15분 내 대응, 1시간 내 복구
    SEV-2 (Major) 일부 주요 기능 오류, 특정 디바이스/브라우저 이용 불가, 전체 고객의 5%~20% 영향 감지 후 30분 내 대응, 4시간 내 복구
    SEV-3 (Minor) 단순 화면 표기 오류, 어드민 기능 일부 장애, 서비스 이용에는 직접적인 차질 없음 24시간 내 대응 및 수정 계획 수립

    4. 구체적 가상 사례로 보는 작성 예시: API 타임아웃 장애 분석

    실제 실무에서 장애 회고 보고서가 어떻게 작성되는지 가상의 'A사 커머스 시스템' 장애 사례를 통해 구체적으로 살펴봅니다. 현상 기술부터 타임라인, 5 Whys 분석까지 구체적인 숫자와 상황을 담아 작성한 예시입니다.

    [사례 예시] A사 커머스 주문 API 타임아웃 장애 회고 보고서

    [기본 정보]

    • 장애명: 주문 요청 API 타임아웃으로 인한 결제 실패 장애
    • 장애 등급: SEV-1
    • 장애 발생 시각: 2026-03-15 14:10
    • 장애 감지 시각: 2026-03-15 14:13 (APM 알람 감지)
    • 복구 완료 시각: 2026-03-15 14:40
    • 총 장애 시간: 30분
    • 장애 리드: 김팀장 (작성자: 이백엔드)

    [1. 장애 요약 및 영향 범위]

    14:10 배포 직후 14:13부터 주문 생성 API(`POST /api/v1/orders`)의 504 Gateway Timeout 에러율이 85%까지 상승함. 장애 지속 시간 30분 동안 총 3,200건의 주문 시도 중 2,450건이 실패함. 고객 센터를 통해 접수된 관련 문의는 총 142건임.

    [2. 장애 상세 타임라인]

    • 14:10 - 주문 서비스 v2.4.0 정기 배포 완료
    • 14:13 - APM(Datadog)에서 주문 API 응답 시간 8초 초과 경고 알람 발생 (평시: 200ms)
    • 14:15 - 온콜 담당자 현상 확인 및 개발팀 슬랙 채널에 장애 상황 공유
    • 14:18 - 장애 리드(김팀장) 지정, 백엔드 및 인프라 담당자 회의 소집
    • 14:23 - DB CPU 사용률 98% 달성 확인. DB 락(Lock) 경합 및 DB 커넥션 풀 고갈 현상 포착
    • 14:28 - 원인 파악: 신규 추가된 쿠폰 자동 적용 로직에서 Full Table Scan 발생
    • 14:32 - 신규 버전(v2.4.0)을 이전 정상 버전(v2.3.9)으로 롤백 결정 및 실행
    • 14:37 - 롤백 배포 완료, DB CPU 사용률 15%로 안정화
    • 14:40 - 주문 API 성공률 99.9% 회복, 장애 복구 선언

    [3. 5 Whys 근본 원인 분석]

    1. Why 1: 왜 주문 API 응답 시간이 8초 이상 지연되었는가?
      DB 커넥션 풀이 고갈되어 API 서버들이 DB 연결을 얻기 위해 대기했기 때문입니다.
    2. Why 2: 왜 DB 커넥션 풀이 고갈되었는가?
      주문 생성 처리 중 실행되는 `SELECT * FROM user_coupons` 쿼리가 건당 5초 이상 소요되어 DB 커넥션을 오래 점유했기 때문입니다.
    3. Why 3: 왜 해당 쿼리의 실행 시간이 5초 이상 소요되었는가?
      `user_id`와 `status` 컬럼에 복합 인덱스가 생성되어 있지 않아 500만 건의 테이블을 Full Table Scan 했기 때문입니다.
    4. Why 4: 왜 인덱스가 누락된 상태로 운영 DB에 배포되었는가?
      코드 리뷰 과정에서 DDL 변경 사항 확인 절차가 누락되었고, 스테이징 DB에는 데이터가 1,000건 미만이라 쿼리 지연이 티가 나지 않았기 때문입니다.
    5. Why 5: 왜 대용량 데이터 검증 절차나 DDL 자동 검수 체계가 없었는가?
      배포 파이프라인에 인덱스 유무 체킹 및 쿼리 프로파일링 단계가 표준화되어 있지 않았고, 배포 전 체크리스트에 DB 영향도 항목이 없었기 때문입니다.

    5. 장애 회고 회의 진행을 위한 팀장 체크리스트

    템플릿 양식만 존재한다고 해서 회고 문화가 저절로 정착되지 않습니다. 회고 회의를 진행하는 팀장(또는 중간관리자)은 참석자들이 감정적으로 대립하지 않고 건설적인 논의를 펼칠 수 있도록 회의 분위기와 흐름을 조율해야 합니다. 다음 체크리스트를 참고하여 회고 회의 전, 중, 후에 걸쳐 필수 항목을 점검하세요.

    [팀장용] 장애 회고 프로세스 단계별 체크리스트

    [회의 전 준비 단계]

    • [ ] 장애 관련 로그, APM 지표, 배포 이력, 슬랙 대화록 등 객관적 데이터 수집 완료 여부
    • [ ] 장애 직후 타임라인이 분 단위로 일차 정리되었는지 확인
    • [ ] 참석자(개발, 인프라, QA, 필요 시 PO/PM)에게 회고 보고서 초안 공유 완료
    • [ ] 회의 목적이 '원인 파악 및 시스템 개선'임을 사전에 명확히 공지했는지 여부

    [회의 진행 단계 (In-Meeting)]

    • [ ] 시작 선언 시 "비난 없는 문화(Blameless Culture)" 지침을 다시 한번 상기시켰는가?
    • [ ] 특정 인물(예: "OO님이 코드를 잘못 써서")이 언급될 때, 시스템/프로세스(예: "코드 리뷰 및 테스트 자동화의 한계")로 표현을 전환하도록 유도했는가?
    • [ ] 타임라인의 사실 관계에 대해 참석자 간 이견이 없는지 확증했는가?
    • [ ] 5 Whys 진행 시 표면적인 원인(인적 실수)에서 멈추지 않고, 프로세스적 근본 원인까지 파고들었는가?
    • [ ] 도출된 재발 방지 대책이 추상적이지 않고 실행 가능한 수준으로 구체화되었는가?

    [회의 후 팔로우업 단계]

    • [ ] 회고 결과 및 액션 아이템을 팀 전체와 관련 유관 부서에 공유했는가?
    • [ ] 도출된 액션 아이템에 담당자(Owner)와 마감 기한(Due Date)이 할당되었는가?
    • [ ] 액션 아이템이 팀의 작업 백로그(JIRA, Trello 등)에 티켓으로 등록되었는가?
    • [ ] 다음 정기 미팅 시 액션 아이템 이행 여부를 점검할 일정 계획을 수립했는가?

    6. 액션 아이템 추적 및 시스템 개선을 위한 팔로우업 양식

    장애 회고 문서가 작성된 후 가장 흔하게 발생하는 문제는, 보고서만 저장소에 남겨진 채 도출된 액션 아이템이 실제로 실행되지 않는 것입니다. 회고를 통해 도출된 개선 과제는 반드시 일반 기능 개발과 동등한 우선순위를 부여받아 추적 관리되어야 합니다.

    장애 액션 아이템은 크게 두 가지 범주로 나뉩니다. 즉시 조치 가능한 '단기 임시 대책'과 시스템 체질을 바꾸는 '장기 근본 대책'입니다. 이 두 가지를 구분하여 작업 관리 시스템(JIRA 등)에 등록하고 아래 표 양식을 활용해 진행 상황을 주기적으로 업데이트해야 합니다.

    티켓 번호 개선 과제 (Action Item) 분류 (단기/장기) 우선순위 담당자 목표 완료일 현재 상태
    DEV-1021 스테이징 DB에 100만 건 이상 가상 데이터 셋 구축 단기 과제 High 이백엔드 2026-03-22 진행 중
    DEV-1022 배포 전 DDL 및 인덱스 적용 여부 자동 검증 스크립트 작성 장기 과제 High 박DevOps 2026-04-05 대기 중
    DEV-1023 주문 API 응답 타임아웃 경고 알람 기준 상세화 (8초 -> 2초) 단기 과제 Medium 김인프라 2026-03-18 완료
    DEV-1024 장애 대응 매뉴얼(Runbook) 업데이트 및 팀 내 공유 단기 과제 Low 김팀장 2026-03-20 완료

    팀장은 정기 스크럼이나 주간 회의 시간에 장애 액션 아이템 티켓의 진척도를 반드시 확인해야 합니다. 만약 일정 압박으로 인해 장애 개선 티켓이 계속 뒤로 밀린다면, 팀장은 제품 책임자(PO/PM)와 협의하여 기술 부채 및 안정성 개선을 위한 스프린트 용량(Capacity)을 최소 10~20% 확보해야 합니다.

    7. 장애 회고 프로세스 정착을 위한 4가지 핵심 실행 항목

    장애 회고를 팀의 건강한 문화이자 지속적인 성장 도구로 정착시키기 위해 팀장이 당장 실천해야 할 핵심 실행 항목은 다음과 같습니다.

    1. 표준 템플릿의 팀 내 공통 문서함 등록: 본 포스팅에서 제공한 장애 회고 보고서 작성 양식을 팀 내부 Wiki(Confluence, Notion 등)의 공용 템플릿으로 즉시 등록하고 팀원들에게 위치를 안내하세요.
    2. 비난 없는 회고 원칙의 명시적 선언: 회고 회의를 시작하기 전, 회의의 목적이 담당자 문책이 아닌 '시스템적 보완점 발견'임을 팀원들에게 매번 명확히 선언하여 심리적 안정감을 제공하세요.
    3. 5 Whys 기법을 통한 근본 원인 도출: 현상이나 인적 실수에 머물지 않고, '왜 테스트에서 걸러지지 않았는가?', '왜 모니터링이 늦었는가?'를 최소 5번 탐구하여 프로세스 결함을 찾아내세요.
    4. 액션 아이템의 이슈 트래커 등록 및 이행 관리: 회고에서 나온 재발 방지 대책에 반드시 담당자와 완료 기한을 할당하고, JIRA 등 작업 관리 시스템에 독립된 티켓으로 등록하여 완결 여부를 지속적으로 추적하세요.

    인클루드웹 솔루션이 궁금하신가요?

    건설관리, 프로젝트관리, 영업관리 솔루션 도입을 무료로 상담해 드립니다.