노코드 앱용 인시던트 런북: 감지, 분류, 복구
이 노코드 앱 인시던트 런북으로 문제를 빠르게 감지하고 영향 범위를 분류하며 안전하게 롤백·복구하고 명확히 소통해 같은 사고의 반복을 줄이세요.

이 런북의 목적과 사용 시점
인시던트는 사용자가 앱을 사용하지 못하게 하거나, 지나치게 느리게 만들거나, 데이터에 위험을 주는 모든 예기치 않은 문제입니다. 노코드 앱에서는 갑작스러운 로그인 실패, 변경 이후 깨진 화면, 백그라운드 자동화가 작동을 멈춤, API 오류, 또는 “성공”으로 표시되지만 데이터베이스에 잘못된 값을 조용히 쓰는 워크플로우처럼 보일 수 있습니다.
문서화된 런북은 스트레스가 큰 순간을 작은, 명확한 행동 목록으로 바꿉니다. 추측을 줄이고 롤백 시점처럼 결정을 빠르게 하며 모든 사람이 같은 사실을 공유하도록 돕습니다. 인시던트 동안 생기는 지연의 대부분은 기술적 이유가 아니라 불확실성에서 옵니다: 진짜인가? 누가 리드하는가? 무엇이 변경되었는가? 사용자에게 무엇을 말할 것인가?
이 플레이북은 문제가 생겼을 때 앱을 다루는 모든 사람을 위한 것입니다: 변경을 배포하는 빌더, 배포와 접근을 관리하는 운영/플랫폼 소유자, 최초 보고를 받는 지원팀, 영향과 우선순위를 판단하는 제품 또는 비즈니스 소유자 등입니다.
의도적으로 가볍게 만들었으며, 비주얼 로직, 생성된 서비스, 다양한 배포 옵션이 있는 AppMaster 같은 플랫폼에서 빌드하는 팀에도 적용됩니다.
감지 및 확인, 빠른 분류(트리아지), 안정화 및 복구(롤백 결정 포함), 중단 중 커뮤니케이션, 그리고 동일한 문제가 반복될 가능성을 줄이기 위한 짧은 사후 검토까지 전체 인시던트 루프를 다룹니다.
장기적인 아키텍처 재설계, 심층 보안 포렌식, 복잡한 규정 준수 절차는 포함하지 않습니다. 규제 데이터나 중요한 인프라를 다루는 경우 이 런북 위에 더 엄격한 단계를 추가하세요.
문제가 발생하기 전에: 기준선과 역할 설정
인시던트는 “정상”이 어떤 모습인지 모를 때 혼란스럽게 느껴집니다. 팀이 실제 문제를 빠르게 발견할 수 있도록 기준선을 정의하세요. 노코드 앱의 초기 신호는 보통 플랫폼 상태, 비즈니스 메트릭, 사람들로부터 오는 혼합 신호입니다.
매일(중단 시가 아니더라도) 모니터링할 신호를 적어 두세요. 일반적인 항목에는 가동 시간(uptime), 오류율, 느린 화면, 로그인 실패, 결제 실패, 지원 티켓 또는 사용자 메시지 급증이 포함됩니다.
중요도를 누구나 이해할 수 있는 평범한 언어로 정의하세요:
- SEV1: 대부분 사용자가 앱을 사용하지 못하거나 금전/보안/데이터가 위험한 상태.
- SEV2: 주요 기능이 고장났지만 우회 방법이 있음.
- SEV3: 경미한 문제, 제한된 사용자 영향, 또는 외형적 버그.
응답 목표를 설정해 모멘텀을 만드세요. 예시 목표: 5분 이내에 인지, 15분 이내 첫 업데이트 게시, 60분 내 안정화 목표(완전한 수정이 더 오래 걸릴 수 있음).
필요할 때 바로 사용할 수 있도록 역할을 미리 정하세요. 누가 인시던트를 선언할 수 있는지, 누가 리드하는지, 그 사람이 오프라인일 때 백업은 누구인지 정해두세요. AppMaster 팀에서는 보통 Business Process 로직 소유자와 배포나 내보내기를 처리할 수 있는 백업이 있습니다.
마지막으로, 인시던트 노트를 위한 하나의 공유 장소를 유지하세요. 모든 행동에 타임스탬프(무엇이 언제, 누가 변경했는지)를 남겨 추후에 추측 없이 사건을 재구성할 수 있게 하세요.
감지 및 확인: 실제 문제인가, 얼마나 심각한가
대시보드를 오래 들여다보기 전에 영향을 확인하세요. 한 가지 명확한 질문을 던지세요: 지금 누가 무엇을 하지 못하고 있는가? “지원팀이 티켓을 열 수 없다”는 표현이 “앱이 느리다”보다 더 유용합니다. 가능하면 영향을 받은 사용자와 동일한 역할과 기기로 문제를 재현하세요.
다음으로 범위를 파악하세요. 한 계정인가, 특정 고객군인가, 아니면 모두인가? 빠른 분할을 해보세요: 지역, 계정 유형, 웹 대 모바일, 단일 기능 대 전체 앱 등. 노코드 도구에서는 어떤 문제가 전역적으로 보이지만 실제로는 권한 규칙이나 한 화면의 오류일 수 있습니다.
무엇이 변경되었는지 확인하세요. 배포, 설정 토글, 데이터베이스 스키마 편집, 데이터 임포트 등을 위해 지난 1-2시간을 되돌아보세요. AppMaster 같은 플랫폼에서는 비즈니스 프로세스, 데이터 모델, 인증 설정의 변경이 UI가 정상처럼 보여도 여러 흐름에 영향을 줄 수 있습니다.
앱을 탓하기 전에 외부 종속성을 배제하세요. 이메일/SMS 제공자, 결제(예: Stripe), 통합(예: Telegram, AWS 서비스, AI API)은 실패하거나 레이트 리밋될 수 있습니다. 앱이 메시지 전송이나 카드 결제 시에만 문제가 발생한다면 근본 원인은 외부에 있을 수 있습니다.
간단한 의사결정 체크리스트를 사용하세요:
- 모니터: 영향이 낮고 오류가 증가하지 않으면 관찰.
- 지금 완화: 사용자가 핵심 작업을 못하거나 데이터가 위험하면 즉시 완화.
- 인시던트 선언: 문제가 광범위하거나 시간 민감하거나 불명확하면 선언.
- 에스컬레이션: 문제가 결제, 인증, 또는 운영 데이터에 닿으면 상향 보고.
- 체크인 시간 설정: 예: 15분마다 팀이 흐트러지지 않도록 확인.
심각도와 범위를 분류하면 “실제 문제인가?”에서 “먼저 무엇을 할까?”로 추측 없이 옮겨갈 수 있습니다.
트리아지 단계별(첫 30분)
즉시 인시던트 기록을 열고 평범한 제목으로 사용자 영향을 명확히 적으세요(예: “EU 고객 결제 실패”). 시작 시간(첫 경고 또는 최초 보고)을 적습니다. 이 문서가 결정, 타임스탬프, 변경 사항의 단일 출처가 됩니다.
작업이 겹치지 않게 역할을 배정하세요. 작은 팀이라도 소유자를 지정하면 스트레스 높은 상황에서 실수를 줄일 수 있습니다. 최소한 다음이 필요합니다:
- Incident lead: 집중 유지, 우선순위 설정, 격리 대 롤백 결정
- Fixer: 원인 조사 및 변경 적용
- Comms: 이해관계자와 지원팀에 업데이트 게시
- Note taker: 행동, 시간, 결과 기록
문서에 두 가지를 명확히 적으세요: 확실히 아는 것과 현재 가설. “확실한 것”에는 오류율 급증, 특정 엔드포인트 실패, 모바일만 영향 등 포함될 수 있습니다. 가설은 틀릴 수 있지만 다음 테스트를 안내해야 합니다. 배우는 대로 둘 다 업데이트하세요.
불안정한 동안에는 15분마다 업데이트를 정하세요. 변한 것이 없으면 그것도 알리세요. 정기 업데이트는 사이드 토론을 멈추게 하고 중복 “새 소식?” 메시지를 줄입니다.
첫 번째 격리(컨테인먼트) 행동을 선택하세요. 목표는 근본 원인을 몰라도 피해를 빠르게 줄이는 것입니다. 전형적인 초기 조치는 백그라운드 작업 일시 중지, 위험한 기능 플래그 비활성화, 모듈로의 트래픽 제한, 알려진 안전 구성으로 전환 등이 있습니다. AppMaster에서는 Business Process Editor에서 특정 흐름을 끄거나 실패를 유발하는 UI 경로를 임시로 숨기는 경우가 많습니다.
격리가 한 주기 내(예: 15분) 내에 지표를 개선하지 못하면 병행하여 롤백 계획을 시작하세요.
먼저 안정화: 영향 격리
실제 인시던트가 확인되면 ‘버그 찾기’에서 ‘지금 피를 멈추기’로 전환하세요. 안정화는 시간을 벌어주고 조사 중에 사용자, 수입, 데이터를 보호합니다.
해를 줄이는 가장 작은 변경부터 시작하세요. 격리는 전체 수정보다 빠른 경우가 많습니다. 새 기능을 비활성화하거나 워크플로우를 일시 중지하거나 위험한 입력 경로를 차단하면 재빌드 없이도 피해를 줄일 수 있습니다.
데이터가 손상되고 있다고 의심되면 쓰기를 먼저 중단하세요. 양식을 임시 비활성화하거나 레코드를 업데이트하는 자동화를 일시 중지하거나 업데이트를 받는 API 엔드포인트를 차단하는 방식입니다. 잘못된 데이터를 읽는 것은 고통스럽지만 잘못된 데이터를 쓰는 것은 복구 작업을 기하급수적으로 늘립니다.
사용자가 잠긴 경우 로그인 문제를 최우선으로 처리하세요. 인증 설정과 로그인 흐름을 먼저 확인하세요. 팀과 사용자가 앱에 접속할 수 없으면 다른 모든 수정이 느려집니다.
앱이 느리거나 타임아웃이 발생하면 부하를 줄이고 비용이 큰 경로를 제거하세요. 무거운 화면을 끄고, 백그라운드 작업을 일시 중지하며, 요청을 급증시키는 새 통합을 비활성화하세요. AppMaster에서는 문제가 되는 비즈니스 프로세스를 비활성화하거나 오류를 유발하는 UI 동작을 임시로 제거하는 것만으로도 효과를 볼 수 있습니다.
모든 행동을 신중히 문서화하세요. 압박 속에서 팀은 같은 단계를 반복하거나 실수로 수정을 되돌리기도 합니다. 각 변경과 그 결과를 기록하세요.
간단한 안정화 순서:
- 데이터 손상이 가능하면 쓰기 중단을 우선하고 새 레코드가 더 이상 변경되지 않는지 확인.
- 타임라인에서 관련된 최신 기능 플래그, 자동화, 통합을 비활성화.
- 접근 보호: 관리자 우선으로 로그인과 세션 흐름 복원, 그 다음 전체 사용자.
- 배치 작업 일시 중지 및 가장 느린 사용자 경로 제거로 부하 감소.
- 각 행동을 타임스탬프, 소유자, 관찰된 효과와 함께 기록.
목표는 “안전하고 사용 가능”한 상태지, “완전 해결”이 아닙니다. 영향이 격리되면 침착하게 진단하고 올바른 롤백이나 수정을 선택할 수 있습니다.
롤백 선택과 위험 점검
문제가 발생했을 때 속도도 중요하지만 가장 안전한 선택이 옳습니다. 실무적으로 보통 세 가지 옵션이 있습니다: 롤백, 전진(fix forward)으로 수정, 또는 부분 되돌리기(한 기능만 끄고 나머지는 유지).
먼저 당신의 환경에서 “롤백”이 무엇을 의미하는지 분명히 하세요. 이전 앱 버전을 배포하거나 설정 변경을 되돌리거나 데이터베이스 상태를 복원하는 것을 의미할 수 있습니다. AppMaster 같은 플랫폼에서는 “버전”이 백엔드 로직, 웹 UI, 모바일 빌드, 환경 설정을 포함할 수 있습니다.
롤백이 안전한지 결정할 때 다음 위험 점검을 사용하세요:
- 데이터베이스 스키마 변경: 이전 버전이 다른 테이블이나 필드를 기대하면 롤백이 실패할 수 있습니다.
- 되돌릴 수 없는 데이터 쓰기: 환불, 상태 변경, 전송된 메시지는 되돌릴 수 없습니다.
- 큐 작업 및 웹훅: 이전 로직이 아이템을 재처리하거나 새 페이로드에서 실패할 수 있습니다.
- 외부 종속성: 결제, 이메일/SMS, Telegram 통합 등이 동작이 변경되었을 수 있습니다.
무엇이든 건들기 전에 간단한 진행 기준을 정하세요. 예: 행동 후 10-15분 안에 개선되어야 할 2-3개의 지표(오류율, 로그인 성공률, 결제 완료율, API 응답 지연 등)를 골라두세요. 지표가 올바른 방향으로 움직이지 않으면 중단하고 전략을 바꾸세요.
롤백의 백아웃(backout) 계획도 세우세요. 이전 버전이 새 문제를 유발하면 어떻게 되돌릴지(어떤 빌드를 재배포할지, 어떤 설정을 다시 적용할지, 누가 승인할지) 미리 알아두세요. 최종 배포 결정을 위한 한 사람의 책임자를 두어 중간에 방향이 바뀌지 않게 하세요.
인시던트 중 커뮤니케이션
침묵은 인시던트를 악화시킵니다. 팀이 조사하는 동안 사람들에게 정보를 간단하고 반복 가능한 방식으로 제공하세요.
먼저 내부 업데이트부터 시작하세요. 질문을 받을 사람들이나 병목을 제거할 수 있는 사람들에게 사실 중심의 짧은 정보를 전하세요. 일반적으로 필요한 대상은 다음과 같습니다:
- 지원/고객 성공팀: 사용자가 보고하는 증상과 지금 당장은 무엇을 말해야 하는지
- 영업/어카운트 팀: 어떤 계정이 영향을 받는지와 약속하지 말아야 할 내용
- 빌더/엔지니어링: 무엇이 변경되었는지, 무엇을 롤백하거나 적용하는지, 누가 담당인지
- 임원 연락 창구: 영향, 위험, 다음 업데이트 시간
- 외부 공지를 승인할 단일 소유자
외부 업데이트는 알고 있는 사실만 전하세요. 원인을 추측하거나 벤더를 비난하지 마세요. 사용자는 주로 세 가지를 원합니다: 확인, 영향, 다음 업데이트 시점.
간단한 메시지 템플릿
채널 전반에서 일관된 한 줄 상태를 유지하세요:
- Status: Investigating | Identified | Mitigating | Monitoring | Resolved
- Impact: “일부 사용자가 로그인할 수 없음” 또는 “신규 주문 결제 실패”
- Workaround: “10분 후 재시도” 또는 “웹이 다운일 때는 모바일 앱 사용”(사실일 때만)
- Next update: “다음 업데이트: 14:30 UTC”
사용자가 화가 난 경우 먼저 공감(acknowledge)하고 구체적으로 말하세요: “체크아웃이 일부 고객에게 실패하는 것을 확인했습니다. 지금 마지막 변경을 롤백 중입니다. 30분 후 다음 업데이트를 드리겠습니다.” 인시던트 중에 마감 시간, 크레딧, 영구적인 수정을 약속하지 마세요.
해결(Resolved)과 모니터링(Monitoring)의 차이
주요 증상이 사라지고 핵심 점검(로그인, 핵심 흐름, 오류율)이 정상일 때만 Resolved를 선언하세요. 수정(예: 롤백이나 설정 복원)을 적용했지만 반복을 감시해야 할 때는 Monitoring 상태를 사용하세요. 무엇을 얼마나 오래 모니터링할지, 최종 업데이트는 언제 게시할지 명시하세요.
원인 진단: 빠르게 범위를 좁히는 검사
상황이 안정되면 불 끄기에서 벗어나 최소한의 사실을 모아 증상을 설명할 수 있게 하세요. 목표는 완벽한 근본 원인을 찾는 것이 아니라 인시던트를 악화시키지 않으면서 조치할 수 있는, 가능성 높은 원인을 찾는 것입니다.
다양한 증상은 다른 용의자를 가리킵니다. 느린 페이지는 대개 느린 DB 쿼리, 트래픽 급증, 외부 서비스 지연 때문입니다. 타임아웃은 멈춘 프로세스, 과부하된 백엔드, 너무 오래 기다리는 통합에서 올 수 있습니다. 오류나 재시도 급증은 최근 변경, 잘못된 입력, 상류 서비스 장애와 연관되는 경우가 많습니다.
빠른 검사(15분)
정상적인 테스트 계정으로 실제 사용자 여정 하나를 처음부터 끝까지 실행하세요. UI, 로직, DB, 통합을 모두 거치기 때문에 가장 빠른 신호인 경우가 많습니다.
중점 점검 항목:
- 하나의 여정을 재현: 로그인, 핵심 동작 수행, 결과 확인
- 느리거나 실패하는 단계 찾기: 페이지 로드, API 호출, DB 저장, 웹훅
- 최근 데이터 확인: 마지막 20-50개의 레코드에서 중복, 누락 필드, 합계 불일치 검사
- 통합 검증: 최근 결제 시도(예: Stripe), 웹훅 전달, 이메일/SMS/Telegram 같은 메시지
- 변경 맥락 확인: 급증 직전 어떤 것이 배포되었는지, 구성되었는지, 마이그레이션 되었는지
AppMaster를 사용하는 경우 이는 비즈니스 프로세스 단계, 데이터 디자이너 변경, 또는 배포 구성 변경과 깔끔하게 대응되는 경우가 많습니다.
결정: 현재 완화 유지 또는 전진 수정
빠른 검사로 명확한 원인이 보이면 가장 안전한 조치를 선택하세요: 현재 완화 조치를 유지하거나 소규모 영구 수정을 적용합니다. 속도 제한 해제, 기능 토글 제거, 임시 수동 처리 제거는 선택하기 전에 같은 여정을 두 번 성공시키고 오류율이 몇 분 동안 안정적으로 유지되는지 확인하세요.
예시 시나리오: 업무 시간 중 실패한 릴리스
화요일 오전 10:15입니다. 팀이 AppMaster로 만든 고객 포털에 작은 변경을 배포했습니다. 몇 분 내에 사용자가 로그인 후 빈 페이지를 보거나 신규 주문이 접수되지 않는 문제가 생겼습니다.
지원팀에 같은 메시지의 티켓이 세 건 들어왔습니다: “로그인되지만 포털이 로드되지 않음.” 동시에 모니터링은 웹 앱의 500 오류 급증과 성공적인 API 호출 감소를 보여줍니다. 이를 실제 인시던트로 취급합니다.
인시던트 리드는 빠르게 확인합니다: 데스크탑과 모바일에서 테스트 사용자로 로그인 시도, 마지막 배포 시간 확인. 타이밍이 릴리스와 일치하므로 최신 변경이 관련됐다고 가정합니다.
첫 30분의 흐름 예시는 다음과 같습니다:
- 격리: 포털을 유지보수 모드로 전환하거나 영향을 받는 기능 플래그를 임시로 비활성화해 더 많은 사용자가 고장난 흐름에 닿는 것을 막습니다.
- 롤백 결정: 실패가 릴리스 직후 시작되고 많은 사용자가 영향을 받는다면 우선 롤백합니다.
- 커뮤니케이션: 내부에 짧은 업데이트(무엇이 고장났는지, 영향, 현재 조치, 다음 업데이트 시간)를 게시하고 고객에게도 간단히 인지 및 작업 중임을 알립니다.
- 복구: 마지막 정상 버전을 재배포하거나 특정 모듈을 되돌립니다. 로그인, 대시보드 로드, “티켓 생성” 또는 “주문하기” 같은 핵심 동작을 재테스트합니다.
- 모니터링: 10-15분 동안 오류율, 로그인 성공률, 지원 티켓 수 등을 관찰한 뒤 안정 선언을 고려합니다.
오전 10:40까지 오류가 정상으로 돌아옵니다. 지표를 주시하면서 지원팀이 새 티켓이 줄어드는 것을 확인합니다.
사후에 팀은 짧은 검토를 진행합니다: 무엇이 먼저 이를 포착했는가(알림 대 지원), 무엇이 지연을 초래했는가(소유자 부재, 불명확한 롤백 절차), 무엇을 바꿀 것인가. 흔한 개선점은 포털의 상위 3개 흐름을 대상으로 하는 릴리스 스모크 테스트 체크리스트를 추가하고 롤백을 문서화된 원클릭 단계로 만드는 것입니다.
인시던트를 악화시키는 흔한 실수
대부분의 인시던트는 두 가지 이유로 악화됩니다: 문제를 조사하는 동안 시스템이 계속 피해를 주도록 두거나, 너무 많은 것을 동시에 너무 빨리 바꾸는 경우입니다. 이 런북은 둘 다 피하도록 설계되었습니다.
흔한 함정은 문제를 조사하면서도 앱이 계속 잘못된 데이터를 쓰도록 두는 것입니다. 워크플로우가 루프를 돌거나 통합이 중복을 발생시키거나 권한 버그로 잘못된 사용자가 레코드를 수정하고 있다면 먼저 해당 프로세스를 중지하세요. AppMaster에서는 Business Process 비활성화, 모듈 통합 끄기, 접근 제한 등으로 확산을 멈출 수 있습니다.
또 다른 함정은 추측으로 “고치기”입니다. 여러 사람이 클릭하고 설정을 바꾸면 타임라인을 잃습니다. 작은 편집도 인시던트 동안 중요한 영향을 줄 수 있습니다. 한 명의 책임자를 정하고 간단한 변경 로그를 유지하며 알 수 없는 상태에서 여러 수정을 겹쳐 적용하지 마세요.
반복적으로 더 긴 가동 중단을 초래하는 실수들:
- 먼저 조사하고 나중에 격리하여 잘못된 쓰기나 중복 동작이 계속되게 둠
- 메모 없이 여러 변경을 동시에 적용해 어떤 조치가 효과였는지 알 수 없음
- 커뮤니케이션 지연 또는 모호한 업데이트로 신뢰 저하
- 데이터베이스 상태와 큐, 이메일, 웹훅을 확인하지 않고 무작정 롤백
- 검증 단계 없이 인시던트를 종료
커뮤니케이션은 복구의 일부입니다. 아는 것, 모르는 것, 다음 업데이트 시점을 공유하세요. “우리는 롤백 중이며 15분 내에 청구 이벤트가 정확한지 확인하겠습니다”는 “조사 중입니다”보다 낫습니다.
오류가 멈췄다고 해서 인시던트를 닫지 마세요. 짧은 체크리스트로 확인하세요: 핵심 화면 로드, 새 레코드 정상 저장, 중요 자동화가 한 번 실행되는지, 백로그(큐, 재시도, 예약 작업)가 비워졌거나 안전하게 일시 중지되었는지 확인합니다.
압박 속에서 실행할 수 있는 빠른 체크리스트
문제가 터지면 뇌는 한 번에 열 가지 일을 하려 합니다. 이 체크리스트로 침착하게 유지하고 사람을 보호하며 서비스를 복구하세요.
팀이 실제로 볼 수 있는 곳에 이 섹션을 고정하세요.
- 실제 문제인지 확인하고 영향 범위 파악(5분): 경고가 사용자 보고와 일치하는지 확인하세요. 무엇이 실패하는지(로그인, 체크아웃, 관리자 패널), 누가 영향을 받는지, 언제부터인지 적습니다. 가능하면 깨끗한 세션(시크릿 모드나 테스트 계정)에서 재현하세요.
한 분만 인시던트 오너로 지명하세요. 한 사람이 결정을 내리고 나머지는 지원합니다.
-
안정화 및 격리(10분): 근본 원인 추적 전에 피해를 멈추세요. 위험 경로(기능 토글, 임시 배너, 큐 일시 중지)를 비활성화하고 핵심 여정을 한 번 끝까지 테스트하세요. 비즈니스에 가장 중요한 여정을 선택하세요.
-
서비스 복구(10-20분): 가장 안전한 조치를 선택하세요: 마지막 정상 버전으로 롤백하거나 최소한의 수정을 적용합니다. AppMaster 같은 플랫폼에서는 이전 빌드를 재배포하거나 마지막 변경을 되돌린 후 오류율과 응답 시간을 정상으로 회복했는지 확인합니다.
-
커뮤니케이션(항상): 영향, 사용자가 해야 할 일, 다음 업데이트 시간을 포함한 짧은 상태 업데이트를 게시하세요. 지원팀에 두 문장짜리 스크립트를 제공해 모두가 동일한 내용을 전달하게 하세요.
-
깔끔한 마무리(잊기 전에): 무슨 일이 있었는지, 무엇을 변경했는지, 서비스가 언제 복구되었는지 기록하세요. 후속 작업을 소유자와 기한과 함께 할당하세요(모니터링 수정, 테스트 보강, 데이터 정리, 후속 수정).
인시던트 이후: 배우고 고치고 반복 방지
앱이 복구되었다고 해서 인시던트가 완전히 끝난 것은 아닙니다. 다운타임을 줄이는 가장 빠른 방법은 사건이 아직 선명할 때 일어난 일을 기록하고 그 학습을 작은 실질적 변경으로 바꾸는 것입니다.
2-5일 내에 짧은 사후 검토를 일정에 넣으세요. 비난이 아니라 실용적이고 개선 가능한 항목을 찾는 것이 목적입니다. 목표는 누군가를 찾는 것이 아니라 다음 인시던트를 더 쉽게 처리할 수 있게 만드는 것입니다.
몇 달 뒤에도 누군가 읽을 수 있도록 기록을 작성하세요: 사용자가 본 것, 언제 감지했는지, 시도한 것, 효과가 있었던 것, 서비스가 언제 복구됐는지. 근본 원인을 알면 포함하고, 누락된 알림, 불분명한 소유권, 혼란스러운 롤아웃 단계 같은 기여 요인도 기록하세요.
학습을 소유자와 기한이 있는 작업으로 바꾸세요. 동일한 실패를 방지할 수 있는 가장 작은 변경에 집중하세요:
- 모니터링 갭 닫기(조금이라도 더 일찍 감지할 수 있는 알림이나 대시보드 추가)
- 가드레일 추가(검증 규칙, 레이트 리밋, 기능 플래그 기본값, 승인 단계)
- 위험 영역에 대한 테스트 개선(로그인, 결제, 데이터 임포트, 권한)
- 런북을 실제로 필요했던 정확한 단계로 업데이트
- 온콜이나 앱 소유자를 위한 짧은 교육 리프레시
인시던트당 한 가지 예방 조치를 선택하세요, 작아도 좋습니다. “역할 변경은 2차 리뷰 필요” 또는 “데이터 마이그레이션은 먼저 스테이징에서 실행” 같은 규칙은 반복적인 중단을 막을 수 있습니다.
이 런북을 빌드 및 릴리스 프로세스 옆에 두세요. AppMaster로 빌드하는 경우 각 앱이 어디에 배포되는지(AppMaster Cloud, AWS, Azure, Google Cloud 또는 자체 호스팅), 누가 빠르게 재배포할 수 있는지, 누가 롤백할 수 있는지 기록해두세요. 문서의 단일 저장소를 원하면 AppMaster 프로젝트 노트(appmaster.io)에 함께 보관하면 분 단위로 중요한 순간에 더 쉽게 찾을 수 있습니다.
자주 묻는 질문
예기치 않은 문제가 핵심 작업을 막거나, 앱이 사실상 사용할 수 없을 정도로 느려지거나, 잘못되거나 안전하지 않은 데이터 변경 위험이 있을 때 언제든지 인시던트로 취급하세요. 사용자가 로그인할 수 없거나, 결제가 실패하거나, 자동화가 중단되거나, 잘못된 값이 기록되는 경우에는 이 런북을 따르세요.
먼저 사용자 영향으로 시작하세요: 지금 누가 무엇을 할 수 없는지, 언제부터인지 파악합니다. 동일한 역할과 기기로 재현해보고, 문제가 한 계정인지, 특정 세그먼트인지, 모두에게 발생하는지 확인하면 잘못된 원인을 추적하지 않게 됩니다.
대부분의 사용자가 차단되거나 금전/보안/데이터가 위험에 처했을 때는 SEV1을 선언하세요. 주요 기능이 작동하지 않지만 우회 방법이 있을 때는 SEV2, 범위가 작거나 사소한 버그는 SEV3으로 즉시 분류하세요. 빠르게 결정하는 것이 완벽하게 맞추려는 것보다 중요합니다.
최종 결정을 내리는 한 명의 인시던트 리드를 지정하고, 수리 담당자(fixer), 커뮤니케이션 담당자, 기록 담당자를 배정하세요. 작은 팀에서는 한 사람이 둘 이상의 역할을 맡을 수 있지만 인시던트 리드는 분명해야 합니다.
피해를 빠르게 멈추는 것이 핵심입니다. AppMaster 같은 플랫폼에서는 특정 Business Process를 비활성화하거나 실패를 유발하는 UI 동작을 임시로 숨기거나 루프 중인 자동화를 일시 중지하는 식으로 빠르게 제한할 수 있습니다.
장애가 릴리스 직후 시작되고 알려진 정상 버전으로 빠르게 서비스를 복원할 수 있을 때 롤백하세요. 소규모 저위험 변경을 빠르게 적용하고 검증할 수 있을 때만 전진(fix forward) 방식을 선택합니다.
데이터베이스 스키마 변경, 되돌릴 수 없는 쓰기(환불, 상태 변경, 전송된 메시지 등), 큐에 쌓인 작업이나 웹훅이 이전 로직으로 재처리될 가능성이 있을 때는 롤백이 위험할 수 있습니다. 이런 경우 먼저 안정화하세요.
데이터 손상이 의심되면 먼저 쓰기를 중단하세요. 양식 비활성화, 기록을 업데이트하는 자동화 일시 중지, 업데이트를 받는 API 엔드포인트 차단 등으로 새 레코드가 잘못 변경되지 않도록 하세요.
고정된 간격으로 짧고 사실 중심의 업데이트를 보내세요. 무엇이 영향을 받는지, 지금 무슨 작업을 하고 있는지, 다음 업데이트 시간은 언제인지만 알려주면 됩니다. 원인 추측이나 벤더 탓은 피하세요.
주요 증상이 사라지고 로그인, 핵심 워크플로, 오류율 같은 핵심 점검이 깨끗할 때만 해결(resolved)을 선언하세요. 수정을 적용했지만 반복을 확인하기 위해 시간이 더 필요하면 모니터링 상태로 두고 무엇을 얼마나 볼지 명시하세요.


