새벽 2시, 결제 서비스가 멈췄습니다. 당직자가 서버에 붙어 보니 디스크가 가득 찼습니다. 오래된 로그를 지우자 공간이 생기고 서비스가 살아납니다. 보고: "디스크 풀 → 로그 삭제로 복구 완료."
2주 뒤, 같은 시각 같은 장애. 다른 당직자가 또 로그를 지웁니다. 다시 2주 뒤, 또.
세 번째 새벽 호출을 받은 운영 리더가 묻습니다. "우리는 매번 불을 잘 끄고 있는데, 왜 같은 불이 계속 나지?"
여기서 갈립니다. 매번 로그를 지우는 것은 인시던트 대응입니다 — 끊긴 서비스를 빠르게 살리는 일. 하지만 "왜 로그가 자꾸 가득 차는가"를 끝까지 파고들어 다시는 안 나게 만드는 일은 다른 활동입니다. 그게 문제 관리(Problem Management) 입니다.
이 모듈은 인시던트를 끄는 손과, 재발을 막는 머리를 분리하는 법 — Problem 티켓, Known Error, 임시조치(Workaround), 근본 원인까지를 다룹니다.
- 1문제(Problem)를 인시던트와 구분해 정의하고, 둘이 왜 분리돼야 하는지 설명할 수 있다
- 2인시던트와 문제의 다대일 관계(여러 인시던트 → 하나의 문제)를 예로 설명할 수 있다
- 3반응적(reactive) 문제 관리와 선제적(proactive) 문제 관리를 구분할 수 있다
- 4Known Error·KEDB·임시조치(Workaround)·근본 원인의 역할과 관계를 정리할 수 있다
- 5Problem 티켓 라이프사이클을 따라가며 재발방지대책(코드·설정·모니터링)을 도출할 수 있다
문제(Problem)란 무엇인가 — 인시던트와 무엇이 다른가
인시던트는 '증상', 문제는 '원인'
운영의 하루는 인시던트로 가득 찹니다 — "안 돼요", "느려요", "또 멈췄어요". 인시던트 관리의 목표는 단 하나, 빠른 정상화입니다. 사용자가 다시 일하게 만드는 것. 그래서 인시던트는 시간 압박 아래 움직입니다.
그런데 정상화만 반복하면, 같은 장애가 계속 돌아옵니다. 증상만 눌렀기 때문입니다. 문제(Problem) 는 "하나 이상의 인시던트를 일으키는 원인(또는 잠재적 원인)"입니다. 문제 관리의 목표는 정상화가 아니라 재발 방지, 즉 근본 원인(Root Cause) 제거입니다.
| 구분 | 인시던트(Incident) | 문제(Problem) |
|---|---|---|
| 다루는 것 | 증상 (서비스 중단·저하) | 원인 (왜 중단되는가) |
| 목표 | 빠른 정상화 (복구) | 재발 방지 (근본 원인 제거) |
| 시간 감각 | 급함 (지금 끄기) | 깊음 (끝까지 파기) |
| 측정 지표 | MTTR(평균 복구시간) | 재발 건수·인시던트 감소율 |
| 산출물 | 복구 + 사후 기록 | 근본 원인 + 재발방지대책 |
핵심은 분리입니다. 새벽에 디스크를 비우는 일(인시던트)과, 왜 디스크가 차는지 밝히는 일(문제)을 같은 티켓에 섞으면, 급한 복구에 밀려 원인 추적은 영원히 미뤄집니다. 그래서 ITSM은 인시던트 티켓과 별개로 Problem 티켓을 둡니다.
여러 인시던트, 하나의 문제 — 다대일 관계
인시던트와 문제는 다대일(N:1) 입니다. 같은 근본 원인이 여러 번의 인시던트로 터져 나옵니다.
- 새벽 2시 디스크 풀 (인시던트 #1241)
- 2주 뒤 디스크 풀 (인시던트 #1318)
- 또 2주 뒤 디스크 풀 (인시던트 #1402)
이 세 인시던트는 각각 별개로 "복구 완료" 처리됐지만, 뒤에는 하나의 문제 — "결제 서버 로그 로테이션 미설정" — 가 있습니다. 문제 관리는 이 세 인시던트를 하나의 Problem 티켓으로 묶어, 근본 원인 하나를 제거함으로써 미래의 인시던트 다수를 한꺼번에 없앱니다.
그래서 문제를 찾는 출발점은 보통 인시던트 데이터의 패턴입니다. "같은 서비스·같은 증상이 반복되는가", "특정 시간대에 몰리는가", "한 건이지만 영향이 막대해 원인을 꼭 알아야 하는가". 인시던트 기록(티켓)이 쌓여 있어야 이 패턴이 보입니다 — 기록 없는 조직은 문제 관리를 시작조차 못 합니다.

그림: 여러 인시던트(N) → 하나의 문제(1) → 근본 원인 제거. 종료는 "조치"가 아니라 "N주간 재발 0건"으로 검증한다.
반응적 문제 관리와 선제적 문제 관리
터진 다음 vs 터지기 전
문제 관리는 출발점에 따라 두 갈래입니다.
반응적(Reactive) 문제 관리 는 이미 발생한 인시던트에서 출발합니다. "이 장애가 왜 났는지 끝까지 밝혀 다시는 안 나게 하자." 위 디스크 사례가 전형입니다. 대부분의 조직이 여기서 시작합니다.
선제적(Proactive) 문제 관리 는 아직 장애로 번지지 않은 신호에서 출발합니다. 모니터링 추세, 반복되는 경미한 경고, 과거 인시던트 통계를 분석해 "이대로 두면 터질 것"을 미리 제거합니다.
| 구분 | 반응적(Reactive) | 선제적(Proactive) |
|---|---|---|
| 출발점 | 이미 발생한 인시던트 | 추세·경고·통계 등 잠재 신호 |
| 질문 | "이건 왜 났나?" | "이건 곧 터지지 않을까?" |
| 예 | P1 장애 사후 원인 분석 | 디스크 증가 추세 보고 미리 증설 |
| 데이터 | 인시던트 티켓·로그 | 모니터링 메트릭·추세·반복 경고 |
선제적 문제 관리는 모니터링·관측(Observability)과 맞물립니다. "디스크가 매주 5%씩 찬다 → 8주 뒤 가득 참 → 미리 로테이션·증설"처럼, 데이터가 미래의 인시던트를 미리 보여줄 때 그것을 잠재 문제로 등록해 처리합니다. 성숙한 운영 조직일수록 반응적에서 선제적으로 무게중심이 옮겨갑니다.

두 갈래는 들어오는 입구가 다릅니다. 반응적은 인시던트가 트리거가 되어 "왜 또 반복되는가"를 캐고, 선제적은 모니터링 추세 같은 데이터가 트리거가 되어 "아직 장애는 없지만 곧 터질 곳"을 미리 찾아 제거합니다. 반응적만 하면 늘 불을 쫓게 되지만, 선제적을 더할수록 터지기 전에 막아 인시던트 발생 자체가 줄어듭니다 — 이것이 운영 성숙도의 차이입니다.
Known Error·KEDB·임시조치 — 문제 관리의 핵심 자산
근본 수정 전까지 버티게 해주는 지식
문제의 근본 원인을 찾았다고 곧바로 고칠 수 있는 건 아닙니다. 코드 수정에는 배포 일정이, 인프라 변경에는 승인과 점검창이 필요합니다. 그 사이의 공백을 메우는 것이 임시조치와 Known Error입니다.
| 용어 | 뜻 | 디스크 사례 적용 |
|---|---|---|
| 근본 원인(Root Cause) | 인시던트를 일으키는 본질적 원인 | "로그 로테이션 미설정 + 에러 로그 폭주" |
| 임시조치(Workaround) | 근본 원인을 없애진 못하지만 증상을 줄이거나 복구를 빠르게 하는 잠정 대응 | "디스크 80% 도달 시 오래된 로그 수동 삭제" |
| Known Error(알려진 오류) | 근본 원인 또는 임시조치가 '식별된' 문제 상태 | "결제 서버 디스크 풀 — 원인·임시조치 파악됨" |
| KEDB(Known Error Database) | Known Error를 모아둔 지식 베이스 | 서비스데스크가 검색해 즉시 대응 |
흐름은 이렇습니다. 근본 원인이나 효과적인 임시조치를 찾는 순간, 그 문제는 Known Error 상태가 되고 KEDB에 등록됩니다. 그러면 같은 증상의 인시던트가 또 들어와도, 서비스데스크가 KEDB를 검색해 "이건 알려진 오류, 임시조치는 X" 라고 즉시 대응합니다. 원인을 매번 처음부터 파지 않으니 평균 복구시간(MTTR)이 크게 줄어듭니다.
임시조치는 '임시'라는 게 함정입니다. 임시조치가 너무 잘 들으면 근본 수정이 자꾸 뒤로 밀립니다. 그래서 Known Error는 근본 수정이 완료될 때까지 살아 있는 미해결 항목이어야 하며, KEDB에는 "임시조치"와 함께 "영구 해결 예정"이 같이 적혀 있어야 합니다.
직접 해보기 — Problem 티켓 라이프사이클 따라가기
위 시나리오(결제 서버 디스크 풀 3회 반복)를 Problem 티켓 라이프사이클에 따라 처리해 봅니다. 각 단계에서 무엇을 기록하고 무엇을 산출하는지에 집중하세요.
[1] 식별(Identification)
트리거: 인시던트 #1241, #1318, #1402 — "결제 서버 디스크 풀"이 2주 간격 3회 반복
행동: 세 인시던트를 묶어 Problem 티켓(PRB-0007) 생성
[2] 분류·우선순위(Categorization)
영향: 결제(핵심 서비스) 전면 중단 / 재발 주기: 2주 / 영향도 높음 → 우선순위 High
[3] 조사·진단(Investigation, RCA)
관찰: 로그 디렉터리가 매주 ~30GB씩 증가, logrotate 설정 없음
추가 관찰: 결제 실패 시 스택트레이스가 과도하게 쌓임 (에러 로그 폭주)
근본 원인: (a) 로그 로테이션 미설정 (b) 결제 재시도 로직의 과다 에러 로깅
[4] 임시조치 + Known Error 등록
임시조치: "디스크 80% 알림 시 7일 이전 로그 수동 삭제"
→ PRB-0007을 Known Error로 전환, KEDB에 등록
[5] 해결(Resolution) — 재발방지대책
설정: logrotate로 일 단위 회전 + 14일 보관 + 압축
코드: 결제 재시도 에러 로깅을 1건/요청으로 축소 (중복 스택트레이스 제거)
모니터링: 디스크 사용량 75% 경고 / 85% 경보 임계치 신설
→ 변경(Change) 요청으로 배포·승인·반영
[6] 종료(Closure)
검증: 4주간 디스크 풀 인시던트 0건 확인 → Known Error 해소
KEDB 갱신: "영구 해결됨" 표시, 임시조치 비활성화
이 흐름을 거치면 산출물 두 가지가 남습니다 — Problem 티켓과 Known Error 항목. 아래에서 그 형식을 확인하세요.
단계: 식별 → 분류 → 조사(RCA) → Known Error → 해결 → 종료- Problem 티켓은 인시던트 티켓과 별개다 — 관련 인시던트(#1241·#1318·#1402)를 "연결"로 묶되, 복구는 인시던트가, 원인 제거는 Problem이 책임진다
- 근본 원인은 하나가 아닐 수 있다 — 여기서는 (a) 로테이션 미설정 (b) 에러 로깅 과다, 두 갈래였다
- 임시조치는 근본 해결이 아니다 — "로그 수동 삭제"는 증상만 누른다. 반드시 영구 대책(설정·코드)과 짝지어 KEDB에 남긴다
- 재발방지대책은 세 층이다 — 설정(logrotate)·코드(로깅 축소)·모니터링(임계치). 한 층만 고치면 다시 샌다
- 종료는 "조치했다"가 아니라 "재발하지 않았다"로 검증한다 — 4주 무재발을 확인하고서야 Known Error를 해소한다
- KEDB는 살아 있는 자산이다 — 근본 수정 전에는 "임시조치 X", 수정 후에는 "영구 해결됨"으로 갱신해 다음 사람을 돕는다
산출물 1 — Problem 티켓
| 필드 | 내용 |
|---|---|
| 티켓 번호 | PRB-0007 |
| 제목 | 결제 서버 디스크 풀 반복 (2주 주기 3회) |
| 연결된 인시던트 | INC-1241, INC-1318, INC-1402 |
| 상태 | 종료(Closed) — 직전 Known Error |
| 우선순위 | High (핵심 서비스 전면 중단, 반복성) |
| 근본 원인 | (a) 로그 로테이션 미설정 (b) 결제 재시도 에러 로그 폭주 |
| 임시조치 | 디스크 80% 알림 시 7일 이전 로그 수동 삭제 |
| 재발방지대책 | logrotate 일 회전·14일 보관·압축 / 에러 로깅 축소 / 디스크 75%·85% 임계치 신설 |
| 연결된 변경 | CHG-0233 (배포·승인·롤백 계획 포함) |
| 종료 검증 | 적용 후 4주간 디스크 풀 인시던트 0건 |
산출물 2 — Known Error 항목 (KEDB)
| 필드 | 내용 |
|---|---|
| Known Error ID | KE-0042 |
| 연결된 Problem | PRB-0007 |
| 영향 서비스 | 결제(Payment) |
| 증상 | 새벽 시간대 디스크 사용량 100% 도달 → 결제 응답 중단 |
| 임시조치 | 디스크 80% 알림 시 /var/log/payment 하위 7일 이전 파일 삭제 후 서비스 재시작 |
| 근본 원인 | 로그 로테이션 미설정 + 결제 재시도 에러 로깅 과다 |
| 영구 해결 상태 | 해결됨 (CHG-0233 반영, 2주 무재발 검증 완료) |
| 최종 갱신 | 종료 시점 — 임시조치 비활성화, 참고용 보존 |
현장에서 자주 보는 함정
증상: 서비스데스크 지표상 인시던트 처리율·MTTR은 좋습니다. 그런데 분기 회고를 보면 "디스크 풀", "세션 만료 버그", "배치 중복 실행" 같은 같은 이름의 장애가 계속 올라옵니다. 한편 그 원인을 다루겠다고 만든 Problem 티켓들은 'High'로 열린 채 진척 없이 쌓여 있습니다.
원인: 두 가지가 겹칩니다. (1) 임시조치가 너무 잘 들어서 — 매번 로그만 지우면 5분이면 복구되니, 근본 수정(코드·설정 변경)의 우선순위가 계속 밀립니다. 급한 인시던트가 한가한 Problem을 항상 이깁니다. (2) Problem에 종료 기준과 담당이 없어서 — "언제까지, 누가, 무엇으로 닫는가"가 없으니 영원히 열려 있습니다.
해결 방향:
- 임시조치(Workaround)와 근본 해결을 반드시 분리 기록한다. KEDB에 "임시조치 = 로그 삭제 / 영구 해결 = 미완료(목표일 명시)"를 같이 적어, 임시조치가 영구 해결을 가리지 못하게 한다.
- Problem 티켓에 명확한 종료 기준을 둔다 — "조치했다"가 아니라 "N주간 재발 0건"으로 닫는다.
- 반복 인시던트는 자동으로 Problem으로 승격하는 임계치를 정한다(예: 동일 증상 30일 내 3회 → Problem 의무 생성).
- 회고에서 재발 인시던트 수를 핵심 지표로 본다. MTTR만 보면 "잘 끄는 팀"이 "불을 안 나게 하는 팀"으로 착각된다.
문제 관리가 약한 팀의 공통점은 "끄는 건 잘하는데 안 나게는 못 한다"입니다. 임시조치의 편안함을 경계하는 것이 문제 관리의 시작입니다.
국내 SI/SM 현장에서 문제 관리는 운영(SM) 단계의 품질을 가르는 분기점입니다. 발주사·원청은 협력사의 운영 품질을 인시던트 처리 속도만이 아니라 "같은 장애가 줄어드는가" 로 평가합니다. 그래서 월간·분기 운영보고서에는 인시던트 건수·MTTR과 함께 반복 인시던트 수, 등록된 Problem·Known Error 현황, 재발방지대책 이행률이 들어갑니다.
관리자(SM 리더·PM)로서 당신의 역할은 직접 logrotate를 설정하는 것이 아니라, "이 장애는 단발인가 반복인가, 반복이면 Problem으로 등록됐는가, 근본 대책의 담당과 기한이 정해졌는가, 종료는 무엇으로 검증하는가" 를 통제하는 것입니다. 협력사 엔지니어가 "복구했습니다"라고 보고할 때, 성숙한 관리자는 한 번 더 묻습니다 — "그래서 또 납니까, 안 납니까?"
KEDB가 잘 관리되는 조직은 담당자가 바뀌거나 야간 당직이 신입이어도 대응 품질이 유지됩니다. 반대로 KEDB가 비어 있으면, 모든 새벽 장애가 매번 '처음 보는 장애'가 됩니다. 운영 자산을 사람 머릿속에서 조직의 데이터베이스로 옮기는 것 — 그것이 관리자가 문제 관리로 만들어내는 가치입니다.
관련 모듈로 더 깊이:
- 인시던트 관리 — 문제 관리의 입력이 되는 인시던트 처리 흐름과 '무엇을 문제로 넘기는가'
- 근본원인분석(RCA) 기법 — 근본 원인을 끝까지 파고드는 5 Whys·피시본 등 구체적 분석 기법
다음 모듈에서는 이 흐름의 심장인 근본원인분석(RCA) 기법 — 5 Whys, 피시본(이시카와) 다이어그램, 결함 트리 분석 등 — 으로 "왜 그 불이 났는가"를 끝까지 파고드는 구체적 방법을 다룹니다.