IT 팀용 인시던트 관리 앱: 워크플로부터 포스트모템까지
심각도 워크플로, 명확한 소유권, 타임라인, 포스트모템을 하나의 내부 도구에서 계획하고 구축하는 방법을 알아보세요.

내부 인시던트 앱이 실제로 해결하는 문제
장애가 발생하면 대부분의 팀은 열려 있는 것들을 잡습니다: 채팅 스레드, 이메일 체인, 누군가 시간이 날 때 업데이트하는 스프레드시트 등. 압박이 걸리면 이러한 방식은 매번 같은 방식으로 망가집니다: 담당이 흐려지고, 타임스탬프가 사라지며, 결정들이 스크롤 속으로 없어집니다.
단순한 인시던트 관리 앱은 기본을 고칩니다. 인시던트가 한곳에 기록되고, 명확한 담당자, 모두가 동의하는 심각도, 무슨 일이 언제 일어났는지의 타임라인을 제공합니다. 단일 기록이 중요한 이유는 모든 인시던트에서 같은 질문이 나오기 때문입니다: 누가 이끄는가? 언제 시작됐는가? 현재 상태는 무엇인가? 이미 무엇을 시도했는가?
그 공유 기록이 없으면 핸드오프가 시간을 낭비합니다. 지원팀은 고객에게 한 가지를 말하는 동안 엔지니어링은 다른 일을 합니다. 매니저는 수시로 업데이트를 요구해 대응자들을 수습에서 떼어냅니다. 이후에는 아무도 타임라인을 자신 있게 재구성할 수 없어 포스트모템이 추측으로 변합니다.
목표는 모니터링, 채팅, 티켓 시스템을 대체하는 것이 아닙니다. 알림은 여전히 다른 곳에서 시작될 수 있습니다. 핵심은 의사결정의 흔적을 캡처하고 사람들을 정렬된 상태로 유지하는 것입니다.
IT 운영팀과 온콜 엔지니어는 이를 사용해 대응을 조율합니다. 지원팀은 정확한 업데이트를 빠르게 제공합니다. 매니저는 대응자를 방해하지 않고 진행 상황을 확인합니다.
예시 시나리오: 알림에서 종료까지의 P1 장애
오전 9시 12분, 모니터링이 고객 포털의 500 오류 급증을 감지합니다. 지원 담당자도 “대부분 사용자 로그인 불가”를 보고합니다. 온콜 IT 책임자는 인시던트 앱에서 P1 인시던트를 열고 첫 알림과 지원 스크린샷을 첨부합니다.
P1 상황에서는 행동이 빠르게 바뀝니다. 인시던트 소유자는 백엔드 담당자, 데이터베이스 담당자, 지원 연결 담당자를 불러옵니다. 필수적이지 않은 작업은 일시 중단됩니다. 예정된 배포는 중지됩니다. 팀은 업데이트 주기(예: 15분마다)를 합의합니다. 공동 통화가 시작되지만 인시던트 기록이 진실의 원천으로 남습니다.
9시 18분, 누군가가 “무엇이 변경됐나?”라고 묻습니다. 타임라인에는 8시 57분 배포가 기록되어 있지만 무엇이 배포됐는지는 적혀 있지 않습니다. 백엔드 담당자는 일단 롤백을 진행합니다. 오류는 줄었다가 다시 발생합니다. 이제 팀은 데이터베이스를 의심합니다.
지연은 몇몇 예측 가능한 지점에서 주로 발생합니다: 불분명한 핸드오프(“그건 네가 확인하는 줄 알았어”), 누락된 맥락(최근 변경, 알려진 위험, 현재 담당자), 그리고 채팅, 티켓, 이메일에 흩어진 업데이트들.
9시 41분, 데이터베이스 담당자가 예약 작업에서 시작된 무한루프 쿼리를 발견합니다. 그들은 작업을 비활성화하고 영향을 받은 서비스를 재시작해 복구를 확인합니다. 심각도는 모니터링을 위해 P2로 강등됩니다.
좋은 종료는 ‘다시 작동한다’가 아닙니다. 분 단위 타임라인, 최종 근본 원인, 누가 어떤 결정을 내렸는지, 무엇이 중단되었는지, 그리고 담당자와 기한이 지정된 후속 작업이 포함된 깔끔한 기록입니다. 그렇게 하면 스트레스가 큰 P1이 반복되는 고통이 아니라 학습으로 바뀝니다.
데이터 모델: 최소한으로 단순하지만 작동하는 구조
좋은 인시던트 도구는 주로 좋은 데이터 모델입니다. 기록이 모호하면 사람들은 인시던트가 무엇인지, 언제 시작됐는지, 무엇이 아직 열려있는지에 대해 논쟁합니다.
핵심 엔티티는 IT팀이 이미 대화하는 방식과 가깝게 유지하세요:
- Incident: 발생한 사건을 담는 컨테이너
- Service: 비즈니스가 운영하는 것(API, 데이터베이스, VPN, 결제 등)
- User: 대응자와 이해관계자
- Update: 시간에 따른 짧은 상태 메모
- Task: 인시던트 중(및 이후)의 구체적인 작업
- Postmortem: 인시던트에 연결된 하나의 기록, 액션 아이템 포함
나중에 혼란을 막기 위해, 인시던트에는 항상 채워져야 하는 몇 가지 구조화된 필드를 두세요. 자유 텍스트가 도움이 되지만 그것만으로 진실을 의존하면 안 됩니다. 실용적인 최소는: 명확한 제목, 영향(사용자가 겪는 경험), 영향받는 서비스, 시작 시간, 현재 상태, 심각도입니다.
관계가 추가 필드보다 더 중요합니다. 한 인시던트는 여러 업데이트와 여러 작업을 가져야 하고, 서비스와는 다대다 관계여야 합니다(장애는 종종 여러 시스템에 영향을 미치기 때문). 포스트모템은 인시던트와 일대일이어야 최종 이야기 하나가 남습니다.
예: “체크아웃 오류” 인시던트는 서비스 “결제 API”와 “PostgreSQL”에 연결되고, 15분마다 업데이트가 쌓이며 “롤백 실행”, “재시도 가드 추가” 같은 작업을 가집니다. 이후 포스트모템에서 근본 원인을 기록하고 장기 작업을 생성합니다.
심각도 레벨과 대응 목표
사람들이 스트레스를 받을 때는 모두가 같은 의미로 받아들이는 단순한 레이블이 필요합니다. P1~P4를 평문으로 정의하고 심각도 필드 옆에 정의를 보여주세요.
- P1 (치명적): 핵심 서비스 중단 또는 데이터 손실 가능성. 많은 사용자 차단.
- P2 (높음): 주요 기능에 문제가 있으나 우회책이 있거나 영향 범위가 제한적.
- P3 (중간): 긴급하지 않은 문제, 소수 사용자 영향, 비즈니스 영향 미미.
- P4 (낮음): 외형적이거나 사소한 버그, 이후 일정에 편성.
응답 목표는 약속처럼 읽히게 하세요. 간단한 기준(자신의 현실에 맞게 조정):
| 심각도 | 첫 응답(인정) | 첫 업데이트 | 업데이트 빈도 |
|---|---|---|---|
| P1 | 5분 | 15분 | 30분마다 |
| P2 | 15분 | 30분 | 60분마다 |
| P3 | 4시간 | 1영업일 | 매일 |
| P4 | 2영업일 | 1주일 | 매주 |
에스컬레이션 규칙은 기계적으로 작동하도록 유지하세요. P2가 업데이트 주기를 놓치거나 영향이 커지면 시스템이 심각도 재검토를 권하도록 하세요. 혼란을 피하려면 누가 심각도를 변경할 수 있는지를 제한하세요(대개 인시던트 소유자나 지휘관) — 다만 누구나 댓글로 재검토를 요청할 수 있게 하세요.
빠르게 심각도를 고르도록 돕는 영향 매트릭스도 유용합니다. 필요한 필드 몇 가지로 캡처하세요: 영향받는 사용자 수, 수익 리스크, 안전 문제, 규정/보안, 우회책 존재 여부.
스트레스 상황에서 사람들을 안내하는 워크플로 상태
인시던트 중 사람들은 더 많은 옵션이 아니라, 다음 단계가 명확한 소수의 상태가 필요합니다.
좋은 날에 이미 따르는 단계를 시작점으로 삼고 목록을 짧게 유지하세요. 상태가 6~7개 이상이면 팀은 용어 논쟁에 시간을 쓰고 문제 해결에 시간을 쓰지 않습니다.
실용적인 집합:
- New: 알림 수신, 아직 확인되지 않음
- Acknowledged: 누군가가 소유를 정하고 첫 응답 시작
- Investigating: 영향 확인, 가능성 있는 원인 좁힘
- Mitigating: 영향 완화를 위한 조치 진행 중
- Monitoring: 서비스가 안정적으로 보이며 재발을 관찰 중
- Resolved: 서비스 복구, 검토 준비 완료
각 상태에는 명확한 진입 및 종료 규칙이 필요합니다. 예를 들어:
- 담당자가 설정되고 다음 조치가 한 문장으로 적혀 있어야만 Acknowledged로 이동할 수 있습니다.
- 롤백, 기능 플래그 오프, 용량 추가 같은 최소 하나의 구체적 완화 작업이 있어야 Mitigating으로 이동할 수 있습니다.
전환을 사용해 사람들이 잊는 필드를 강제하세요. 일반 규칙: 짧은 근본 원인 요약과 최소 하나의 후속 항목이 없으면 인시던트를 닫을 수 없습니다. “RCA: TBD”를 허용하면 그대로 남는 경향이 있습니다.
인시던트 페이지는 한눈에 세 가지 질문에 답해야 합니다: 누가 담당자인가, 다음 행동이 무엇인가, 마지막 업데이트는 언제였는가.
할당 및 에스컬레이션 규칙
인시던트가 시끄러우면 시간을 잃는 가장 빠른 방법은 불분명한 소유입니다. 앱은 한 사람을 명확히 책임지게 하되 다른 사람이 도와주기 쉽도록 해야 합니다.
간단하지만 잘 작동하는 패턴:
- Primary owner: 대응을 주도하고 업데이트를 게시하며 다음 단계를 결정
- Helpers: 진단, 롤백, 커뮤니케이션 등 작업을 맡고 보고
- Approver: 위험한 작업을 승인할 수 있는 리드
할당은 명시적이고 감사 가능해야 합니다. 누가 담당자를 설정했는지, 누가 수락했는지, 그 이후의 모든 변경을 추적하세요. “수락(accepted)”은 중요합니다. 잠들어 있거나 오프라인인 사람에게 할당하는 것은 진짜 소유가 아닙니다.
온콜 대 팀 기반 할당은 보통 심각도에 따라 달라집니다. P1/P2의 경우 기본값을 온콜 로테이션으로 두어 항상 이름이 지정된 소유자가 있게 하세요. 낮은 심각도에서는 팀 기반 할당이 작동할 수 있지만 짧은 시간 내에 단일 주 담당자를 요구하세요.
휴가와 장애 상황은 시스템뿐 아니라 사람 프로세스에서도 계획하세요. 지정된 사람이 부재로 표시되면 보조 온콜이나 팀 리드로 라우팅되게 하세요. 자동화하되 쉽게 수정할 수 있게 가시적으로 유지하세요.
에스컬레이션은 심각도와 침묵(업데이트 없음) 모두에 대해 트리거되어야 합니다. 유용한 시작점 예시:
- P1: 5분 내 소유 수락이 없으면 에스컬레이션
- P1/P2: 15~30분 동안 업데이트가 없으면 에스컬레이션
- 모든 심각도: 상태가 응답 목표를 넘겨서 계속 “Investigating”이면 에스컬레이션
타임라인, 업데이트, 알림
좋은 타임라인은 공유된 기억입니다. 인시던트 동안 맥락은 빠르게 사라집니다. 적절한 순간들을 한곳에 캡처하면 핸드오프가 쉬워지고 포스트모템은 문서를 열기 전에 대부분 작성된 상태가 됩니다.
타임라인이 캡처해야 할 것
타임라인을 의견으로 가득 채우지 마세요. 채팅 로그로 변하지 않게 하세요. 대부분의 팀은 감지, 인정, 주요 완화 단계, 복구, 종료 같은 소수의 항목에 의존합니다.
각 항목에는 타임스탬프, 작성자, 짧은 평문 설명이 필요합니다. 늦게 합류한 사람도 다섯 개 항목을 읽으면 상황을 이해할 수 있어야 합니다.
명확함을 유지하는 업데이트 유형
다른 업데이트는 다른 청중을 대상으로 합니다. 항목에 유형을 두면 도움이 됩니다: 내부 노트(원시 세부), 고객용 업데이트(안전한 문구), 결정(왜 A안을 선택했는가), 핸드오프(다음 사람이 알아야 할 것).
리마인더는 개인 취향이 아니라 심각도에 따라 작동해야 합니다. 타이머가 울리면 먼저 현재 소유자에게 알리고 반복적으로 놓쳐지면 에스컬레이션하세요.
알림은 대상이 명확하고 예측 가능해야 합니다. 일반 규칙: 생성, 심각도 변경, 복구, 기한 지난 업데이트에 대해 알립니다. 모든 변경마다 회사 전체에 알림을 보내진 마세요.
실제 후속 작업으로 이어지는 포스트모템
포스트모템은 두 가지 역할을 해야 합니다: 평문으로 무슨 일이 일어났는지 설명하고 같은 실패가 다시 발생할 가능성을 줄이기.
작성은 짧게 유지하고 출력을 작업으로 강제하세요. 실용적 구조: 요약, 고객 영향, 근본 원인, 적용한 수정, 후속 조치.
후속 조치가 핵심입니다. 그것들을 문단 끝에 그냥 남기지 마세요. 각 후속 조치를 담당자와 기한이 있는 추적된 작업으로 만드세요(기한이 ‘다음 스프린트’여도 좋습니다). 이 차이가 “모니터링 개선이 필요하다”와 “Alex가 금요일까지 DB 연결 포화 알림 추가”의 차이입니다.
태그는 포스트모템을 나중에 유용하게 만듭니다. 인시던트마다 1~3개의 주제를 추가하세요(모니터링 갭, 배포, 용량, 프로세스). 한 달 후에는 대부분의 P1이 배포에서 왔는지 알림 누락에서 왔는지 같은 기본 질문에 답할 수 있습니다.
증거는 첨부하기 쉬워야 하지만 필수는 아닙니다. 스크린샷, 로그 스니펫, 외부 시스템 참조(티켓 ID, 채팅 스레드, 벤더 케이스 번호)용 선택 필드를 지원하세요. 경량화해 사람들이 실제로 작성하게 만드세요.
단계별: 하나의 내부 앱으로 미니 시스템 구축하기
이걸 스프레드시트에 열을 몇 개 더한 형태로 취급하지 말고 작은 제품처럼 다루세요. 좋은 인시던트 앱은 실제로 세 가지 뷰입니다: 지금 무슨 일이 일어나고 있는가, 다음에 무엇을 할 것인가, 이후에 무엇을 배울 것인가.
압박 속에서 사람들이 열어볼 화면을 스케치하는 것으로 시작하세요:
- Queue: 열린 인시던트와 몇 가지 필터(오픈, 업데이트 필요, 벤더 대기, 종료)
- Incident page: 심각도, 담당자, 현재 상태, 타임라인, 작업, 최신 업데이트
- Postmortem page: 영향, 근본 원인, 액션 아이템, 담당자
데이터 모델과 권한을 함께 구축하세요. 모두가 모든 것을 편집할 수 있으면 히스토리가 엉망이 됩니다. 일반적 접근은: IT에 대한 넓은 보기 권한, 상태/심각도 변경은 통제, 대응자는 업데이트 추가 가능, 포스트모템 승인 담당자는 명확히 정함.
그다음 반쯤 채워진 인시던트를 막는 워크플로 규칙을 추가하세요. 필수 필드는 상태에 따라 달라져야 합니다. 예를 들어 “New” 상태는 제목과 리포터만 허용할 수 있지만 “Mitigating”으로 가려면 영향 요약이 필요하고 “Resolved”로 닫으려면 근본 원인 요약과 최소 하나의 후속 작업이 필요할 수 있습니다.
마지막으로 과거 인시던트 2~3건을 재연해 테스트하세요. 한 사람은 인시던트 커맨더 역할을, 한 사람은 대응자 역할을 맡으세요. 어떤 상태가 불명확한지, 사람들이 건너뛰는 필드가 어디인지, 더 나은 기본값이 필요한 지점을 빠르게 알게 됩니다.
흔한 실수와 회피 방법
대부분의 인시던트 시스템은 단순한 이유로 실패합니다: 사람들이 스트레스를 받을 때 규칙을 기억하지 못하고 앱이 나중에 필요한 사실을 캡처하지 못합니다.
실수 1: 과도한 심각도나 상태 수
심각도 레벨이 여섯 개이고 상태가 열 가지면 사람들은 추측합니다. 심각도는 3~4개로, 상태는 다음에 누가 무엇을 해야 하는지에 집중하세요.
실수 2: 단일 소유자 없음
모두가 “보고 있다”면 아무도 추진하지 않습니다. 진행을 위해서는 명확히 이름이 지정된 담당자를 요구하고 핸드오프를 명시적으로 기록하세요.
실수 3: 신뢰할 수 없는 타임라인
‘무슨 일이 언제 일어났는가’가 채팅 기록에 의존하면 포스트모템이 논쟁으로 변합니다. 열린, 인정, 완화, 해결 타임스탬프를 자동으로 캡처하고 타임라인 항목은 짧게 유지하세요.
또한 ‘네트워크 문제’ 같은 모호한 근본 원인으로 닫지 마세요. 명확한 근본 원인 진술과 최소 하나의 구체적 다음 단계가 필요합니다.
출시 체크리스트와 다음 단계
전체 IT 조직에 배포하기 전에 기본을 스트레스 테스트하세요. 사람들이 처음 2분 안에 올바른 버튼을 찾지 못하면 다시 채팅 스레드와 스프레드시트로 돌아갑니다.
짧은 출시 체크에 집중하세요: 역할과 권한, 명확한 심각도 정의, 강제된 소유권, 리마인더 규칙, 응답 목표가 지켜지지 않았을 때의 에스컬레이션 경로.
빈번한 알림을 발생시키는 몇 개 서비스와 한 팀으로 파일럿을 진행하세요. 2주간 운영해보고 실제 인시던트를 기반으로 조정하세요.
인시던트를 여러 시스템과 이어 붙이지 않고 하나의 내부 도구로 구축하려면 AppMaster (appmaster.io) 같은 옵션이 있습니다. 이 도구로 데이터 모델, 워크플로 규칙, 웹/모바일 인터페이스를 한곳에서 만들어 인시던트 큐, 인시던트 페이지, 포스트모템 추적에 잘 맞습니다.
자주 묻는 질문
산만하게 흩어진 업데이트를 하나의 공유된 기록으로 대체해 빠르게 핵심을 답합니다: 누가 인시던트를 담당하는지, 사용자가 어떤 문제를 겪는지, 어떤 조치가 시도됐는지, 다음에 무엇을 해야 하는지. 이를 통해 핸드오프에 낭비되는 시간, 상충되는 메시지, 그리고 “요약해줄래?” 같은 방해를 줄일 수 있습니다.
실고객이나 비즈니스에 영향이 있다고 판단되면 즉시 인시던트를 열기 시작하세요. 초기에는 제목 초안과 ‘영향 범위 미확인’ 같은 상태로 열고, 심각도와 범위가 확인되면 상세를 채우면 됩니다.
작고 구조화된 필드로 유지하세요: 명확한 제목, 영향 요약, 영향받는 서비스(들), 시작 시간, 현재 상태, 심각도, 그리고 단일 담당자. 상황이 진전되면 업데이트와 작업을 추가하되 핵심 사실은 자유 텍스트에만 의존하지 마세요.
토론이 필요 없도록 3~4단계로 유지하세요. 기본값으로는 P1(핵심 서비스 중단 또는 데이터 손실 위험), P2(주요 기능 영향, 우회책 존재 또는 범위 제한), P3(소규모 영향), P4(사소한 문제 또는 외형적 결함)을 권합니다.
약속처럼 보이도록 만드세요: 응답 시간(인정), 첫 업데이트 시간, 그리고 업데이트 주기 등. 그런 다음 업데이트 주기가 지켜지지 않으면 알림과 에스컬레이션을 트리거하세요. 침묵(silence)이 종종 인시던트의 진짜 실패입니다.
약 6단계로 목표로 하세요: New, Acknowledged, Investigating, Mitigating, Monitoring, Resolved. 각 상태는 다음에 무엇을 해야 할지 분명히 알려야 하며, 전환 시 사람들이 스트레스 받을 때 잊는 필드를 강제하세요(예: Acknowledged로 이동하려면 담당자 필요).
하나의 주 담당자를 요구하세요. 이 사람은 대응을 이끌고 업데이트를 게시해야 합니다. 수락(accepted)을 추적해 오프라인 사람에게 할당되는 일을 막고, 핸드오프는 기록된 이벤트로 남겨 다음 담당자가 중복 수사를 하지 않게 하세요.
감지, 인정, 주요 결정, 완화 조치, 복구, 종료 같은 핵심 순간만 캡처하세요. 각 항목은 타임스탬프, 작성자, 짧은 평문 설명이 있어야 늦게 합류한 사람도 몇 개 항목만 읽고 상황을 파악할 수 있습니다. 채팅 기록 전체를 타임라인으로 쓰지 마세요.
간결하고 행동 중심으로 작성하세요: 요약, 고객 영향, 근본 원인, 완화 중에 적용한 수정, 그리고 후속 조치(각 항목에 담당자와 기한). 문서 자체도 중요하지만, 실제로 반복을 막는 것은 추적된 작업들입니다.
네. 인시던트, 업데이트, 작업, 서비스, 포스트모템을 데이터로 모델링하고 앱에서 워크플로 규칙을 강제하면 가능합니다. AppMaster (appmaster.io)를 사용하면 그 데이터 모델과 웹/모바일 화면, 상태 기반 검증을 한 곳에서 만들 수 있어 스프레드시트로 되돌아가는 일을 줄입니다.


