키스타임 장애 대응 매뉴얼: 다운타임 최소화 실전 전략
운영 환경이 성숙해질수록 장애는 드물어지지만, 한 번 발생하면 비용이 눈덩이처럼 커진다. 분 단위로 매출이 증발하고, 고객 신뢰는 한 번 꺾이면 회복이 느리다. 기술팀의 의사결정 속도와 품질이 평시의 리팩토링보다 장애 시각의 커뮤니케이션에서 더 선명히 드러나는 이유다. 이 글은 현장에서 실제로 통했던 방법을 토대로, 다운타임을 줄이는 대응 절차와 준비 항목을 체계적으로 정리한다. 서비스 명칭은 예시로 키스타임, 키스타임넷, 키탐넷을 언급하되, 어떤 웹 또는 모바일 서비스에도 적용 가능한 원칙과 구체적 팁을 담았다.
장애를 다루는 관점 정리: SLA, SLO, 에러버짓
비즈니스가 기대하는 성능과 가용성은 추상적 구호가 아니라 수치로 합의돼야 한다. 흔히 SLA는 대외 약속, SLO는 내부 목표로 쓰인다. 예를 들어 월간 99.9% 가용성은 월 43분 내 장애 허용을 뜻한다. 여기에 에러버짓을 붙여, 남은 허용치를 실험 속도와 위험 허용도로 번역한다. 키스타임넷 같은 B2B 서비스는 영업일 오전 9시부터 오후 6시까지를 골든 타임으로 정의하고, 이 시간대는 사실상 100%에 가까운 목표를 잡는다. 반대로 야간 배치가 많은 키탐넷은 야간 SLO를 낮추고, 문제 발생 시 즉시 롤백보다 재처리 파이프라인 가동을 우선할 수 있다. 숫자가 있어야 우선순위가 논쟁이 아닌 계산이 된다.
장애의 유형을 6가지로 쪼개기
모든 장애를 같은 방식으로 푸는 팀은 더디다. 패턴을 나눠야 초동 조치가 빨라진다. 현장에서 자주 보는 유형은 다음과 같다.
응답지연형. CPU나 DB 락, 캐시 미스 폭증으로 p95, p99가 계단식 상승한다. 지연은 점진적으로 올라가다 갑자기 타임아웃 임계치를 넘으며 장애로 전환된다. 대개 스로틀링과 캐시 워밍, 읽기 전용 모드 진입 같은 완충책으로 확산을 막는다.
완전 중단형. 네임서버 오작동, TLS 인증서 만료, 핵심 메시지 브로커 중단처럼 단일 실패 지점이 명확하다. 수습 자체는 단순하지만 감지와 전파에 시간이 걸린다.
데이터 불일치형. 배치 재처리 누락, 이중 쓰기 레이턴시 불균형, 스키마 마이그레이션 불일치로 조회는 되나 값이 틀린다. 가시성이 낮아 가장 위험하다. 정합성 검증 잡과 샘플링 알림이 중요하다.
외부 의존성형. 결제, 본인인증, 지도 API처럼 외부 SLA에 묶인다. 우회 로직과 대체 경로가 설계돼 있지 않으면 손 놓고 기다릴 수밖에 없다.
배포 회귀형. 신규 릴리스가 원인이다. 증분 배포, 비율 조절, 기능 플래그가 없다면 탐지와 롤백에 모두 실패한다.
보안 사고형. 크리덴셜 유출, WAF 우회, 랜섬웨어 등. 가용성보다 기밀성과 무결성 보존이 우선이어서 절차가 크게 달라진다.
이 분류는 매뉴얼의 색인 역할을 한다. 키스타임처럼 고객 접점이 넓은 서비스는 응답지연형과 외부 의존성형 빈도가 높았고, 키탐넷 같은 데이터 처리 플랫폼은 데이터 불일치형에 대비한 정합성 펜스가 성패를 갈랐다.
탐지, 신호, 임계값: 장애는 예고편이 있다
탐지는 두 축으로 깐다. 하나는 SLI 기반의 총량 지표, 다른 하나는 증상 기반의 합성 모니터링이다. 전자는 비율 로그로 성공률, 에러율, 지연 분포를 본다. 후자는 실제 고객 경로를 따라 시뮬레이션 트랜잭션을 주기적으로 실행한다. 이때 임계값을 과감하게 낮추는 편이 대체로 낫다. 알람 피로를 우려해 높게 잡으면, 진짜 위협이 임계값 아래에서 오래 맴돈다. 실무에서는 롤링 윈도우 5분 기준, 성공률 2포인트 하락 또는 p95 30퍼센트 급등을 즉시 경보로 쓴다. 거기에 서킷 브레이커 트립, 큐 적체, DB 연결 풀이 포화되는 보조 신호를 얹는다.
키스타임넷은 고객사별 요청 비율이 일정하지 않아서, 전사 평균만 보면 소수 고객사의 대규모 장애를 놓치기 쉬웠다. 해결책은 테넌트 레벨의 SLI를 추가하고, 상위 10대 고객 군집에 별도 알람을 둔 것이었다. 비용은 늘었지만 고객 경험을 지켰다.
첫 15분의 속도: 역할과 루프
장애 초동은 결정 피로가 쌓이기 전에 끝내야 한다. 구조는 단순해야 한다. IC, 커뮤니케이션, 드라이버 세 역할만 명확히 하면 흐름이 빨라진다. IC는 Incident Commander로, 우선순위와 승인권을 가진다. 커뮤니케이션은 외부와 내부 전파를 맡아, 채널을 일원화한다. 드라이버는 콘솔을 잡고 시스템을 직접 조작한다. 이 셋이 5분 루프로 상태를 갱신하고, 결정과 행동을 묶는다. 이때 채팅방에 조언은 허용하되, 조작 권한은 드라이버에게 집중시킨다. 도구는 간결할수록 좋다. 페이지어, 통화, 상태 페이지, 장애 채널 정도가 기본 세트다.
아래 체크리스트는 실전에서 분 단위로 써먹을 수 있다.
장애 선언과 SEV 분류, IC 지정 고객 영향 범위와 타임라인 가설 수립 배포 중단과 트래픽 동결, 기능 플래그 강제 오프 검토 임시 완화책 적용, 효과 측정 지표 확정 외부 공지 초안 게시, 15분마다 상태 갱신 예약 완화책의 기술: 롤백보다 먼저 할 수 있는 것들
모든 문제가 롤백으로 풀리지는 않는다. 특히 데이터 변형이 이미 끝난 키탐넷 https://xn--t60by90d1d.isweb.co.kr/ 경우, 이전 버전으로 되돌아가도 증상은 남는다. 그래서 완화책을 설계해 둔다. 흔한 예는 읽기 전용 모드 전환이다. 쓰기 엔드포인트를 일괄 503으로 막고, 안내 문구와 재시도 뒷단 큐를 붙인다. 캐시 따로, 진실 소스 따로인 시스템에서는 캐시 TTL을 강제로 늘려 데이터베이스 부하를 내린다. 업스트림이 흔들릴 때는 타임아웃을 줄이고, 기하급수 백오프와 서킷 브레이커를 연동해 고장난 파이프에 더 이상 요청을 쏘지 않게 한다. 키탐넷은 외부 인증 서비스 장애 때 제한 기능을 사용했다. 신규 로그인만 막고, 기존 세션은 연장해 고객 불편을 최소화했다. 정교한 그레이스 정책이 결국 체감 가용성을 결정한다.
배포 전략과 기능 플래그: 실패를 국지전으로 만들기
배포는 장애의 반입니다. 반드시는 아니다. 실패를 넓히지 않는 전략이 핵심이다. 블루 그린, 카나리, 점진 비율 확장을 기본값으로 삼는다. 배포 파이프라인이 지연 지표를 실시간으로 읽고 자동 중단할 수 있어야 한다. 기능 플래그는 코드 경로를 스위치로 바꾸는 도구다. 키스타임의 예약 체크인 기능을 예로 들면, 데이터 쓰기 경로 한 곳에 플래그를 넣는 대신, 읽기, 예약 생성, 알림 발송 세 경로에 각각 독립 플래그를 뒀다. 이렇게 쪼개면 장애 시 전체 기능을 죽이지 않고, 가장 위험한 경로만 꺼서 영향 반경을 줄일 수 있다.
데이터 마이그레이션의 덫: 스키마, 백필, 양방향 쓰기
데이터 정합성 이슈는 즉발형이 아니다. 하룻밤 지나고 티가 난다. 스키마 변경은 호환성 원칙을 따른다. 먼저 확장, 나중에 축소. 읽기는 새 포맷과 구 포맷을 둘 다 지원하는 기간을 둔다. 백필 작업은 스로틀링과 재시작 가능 설계를 갖추고, 진행률을 가시화한다. 양방향 쓰기는 지옥이다. 꼭 필요하면 임계 구간을 짧게 만들고, 이벤트 소싱이나 변경 데이터 캡처를 도입해 재생 가능성을 확보한다. 장애가 터졌을 때 가장 절망적인 순간은, 데이터를 되돌릴 방법이 없을 때다. 되감기를 염두에 둔 설계가 보험이다.
외부 의존성과 계약: 대체 경로, 강등 모드, 신용 보상
키스타임넷이 전자결제와 연동된다고 치자. 결제가 죽으면 전체가 죽는 설계는 피한다. 결제가 실패했을 때 주문은 유지하고 결제 대기 상태로 두는 강등 모드를 제공한다. 고객 통지와 재시도 스케줄이 자동으로 붙어야 한다. 외부 SLA와 신용 보상 약관은 꼼꼼히 확인한다. 실제로는 가용성 99.9퍼센트라 하더라도, 신용 보상 청구 절차가 복잡해 실익이 적을 수 있다. 이런 경우 비용 대비 효과를 고려해, 내부적으로 더 높은 가용성을 달성하는 편이 낫다. 계약서보다 중요한 건 우회 경로와 타임아웃, 리트라이 정책의 실행력이다.
커뮤니케이션의 리듬: 고객, 임원, 현장 엔지니어
장애 상황에서는 말이 적을수록 좋다는 조언이 있지만, 침묵은 공포를 키운다. 관건은 리듬과 일관성이다. 외부 상태 페이지에는 최초 15분 내 3문장으로 올린다. 영향 범위, 현재 조치, 다음 갱신 시각. 추측은 금지하되, 불확실성을 명시한다. 키스타임 고객 중 대형 병원 고객이 포함돼 있으면, 헬프데스크에는 별도로 콜 스크립트를 내려 특수 고객을 우선한다. 임원 보고는 두 단계로 나눈다. 첫 보고는 숫자 없이 현 상태와 리스크 요약. 복구 후 보고는 손실 추정, 재발 방지, 일정. 현장 엔지니어 간 커뮤니케이션은 한 채널로 수렴하고, 명령문과 질문만 허용한다. 잡담은 침투력이 강하다.
관측성 공학: 로그는 덤프가 아니다
관측성은 장애 대응의 눈과 귀다. 하지만 로그를 많이 쓸수록 좋은 것이 아니다. 성공 경로의 샘플링 레이트는 낮추고, 에러 경로는 풀 샘플링, 치명 오류에는 컨텍스트를 최대화한다. 트레이싱은 서비스 간 경계를 가시화하는 데 효과적이다. 키탐넷은 배치 파이프라인에 트레이싱을 붙여, 어느 단계에서 지연이 발생하는지 눈으로 보여줬다. 경보는 신호와 잡음을 구분하는 품질이 전부다. 같은 지표라도 주간 시즌성, 고객사별 편차를 반영해야 한다. 기능 플래그 토글, 배포 이벤트, 데이터 마이그레이션 타임라인을 메타 이벤트로 인덱싱해 두면, 장애와 이벤트 상관관계 파악이 빨라진다.
용량과 성능 완충: 안전여유와 핫패스
용량 계획은 평균이 아니라 최악 기준으로 한다. 특히 외부 이슈가 발생하면 정상 사용량의 2배까지 튈 수 있다. 읽기 캐시 적중률 95퍼센트를 98퍼센트로 올리는 것만으로 DB 쿼리를 절반으로 줄일 수 있다. 핫패스 설계도 값어치가 크다. 핵심 경로에서만 쓰는 경량화된 데이터 모델과 단순 쿼리, 별도 인프라 풀을 마련해 일반 트래픽과 격리한다. 키스타임은 출퇴근 체킹이 핫패스다. 장애 시 이 경로만 살려 두면 불만이 크게 줄었다. 반면 통계 화면이나 이력 조회 같은 콜드패스는 강등해도 고객 피해가 작다.
보안 사고의 특수성: 격리, 조사, 통지
보안 사고는 속도보다 절차가 우선이다. 의심이 든 즉시 격리. 접근 키와 비밀을 전면 회전하고, 포렌식 보존을 위해 시스템 스냅샷을 뜬다. IC 권한과 별도로 보안 오너가 승인권을 가진다. 고객 통지는 법적 요구사항이 개입한다. 관할 지역의 통지 기한과 범위를 숙지해야 하고, 통지문에는 무슨 데이터가 노출됐는지, 무엇을 하고 있는지, 고객이 해야 할 조치가 무엇인지가 명확해야 한다. 사후에는 기술적 개선뿐 아니라 법무와 고객 성공팀 프로세스도 함께 정리된다.
백오프와 스로틀링: 예의 바른 실패
요청이 실패할 때, 어떻게 실패하느냐가 중요하다. 무작정 재시도는 증상을 확대한 뒤 더 큰 폭발을 만든다. 클라이언트와 서버 모두에서 지수 백오프와 재시도 한도를 적용하고, 서버는 429와 함께 재시도-가능 시각 힌트를 준다. 시스템 전체가 흔들릴 때는 글로벌 스로틀러가 트래픽을 일정 비율로 덜어내고, VIP 고객이나 핵심 경로에는 우선순위를 준다. 키스타임넷은 대규모 고객의 업무 시작 시각이 한정돼 있어, 시간대별 우선순위를 다르게 설정했다. 이 정도 정교함이 있어야 실제 체감 품질이 올라간다.
혼선 줄이기: 권한, 자동화, 원클릭
장애 대응에서 사람의 손동작은 최소화할수록 실수 확률이 준다. 자주 쓰는 조작은 원클릭으로 만든다. 예를 들어 전체 트래픽을 70퍼센트로 낮추고, 핫패스는 100퍼센트 유지, 로그 샘플링을 에러 경로에 100퍼센트로 올리는 3건을 한 번에 묶은 스위치를 둔다. 롤백도 버튼 하나면 돼야 한다. 권한은 좁게 부여하되, 장애 채널에서 IC가 임시 승격을 승인하면 필요한 권한이 일정 시간 자동 부여된다. 절차와 권한이 따로 놀면 5분이 여러 사람 손에서 녹아내린다.
훈련의 힘: 게임데이와 카오스 실험
사람은 연습한 만큼만 반응한다. 게임데이는 실제와 같은 조건에서 장애를 연출한다. 외부 의존성 타임아웃, 캐시 클러스터 절반 격리, 네임서버 지연 같은 현실적인 시나리오를 고른다. 카오스 실험은 더 자주, 더 작게 한다. 소규모 장애를 자주 겪은 팀이 대규모 장애에도 침착하다. 키탐넷은 월 1회 게임데이를 고정했다. 처음 세 번은 팀 사기가 바닥을 쳤지만, 네 번째부터는 IC 교대, 커뮤니케이션 템플릿, 대체 경로 실행이 부드러워졌다. 그 이후 실제 장애가 발생했을 때 복구 시간이 40퍼센트 줄었다.
비용과 품질의 균형: 과잉중복의 유혹, 단순함의 미덕
모든 것을 이중화하면 안전해 보이지만, 복잡성 비용이 기하급수로 늘어난다. 팀이 유지하는 복잡성의 한계를 넘어서는 순간, 장애는 설계의 틈이 아니라 운영의 빈틈에서 터진다. 고가용성은 기술보다 절차와 가시성에서 절반이 결정된다. 네트워크 경로 이중화, 멀티 존 배치, 데이터 백업과 복구 테스트는 필수지만, 멀티 클라우드까지 가야 하는지는 냉정히 따져야 한다. 키스타임넷의 고객 구성이 지역 편중이라면 멀티 리전보다 CDN과 엣지 캐시 최적화가 더 큰 투자 수익을 낸다.
예시 시나리오: 인증 지연, 43분
오전 8시 52분, 합성 모니터가 로그인 성공률 하락을 경보했다. P95 지연이 350ms에서 1.8초로 튀었다. IC 지정과 동시에 기능 플래그로 신규 로그인만 차단하고, 기존 세션 연장을 24시간으로 늘렸다. 외부 인증 서비스 상태 페이지를 확인하니 장애가 공식화됐다. 서버 타임아웃을 800ms로 줄여 큐 적체를 막고, 재시도 정책을 백오프로 교체했다. 상태 페이지에는 로그인 지연, 기존 세션 정상, 다음 갱신 15분을 올렸다. 34분 후 외부 서비스 복구, 9분 내 지표 정상화. 총 43분. 큐 적체가 없었고, 고객 불만은 크게 발생하지 않았다. 같은 유형의 사건이 1년 전에는 2시간이 걸렸고, 고객사는 전체 다운으로 느꼈다. 차이를 만든 건 강등 모드와 커뮤니케이션 리듬이었다.
예시 시나리오: 데이터 불일치, 18시간
야간 배치 이후 일부 고객의 근태 합계가 틀리다는 제보가 들어왔다. 로그를 보니 백필 잡이 스로틀링 파라미터 오류로 25퍼센트만 처리됐다. 읽기 경로는 새 필드와 구 필드 모두를 읽도록 설계돼 있어, 강등 모드로 구 필드 우선 조회를 켰다. 통계 화면에는 데이터 지연 배너를 붙였다. 백필 파라미터를 수정하고 진행률과 검증 샘플을 대시보드에 올렸다. 18시간 후 완료. 이 사건에서 배운 건, 검증 잡의 샘플 크기를 고객사별로 차등화할 필요였다. 키탐넷은 이후 상위 고객사에 10배 큰 샘플을 적용했다.
사후 분석과 학습: 비난 없는, 그러나 날카로운
사건이 끝나면 보고서가 남아야 한다. 비난 없는 문화가 중요하지만, 그렇다고 허공에 말만 뿌리면 남는 게 없다. 재현 가능한 타임라인, 결정의 근거, 관측 사각, 자동화 기회, 고객 영향과 비용. 이 다섯 가지가 핵심이다. 숫자와 스크린샷, 로그 샘플을 근거로 삼고, 해결 과정에서 우연히 통했던 임시 방편은 제도화 여부를 분명히 한다. 배운 점을 다음 분기 OKR로 올려 실제로 바꾸는 것까지가 사후 분석의 끝이다.
사건 개요와 타임라인, 의사결정의 근거 고객 영향 계량화, 비용과 신용 보상 처리 원인 분석, 관측 사각지대와 경보 품질 평가 영구 조치와 자동화 항목, 소유자와 일정 문서, 런북, 훈련 계획 업데이트와 확산 런북의 품질: 붙여 넣을 수 있는 문장으로
좋은 런북은 엔지니어의 머릿속을 비워 준다. 조건, 명령, 기대 결과가 한 페이지 안에 들어있어야 한다. 모호한 조언은 금물이다. 예를 들어 캐시 클러스터 절반이 죽었을 때, 남은 절반에 트래픽을 1.4배로 올리는 스위치, TTL을 10분으로 늘리는 명령, 예상되는 p95 상승폭을 적는다. 실행자가 새로운 사람이어도 5분 안에 따라 할 수 있어야 한다. 키스타임의 출퇴근 핫패스 런북은 시나리오를 네 가지로 쪼개, 각 시나리오별로 두 줄짜리 명령과 한 줄 요약을 제공한다. 실제 장애 때 그 문서가 살렸다.
조직과 온콜: 사람의 피로를 비용으로 인정하기
온콜은 팀의 생활 리듬을 바꾼다. 제대로 운영하지 않으면 이직률로 돌아온다. 일주일 단위, 2인 온콜, 야간 보상과 대체 휴무, 긴급 수당 같은 제도가 필요하다. 무엇보다 페이저의 신뢰도가 핵심이다. 거짓 경보를 줄이는 데 시간을 쓰는 것이 궁극적으로 비용을 줄인다. 온콜 시간을 기준으로 장애 대응 도구의 사용성을 평가한다. 절반의 클릭으로 가능한가, 모바일에서도 충분한가, 로그인을 몇 번 해야 하는가. 온콜의 품질은 장애 복구 시간과 곧장 연결된다.
거버넌스와 현장 자율의 배합
거버넌스 문서가 너무 두꺼우면 아무도 읽지 않는다. 최소 규칙만 정하고, 나머지는 현장의 자율에 맡긴다. 최소 규칙에는 다음이 포함된다. SEV 기준, IC 권한, 외부 공지 리듬, 사후 분석 기한, 보안 사고 예외 절차. 나머지 선택지는 팀별로 달라도 좋다. 키스타임넷의 인프라 팀은 카오스 실험을 공격적으로 했고, 데이터 팀은 검증 잡 품질을 먼저 올렸다. 결과는 모두에게 공유되지만, 실행은 각자의 맥락에서 이루어진다. 이것이 빠른 학습과 넓은 수용성을 만든다.
클라우드와 비용 최적화: 스팟, 리저브드, 자동 확장
클라우드 환경에서는 비용 최적화가 곧 가용성 리스크가 된다. 스팟 인스턴스는 저렴하지만 회수가 잦으면 핫패스에는 부적합하다. 리저브드 인스턴스는 비용을 안정화하지만 탄력성이 떨어진다. 자동 확장은 공격적으로 설정하되, 워밍업 시간을 고려해 앞당긴다. 지표 기준을 CPU 하나에 묶지 말고, 큐 길이와 요청 지연을 함께 본다. 스토리지 계층은 IOPS 크레딧 시스템의 동작 방식을 정확히 이해하고, 크레딧 고갈을 장애로 간주해 미리 경보를 탄다.
상태 페이지와 신뢰: 말보다 기록
상태 페이지는 장애 시점뿐 아니라 평시에도 유용해야 한다. 유지보수 예고, 과거 사건 아카이브, SLO 달성 현황을 공개한다. 그래야 사건이 터졌을 때 고객이 처음 보는 낯선 페이지로 느끼지 않는다. 키탐넷은 주요 고객사와 별도의 전용 상태 페이지를 사용했다. 고객사 환경의 의존성과 커스텀 기능의 상태를 함께 보여줬고, 그 결과 헬프데스크 문의량이 평균 27퍼센트 줄었다. 정보를 숨기면 불안이 커진다. 정확한 정보가 신뢰의 가격이다.
테스트 가능한 복구: 백업은 복구가 되어야 의미가 있다
백업 성공률보다 복구 성공률을 본다. 분기마다 샘플 데이터를 복구하고, RTO와 RPO를 측정한다. 암호화 키 로테이션과 조합하면 의외의 실패가 드러난다. 포인트 인 타임 복구를 시연하고, 테이블 단위 복구와 전체 클러스터 복구를 각각 수행한다. 복구 절차는 배포 파이프라인과 달리 사람의 개입이 필수인 경우가 많아, 문서 품질이 중요하다. 키스타임넷은 장애 훈련 날 복구 리허설을 포함시켜, 긴장된 상태에서도 실수를 줄였다.
도구보다는 사람, 그러나 도구가 곧 사람의 힘
좋은 도구는 팀의 평균을 끌어올린다. 상태를 자동으로 요약해 주는 코파일럿, 로그 패턴을 묶어 주는 시그널링 엔진, 원클릭 조치판. 하지만 도구가 문제를 숨기면 곤란하다. 간결하고 투명한 도구가 좋다. 장비를 늘리는 것보다 안내문 한 줄을 바꾸는 것이 현장의 부담을 더 크게 줄일 때가 많다. 장애 대응은 결국 신뢰의 공학이다. 고객과 팀원 모두에게 우리가 상황을 알고 있고, 적절히 대응하고 있으며, 다시는 같은 실수를 하지 않겠다는 믿음을 주는 일이다.
마지막 점검: 실전용 매뉴얼의 핵심만 남기기
장애 대응 매뉴얼은 길수록 나쁘다. 읽히지 않기 때문이다. 현장에서는 다음 다섯 가지가 빠르면 빠를수록 이긴다. 명확한 선언과 역할, 임시 완화책, 단호한 커뮤니케이션, 관측과 이벤트의 연동, 사후 학습의 닫힌 고리. 키스타임, 키스타임넷, 키탐넷처럼 규모와 성격이 달라도, 이 다섯 축이 흔들리지 않으면 다운타임은 줄고 신뢰는 오른다. 자주 연습하고, 작은 개선을 반복하라. 장애는 사라지지 않지만, 피해는 확실히 줄일 수 있다.