고객 안내 여부, 대체 수단 가동, 인력 투입, 상위 보고. 전부 영향 범위와 예상 시간에 달려 있습니다.
이 파트에서 다루는 내용
장애 보고는 기술 문서가 아닙니다
보고를 받는 사람은 기술적 사실을 알고 싶은 것이 아닙니다. 판단을 해야 합니다. 고객에게 안내할지, 다른 팀에 지원을 요청할지, 대체 수단을 가동할지, 임원에게 보고할지를 정해야 합니다.
그래서 보고에 필요한 것은 스택트레이스가 아니라 영향 범위와 예상 시간, 그리고 지금 무엇을 하고 있는지입니다.
기술 상세는 종료 후 원인 규명 보고서에 씁니다. 진행 중에는 판단에 필요한 것만 보냅니다.
스택트레이스 원문, 내부 클래스명, 원인 추측의 나열. 읽는 사람이 판단할 수 없습니다.
나쁜 소식을 선택지와 함께 전하는 원칙이 여기에도 그대로 적용됩니다.
네 줄이면 충분합니다
Part 1에서 첫 보고 형식을 봤습니다. 이후 보고도 같은 뼈대를 유지합니다. 형식이 같으면 받는 사람이 변화만 빠르게 읽을 수 있습니다.
[장애 중간 보고 2회차] 주문 조회 지연 · 15:00
■ 현재 상황
- 주문 조회 지연 지속. 등록·수정은 정상.
- 15:00 기준 복구되지 않았습니다.
■ 진전 사항
- 배제됨: 애플리케이션 배포 이력 없음, 서버 자원 여유 있음
- 확인됨: 특정 조회 쿼리가 평소 0.3초 → 40초로 지연
- 미확인: 해당 쿼리가 느려진 원인
■ 진행 중
- DB 담당자와 실행계획 변경 여부 확인 중
- 어제 야간 배치의 데이터 적재량 확인 요청함
■ 다음 보고
- 15:30 또는 원인 확인 시 즉시"진전 사항"에 배제된 것을 쓰는 것이 중요합니다. 원인을 아직 모르더라도 범위가 좁혀지고 있다는 사실이 전달됩니다. 이게 없으면 두 번째 보고부터 "아직도 파악 중"으로만 보입니다.
모를 때 어떻게 말하는가
장애 대응의 대부분은 모르는 상태에서 진행됩니다. 이때의 소통 방식이 신뢰를 가릅니다.
"원인 파악 중입니다"만 반복하면 상대는 아무 진전이 없다고 느낍니다. 실제로는 여러 가능성을 배제하며 나아가고 있는데도 그렇습니다.
"배포 이력과 서버 자원은 배제했고 지금은 DB 쪽을 보고 있습니다." 원인을 몰라도 진행되고 있다는 사실이 전달됩니다.
"확인된 것은 아니지만 현재로서는 어제 배치의 영향으로 보입니다." 이렇게 말하면 나중에 아니어도 문제가 없습니다.
확실하지 않은 원인을 확정처럼 말하면, 아닌 것으로 밝혀졌을 때 이후 모든 말의 신뢰가 떨어집니다.
원인을 모르는데 복구 시각을 말할 수는 없습니다. 대신 다음 보고 시각을 약속합니다. 이건 지킬 수 있습니다.
"원인 파악 중입니다" 대신 "현재까지 A와 B는 배제했고 C를 확인 중입니다. 15:30에 다시 보고드리겠습니다." 같은 내용이지만 받는 사람이 얻는 정보가 완전히 다릅니다.
보고 주기를 먼저 알립니다
주기를 정해 알리지 않으면 상대가 계속 물어봅니다. 그 응대에 시간을 뺏기고, 정작 대응이 늦어집니다.
다음 보고 시각을 먼저 말해 두면 그 사이에는 재촉이 줄어듭니다. 상대도 언제 정보를 받을지 알아야 자기 일정을 잡을 수 있습니다.
- 초기에는 15분에서 30분 간격이 적당합니다. 상황이 안정되면 1시간으로 늘립니다.
- 약속한 시각에는 진전이 없어도 보고합니다. "진전 없음, 계속 확인 중"도 정보입니다. 침묵이 가장 나쁩니다.
- 중요한 사실을 확인하면 주기와 무관하게 즉시 알립니다. 특히 영향 범위가 커졌을 때입니다.
- 복구되면 즉시 알립니다. 이때 원인이 규명되지 않았다면 그 사실도 함께 씁니다.
고객사 보고는 한 겹이 더 있습니다
고객사 시스템을 담당하면 보고 대상이 내부 상사만이 아닙니다. 그리고 고객사 담당자도 자기 조직에 보고해야 합니다.
이 구조를 이해하면 보고 방식이 달라집니다. 그 담당자가 그대로 인용할 수 있는 문장을 주는 것이 실질적인 도움입니다. 기술 용어로만 쓰면 담당자가 번역하다 내용이 왜곡됩니다.
"주문 조회 기능이 지연되고 있으며 등록·수정은 정상입니다"처럼 업무 언어로 씁니다. 담당자가 그대로 올릴 수 있습니다.
우리 잘못인지 아직 모르는 단계에서 책임 이야기를 꺼내면 대응이 지연됩니다. 지금은 복구가 우선이고, 원인은 사실이 모인 뒤에 정리합니다.
내부에서는 추측을 공유해도 되지만 고객사에는 신중해야 합니다. 한 번 나간 말은 회수하기 어렵습니다.
로그나 명령 실행이 필요하면 Part 1의 요청 목록처럼 구체적으로 전달합니다. 애매하게 요청하면 왕복이 늘어납니다.
원인을 못 찾은 채 끝나는 경우
복구는 됐는데 원인은 모르는 상태로 종료하는 일이 실제로 있습니다. 재기동으로 풀렸거나, 증상이 저절로 사라졌거나, 증거가 남지 않았을 때입니다.
이때 원인을 그럴듯하게 지어내서 쓰는 것이 가장 나쁜 선택입니다. 재발하면 그 보고서 때문에 엉뚱한 대응을 하게 됩니다.
정직하게 쓰되, 다음에는 잡을 수 있도록 무엇을 준비했는지를 함께 씁니다. 이러면 미규명 보고도 의미 있는 문서가 됩니다.
[장애 종료 보고] 주문 조회 지연
■ 경과
- 14:20경 발생, 16:05 서비스 재기동으로 복구
- 총 영향 시간 약 1시간 45분
■ 확인된 사실
- 특정 조회 쿼리 응답시간이 평소 대비 100배 이상 지연
- 배포 이력 없음, 서버 자원 여유 있음
- DB 실행계획 변경 여부는 재기동 이후라 확인 불가
■ 원인
- 현재까지 규명되지 않았습니다.
- 재기동으로 증상이 해소되어 발생 시점의 상태를 확인할 수 없었습니다.
■ 재발 대비 조치 (완료)
- 장애 시 자동 증거 수집 스크립트를 운영 서버에 배치
- 조회 응답시간 임계치 알림 설정 (5초 초과 시)
- GC 로그 활성화
■ 후속 과제
- 동일 증상 재발 시 즉시 스레드 덤프 및 DB 세션 상태 확보
- 담당: OOO / 모니터링 기간: 2주재발 대비 조치를 완료 상태로 적을 수 있으면 미규명 보고의 설득력이 완전히 달라집니다. 원인은 못 찾았지만 다음에는 찾을 수 있게 만들어 뒀다는 것이 이 보고의 결론입니다.
여기까지가 장애가 났을 때의 절차입니다. 영향을 먼저 파악하고, 증거를 남기며 복구하고, 증상으로 후보를 좁히고, 그 과정을 통제된 형태로 보고합니다. 원인을 실제로 찾아내는 기술은 트랙 B에서 다룹니다.