롤백 연습 플레이북: 중단된 릴리스를 5분 안에 복구하기
이 롤백 연습으로 중단된 릴리스를 5분 안에 복구하는 연습을 하세요: 무엇을 스냅샷으로 남겨야 하는지, 무엇을 확인해야 하는지, 연습 중 누가 어떤 버튼을 누르는지 정리합니다.

롤백이 두려운 이유(그리고 연습이 도움이 되는 이유)
릴리스가 테스트에서는 괜찮아 보였지만 실제 트래픽 첫 다섯 분 안에 깨질 수 있습니다. 두려운 건 보통 버그 자체가 아니라 불확실성입니다: 무엇이 바뀌었고, 무엇을 안전하게 되돌릴 수 있으며, 롤백이 상황을 더 악화시키진 않을까 하는 불안입니다.
릴리스 직후의 실패는 종종 단순하고 고통스럽게 눈에 띕니다. 새 버튼이 모바일에서 페이지를 다운시킬 수도 있고, 백엔드 변경으로 잘못된 데이터 형태가 반환되어 결제가 실패할 수 있습니다. 작은 설정 변경 하나가 로그인, 이메일 또는 결제를 망칠 수 있습니다. 수정이 쉬워도 사용자가 지켜보는 상황에서 압박이 커져 매 분이 급해집니다.
롤백 경로가 불분명하면 공황이 시작됩니다. 사람들은 동시에 같은 질문을 합니다: 스냅샷이 있나? 마지막으로 정상인 버전은 무엇인가? 앱을 롤백하면 데이터베이스는 어떻게 하지? 누가 접근 권한이 있나? 이런 답들이 문서화돼 있지 않으면 팀은 서비스를 복원하기보다 논쟁하는 데 시간을 낭비합니다.
사건 중에 추측하면 실제 비용이 발생합니다. 시간 손실, 사용자 신뢰 저하, 급하게 하는 변경으로 두 번째 중단이 발생할 수 있습니다. 엔지니어들은 디버깅, 메시지 전달, 의사결정 등 여러 곳으로 끌려가며 집중력이 분산됩니다.
연습은 불확실성을 근육 기억으로 바꿔 분위기를 바꿉니다. 좋은 롤백 연습은 단순히 “코드를 되돌릴 수 있나”가 아닙니다. 반복 가능한 루틴입니다: 무엇을 스냅샷으로 남길지, 무엇을 복원할지, 무엇을 확인할지, 누가 행동할 권한이 있는지. 몇 번 해보면 롤백은 실패처럼 느껴지지 않고 안전장치로 느껴집니다.
배포 설정이 이미 스냅샷과 복원을 지원한다면(일부 플랫폼, 예: Koder.ai는 릴리스 흐름에 이를 통합함) 연습은 더 쉬워집니다. “알려진 정상으로 되돌리기”가 긴급 절차가 아니라 일상 동작이 되기 때문입니다. 어쨌든 목표는 같습니다: 그 순간이 왔을 때 즉흥이 없어야 합니다.
"5분 내 복구"가 실제로 의미하는 것
“5분 내 복구”는 모든 것이 완벽해진다는 뜻이 아닙니다. 새 릴리스가 여전히 문제를 안고 있어도 사용자들이 빠르게 동작하는 버전으로 돌아갈 수 있음을 의미합니다.
서비스 우선, 수정은 나중입니다. 서비스를 빠르게 복원하면 실제 버그를 찾을 여유가 생깁니다.
5분은 논쟁이 아닌 행동을 위한 시간입니다
시계는 “롤백한다”에 합의한 순간부터 시작합니다. 자체 회복 가능성에 대한 긴 토론은 포함되지 않습니다.
사전에 롤백 트리거를 정하세요. 예: “배포 후 3분간 결제 오류가 X% 이상이면 롤백한다.” 트리거가 발생하면 스크립트를 따릅니다.
무엇을 "복구됨"으로 볼 것인가
"복구됨"은 사용자가 안전하고 시스템이 안정적임을 알려주는 소수의 신호입니다. 간단하고 확인하기 쉽게 유지하세요:
- 핵심 사용자 동작이 다시 작동함(로그인, 결제, 검색 등)
- 오류율이 거의 정상으로 돌아옴
- 지연이 허용 범위 내로 돌아옴
- 크래시 루프나 대량 재시작 없음
이 신호들이 괜찮아 보이면 5분 타이머를 정지하세요. 나머지는 기다릴 수 있습니다.
드릴을 진짜처럼 유지하려면 5분 경로에서 하지 않을 일을 명시하세요: 심층 디버깅, 코드 변경 또는 핫픽스 배포, 엔지니어링 작업으로 번지는 모든 것.
팀이 반복할 수 있는 롤백 방식 선택하기
결정이 대부분 미리 정해져 있을 때만 롤백은 빠르게 느껴집니다. 대부분 사건에 효과적인 한 가지 방식을 선택하고 지겹도록 연습하세요.
드릴은 네 가지 질문에 답해야 합니다:
- 롤백을 할 것인가, 핫픽스를 할 것인가?
- 무엇으로 롤백할 것인가?
- 무엇이 롤백을 촉발하는가?
- 누가 “실행하라”라고 말할 권한이 있는가?
롤백 vs 핫픽스: 기본값을 정하세요
롤백은 새 릴리스가 사용자를 적극적으로 해치거나 데이터를 위험에 빠뜨릴 때, 그리고 이미 정상인 버전으로 돌아갈 수 있을 때 가장 좋습니다. 핫픽스는 영향이 작고 변경 범위가 격리되어 있으며 안전하게 패치할 수 있다고 확신할 때 적합합니다.
간단한 기본 규칙이 잘 작동합니다: 사용자가 핵심 동작을 완료할 수 없거나 오류율이 급증하면 먼저 롤백하고 나중에 수정하세요. 성가시지만 위험하지 않은 문제는 핫픽스로 남겨두세요.
롤백 대상 선택하기
대상은 토론 없이 빠르게 선택할 수 있어야 합니다. 대부분 팀은 세 가지 공통 대상을 사용합니다:
- 이전 버전(마지막으로 체크를 통과한 릴리스)
- 복원할 수 있는 배포 스냅샷
- 구성만 되돌리는 방법(기능 플래그 또는 환경 설정 변경)
신뢰할 수 있는 배포 스냅샷이 있다면 기본으로 삼으세요. 압박 속에서 가장 반복 가능하기 때문입니다. 코드가 괜찮지만 설정만 문제라면 구성 롤백을 별도 경로로 두세요.
또한 "이전 정상"의 정의를 명확히 하세요. 사람들 기억에 남은 버전이 아니라 모니터링이 정상이었고 활성 인시던트가 없었던 가장 최근 릴리스를 의미해야 합니다.
트리거와 권한 정의하기
인시던트 중에 회의를 기다리지 마세요. 롤백을 시작시키는 트리거를 문서화하고 지키세요. 전형적인 트리거에는 몇 분 이상 깨진 핵심 흐름, 합의된 임계값을 넘은 오류율/지연, 잘못된 쓰기(중복 청구 등) 위험, 그리고 릴리스로 도입된 보안·개인정보 문제 등이 포함됩니다.
그다음 누가 롤백을 승인할지 정하세요. 한 역할(인시던트 리드 또는 온콜)을 지정하고 예비자를 두세요. 다른 사람들은 조언할 수 있지만 막을 수는 없습니다. 트리거가 발생하고 승인자가 “롤백”이라고 말하면 팀은 매번 같은 단계를 실행합니다.
모든 릴리스 전에 스냅샷으로 남겨야 할 것들
롤백 연습은 빠르게 알려진 정상 상태로 돌아갈 수 있어야만 작동합니다. 스냅샷은 그냥 "있으면 좋은 것"이 아니라 무엇이 실행됐고 무엇이 바뀌었는지, 어떻게 되돌릴지 증명하는 영수증입니다.
배포 전 캡처해야 할 다섯 가지
릴리스 전에 다음 항목을 검색 없이 바로 가져올 수 있어야 합니다:
- 배포한 정확한 앱 빌드: 커밋 해시, 버전 번호, 빌드 아티팩트(컨테이너 태그, 번들, 패키지)
- 데이터베이스 상태와 마이그레이션 계획: 어떤 마이그레이션이 적용됐는지, 되돌릴 수 있는지 여부. 위험한 변경은 빠르게 복원 가능한 백업/스냅샷을 만드세요.
- 배포 시점 구성: 기능 플래그, 환경변수, 서드파티 엔드포인트, 변경된 항목. 비밀 정보는 안전한 시스템에 보관하되 변경 이력은 버전 관리하세요.
- 인프라 및 라우팅 설정: 도메인, 인증서, 로드밸런서 규칙, 트래픽 경로 스위치 등
- 짧은 릴리스 노트: 무엇이 바뀌었는지 한 문장, 롤백 성공을 어떻게 확인할지 한 문장
데이터베이스 안전성이 흔한 함정입니다. 앱을 빠르게 롤백해도 데이터베이스가 새 스키마를 기대하면 소용없습니다. 위험한 마이그레이션은 두 단계 릴리스(먼저 필드 추가, 나중에 사용)로 계획해 롤백 가능성을 유지하세요.
스냅샷 이름은 몇 초 내에 찾을 수 있게
모든 곳에서 한 가지 명명 규칙을 사용하고 정렬 가능하게 만드세요:
prod-2026-01-09-1420-v1.8.3-commitA1B2C3
환경, 타임스탬프, 버전, 커밋을 포함하세요. 도구가 UI로 스냅샷을 지원하면 동일한 규칙을 사용해 누구나 인시던트 중에 올바른 복원 지점을 찾을 수 있도록 하세요.
역할: 누가 무엇을 클릭하고 누가 관찰하는가
모두가 자신의 역할을 알면 롤백 연습은 더 빠르고 차분해집니다. 목표는 "모두 뛰어드는 것"이 아니라 한 사람이 결정하고, 한 사람이 실행하고, 한 사람이 확인하고, 한 사람이 다른 사람들에게 알리는 것입니다.
소규모/중간 팀에는 다음 역할이 잘 맞습니다(한 사람이 두 역할을 맡을 수는 있지만 연습 중에는 Deployer와 Verifier를 겸하지 않는 것을 권장합니다):
- Incident lead(타임키퍼 겸 결정권자): 성공 목표를 선언하고 롤백을 지시합니다.
- Deployer(키보드 담당): 문서화된 절차대로 롤백을 실행하고 하는 일을 소리 내어 설명합니다.
- Verifier(작동 확인): 필수 체크를 수행하고 핵심 신호를 관찰합니다.
- Communicator(외부 목소리): 이해관계자와 지원팀에 짧고 규칙적인 업데이트를 게시합니다.
권한이 이 계획을 현실로 만들지 문서에만 있는지 결정합니다. 드릴 전에 누가 프로덕션을 롤백할 수 있는지, 긴급 상황 권한은 어떻게 되는지 합의하세요.
간단한 설정 예시:
- Deployer에게 온콜 교대나 예정된 드릴 창 동안 롤백 권한을 부여합니다.
- Incident lead가 행동을 승인하도록(버튼 권한이 없어도) 합니다.
- Verifier에게는 대시보드와 로그에 대한 읽기 전용 접근을 보장합니다.
- 브레이크 글라스(감사 가능한, 시간 제한된 접근) 옵션을 설정하세요.
- 드릴 설정 중 접근을 테스트하고 5분 타이머 동안이 아니라 사전에 검증하세요.
플랫폼이 스냅샷과 롤백을 지원한다면(Koder.ai 포함), 누가 스냅샷을 만들고 누가 복원하는지, 그리고 그 행동이 어디에 기록되는지 미리 정하세요.
단계별: 롤백 연습 실행 매뉴얼
롤백 연습은 소방 훈련처럼 항상 같은 단계, 같은 표현, 같은 클릭 위치를 가지면 가장 잘 작동합니다. 목표는 완벽함이 아니라 온콜인 누구나 마지막 알려진 정상 버전을 빠르게 복원할 수 있게 하는 것입니다.
시작 전에
명확한 트리거 하나를 골라 연습 시작 시 크게 선언하세요. 예: “결제가 1분 이상 500을 반환한다” 또는 “배포 직후 오류율이 평소의 5배”. 소리 내어 말하면 팀이 디버깅 모드로 흐르는 것을 막습니다.
런북 옆에 짧은 준비 체크리스트를 두세요:
- 실시간 상태 지표(업타임, 오류율, 핵심 사용자 흐름)를 볼 수 있는지 확인
- 마지막 정상 버전 식별자(태그, 빌드, 스냅샷 이름) 확인
- 어디서 롤백을 실행하는지 확인(CI/CD, 호스팅 콘솔, 플랫폼 UI)
- 신규 배포를 중단하는 방법 확인
- 누가 타임스탬프를 기록할지 확인
5분 실행 매뉴얼
-
타이머 시작. 한 사람이 트리거와 결정을 선언합니다: “지금 롤백합니다.”
-
변경 동결. 신규 배포를 중단하고 롤백 중 시스템을 변경할 수 있는 비필수 작업을 멈춥니다.
-
마지막 찬스 스냅샷(안전하고 빠를 때만). 문제가 된 상태를 나중에 재현해야 할 수도 있으니 보호용으로 찍어둡니다. 명확하게 이름 붙이고 넘어갑니다.
-
문서화된 대로 롤백 실행. 즉흥적으로 하지 마세요. 확인 프롬프트는 소리 내어 읽어 기록 담당자가 캡처하도록 합니다.
-
신뢰할 수 있는 한 곳에서 롤백 완료를 확인. 한 화면과 한 신호를 매번 사용하세요(배포 기록 뷰, “현재 버전” 라벨, 명확한 상태 표시기).
조치 직후 신선할 때 다음을 캡처하세요:
- 결정 시각(트리거 선언)
- 롤백 시작 시각(첫 클릭/명령)
- 롤백 완료 시각(이전 버전 활성화)
- 최초 정상 확인 시각(핵심 체크 통과)
- 예상치 못한 일(권한 없음, 버튼 불명확, 느린 단계)
롤백이 5분보다 오래 걸리면 변명하지 마세요. 느린 단계를 찾아 런북을 고치고 드릴을 다시 진행하세요.
롤백 후 무엇을 확인할까
롤백이 “작동했다”고 말하려면 사용자가 느끼기에 작동해야 합니다. 이전 버전이 배포됐다는 것만 증명하려는 게 아닙니다. 서비스가 다시 사용 가능하고 안정적임을 증명해야 합니다.
검증은 작고 반복 가능하게 유지하세요. 리스트가 다섯 개보다 길면 스트레스 상황에서 건너뛰기 쉽습니다.
반드시 통과해야 할 3~5개 체크
빠르게 실행 가능한 명확한 통과/실패 체크를 사용하세요:
- 사용자가 로그인(또는 회원가입)해 홈 화면에 오류 없이 도달하는지
- 핵심 트랜잭션이 동작하는지(결제/예약/폼 제출)
- 핵심 API 엔드포인트 하나가 200을 반환하고 응답이 정상인지
- 관리자/지원용 핵심 작업(환불/취소/상태 변경)이 가능한지
- 자주 깨지는 엣지 흐름(비밀번호 재설정/파일 업로드/검색) 하나가 동작하는지
기능 체크 후 신뢰하는 가장 단순한 시스템 상태 신호를 한 번 훑어보세요. 오류율이 떨어지고 지연이 수 분 내에 스파이크를 멈추는지 보고 싶습니다.
또 보이지 않는 부분들도 다시 돌아가는지 확인하세요. 백그라운드 작업이 처리되고 큐가 비워지는지, 연결이 안정적인지, 잠금이 쌓이지 않는지 등 데이터베이스 확인은 빠르고 단조롭게 진행하세요: 연결 안정, 명백한 락(행잠금) 없음, 앱이 쓰기 가능한지.
마지막으로 외부 세계에서 중요한 것을 테스트하세요. 안전하다면 결제 테스트를 실행하고 이메일 전달이 반송되지 않는지 확인하며 웹훅이 수신되는지(또는 실패하지 않는지) 확인하세요.
"정상" 선언 문구를 미리 정하세요
아무도 즉흥적으로 쓰지 않도록 한 문장을 미리 작성하세요:
"롤백 완료. 핵심 흐름 검증(로그인 + 결제) 완료. 오류율 및 지연 정상 범위 복귀. 30분간 모니터링. 다음 업데이트는 14:30."
예시: 깨진 릴리스와 깔끔한 5분 복구
화요일 10:02에 새 릴리스가 나갔고 1분 안에 일부 사용자가 로그인할 수 없게 됐습니다. 일부는 “invalid session”을 받고, 일부는 끝없이 도는 스피너를 봅니다. 회원가입은 여전히 동작해 처음에는 문제가 눈에 띄기 어렵습니다.
첫 신호는 보통 드라마틱한 다운타임이 아닙니다. 소소한 지표의 급등: 지원 티켓 증가, 로그인 성공률 하락, 몇몇 실제 사용자의 불만 메시지. 온콜은 "배포 후 5분 동안 로그인 성공률 18% 하락" 알림을 보고, 지원팀은 "업데이트 후 3명이 로그인 불가"를 게시합니다.
5분 복구(어떻게 보일 수 있는지)
팀이 드릴을 연습했기 때문에 긴 논쟁 없이 확인, 결정, 실행을 합니다.
- 10:03: 온콜이 사실을 확인하고 인시던트 리드를 지정합니다.
- 10:04: 롤백 결정. 규칙: 로그인에 문제가 있고 2분 내에 안전한 수정이 없으면 롤백.
- 10:05: Deployer가 이전 정상 스냅샷으로 롤백을 트리거합니다.
- 10:06: 트래픽이 이전 버전으로 돌아옵니다. 팀이 웹과 모바일에서 로그인 재검증을 합니다.
- 10:07: 인시던트 리드가 "로그인 복구, 10분 모니터링"을 게시하고 지원에게 영향을 받은 사용자에 답변하도록 요청합니다.
롤백 대상은 웹과 API 서비스의 애플리케이션 코드와 구성입니다. 그대로 유지되는 것: 데이터베이스와 사용자 데이터.
릴리스에 데이터베이스 마이그레이션이 포함됐다면 드릴 규칙은 단순합니다: 5분 경로에서 데이터베이스를 롤백하지 마세요. 마이그레이션은 뒤호환 가능하게 하거나, 배포 전에 둘째 눈을 거치도록 하세요.
롤백 중/후에 무엇을 알릴지
롤백 중에는 인시던트 리드가 매 1~2분마다 짧게 업데이트합니다: 사용자가 보는 것, 어떤 조치가 진행 중인지, 다음 업데이트 시각. 예: "로그인 복원을 위해 마지막 릴리스를 롤백합니다. 다음 업데이트 2분 후."
롤백 후에는 상황을 마무리합니다: "로그인이 정상화됐습니다. 근본 원인 검토 진행 중입니다. 발생 원인과 재발 방지 조치를 공유하겠습니다."
흔한 롤백 연습 실수(및 간단한 해결책)
롤백 연습은 지루해야 합니다. 만약 연습이 스트레스를 준다면, 그 드릴은 실제로는 접근권한, 스냅샷 누락, 혹은 절차가 개인 머릿속에만 있는 등의 실질적 공백을 드러내는 것입니다.
시간을 낭비하는 실수들
-
가정된 접근권한으로 연습한다. 실제 사건에서 배포 권한이나 대시보드 접근이 없어지는 것을 중간에 발견합니다. 해결책: 실제 사건에 쓸 계정과 역할로 드릴을 실행하세요.
-
스냅샷은 있지만 불완전하거나 찾기 어렵다. 앱만 스냅샷하고 환경 변경, 기능 플래그, 라우팅을 빠뜨리거나 이름이 무의미합니다. 해결책: 스냅샷 생성을 릴리스 단계로 만들고 명명 규칙을 적용하며 드릴 중에 복원 가능함을 확인하세요.
-
데이터베이스 마이그레이션 때문에 롤백이 위험해진다. 뒤호환되지 않는 스키마 변경은 빠른 롤백을 데이터 문제로 만듭니다. 해결책: 추가형 마이그레이션을 선호하세요. 불가피하면 릴리스에 "롤백 허용: 예/아니오"를 라벨링하고 전진 수정 계획을 세우세요.
-
사용자 체감 확인 전에 성공을 선언한다. 배포는 되었지만 로그인이나 작업 큐가 여전히 망가져 있을 수 있습니다. 해결책: 짧지만 실제적인 검증을 유지하고 시간 제한을 두세요.
-
드릴이 반복하기엔 복잡하다. 도구가 너무 많고 체크가 너무 많고 목소리가 너무 많으면 안 됩니다. 해결책: 드릴을 한 페이지로, 한 소유자에게 축소하세요. 단일 런북과 단일 통신 채널로 못 하면 실제 상황에서 실행되지 않습니다.
좋은 롤백 연습은 영웅적 수행이 아니라 습관입니다. 차분히 끝내지 못한다면 단계를 줄여 차분히 할 수 있을 때까지 간소화하고, 그 다음에 진짜 위험을 줄이는 것만 추가하세요.
빠른 체크리스트 및 다음 단계
롤백 연습은 모두가 같은 한 페이지 체크리스트를 따를 때 가장 잘 작동합니다. 팀이 실제로 보는 곳에 고정해 두세요.
10분 이내(준비 및 검증 포함)에 실행할 수 있는 간결 버전:
- 릴리스 전: 롤백 지점(스냅샷/버전) 확인, 기대되는 정상 동작 기록, 역할(Deployer, Verifier, Comms) 할당
- 트리거: "롤백 시작" 선언, 타이머 시작, 신규 배포 동결
- 롤백 수행: 마지막 정상 릴리스 복원, 클릭한 항목과 순서 기록
- 검증: 2~3개 핵심 체크(로그인, 주요 워크플로우, 통합/API 확인) 실행, 오류율 하락 확인
- 종료: "서비스 안정" 선언, 세 가지 메모 작성(작동한 것, 지연시킨 것, 바꿀 것), 배포 동결 해제
드릴을 충분히 자주 실행해 단계가 자연스럽게 느껴지게 하세요. 기본은 월 1회입니다. 제품 변경이 매일 일어나면 2주에 한 번을 권장하지만 검증은 최상위 사용자 경로에 집중하세요.
각 드릴 후에는 같은 날 런북을 업데이트하세요. 릴리스 노트와 함께 보관하고 "마지막 테스트" 날짜를 적어 오래된 절차를 신뢰하지 않게 하세요.
측정은 오직 개선에 도움이 되는 것만 하세요:
- 롤백 시간(선언부터 복구까지)
- 검증 시간(복구부터 안정까지)
- 역할 명확성(어디서 망설였는지, 중복된 작업은 어딨는지)
- 누락된 정보(자격증명, 권한, 스냅샷 위치)
팀이 Koder.ai를 사용한다면 스냅샷과 롤백을 습관의 일부로 만드세요: 스냅샷을 일관되게 명명하고, 온콜 때 사용할 동일한 인터페이스에서 복원을 연습하며, 검증에 커스텀 도메인과 핵심 통합 체크를 포함하세요. 런북에 이를 명시하면 실제 배포 방식과 드릴이 일치합니다.
자주 묻는 질문
What is a rollback drill, and what problem does it solve?
롤백 연습은 문제가 있는 릴리스를 시뮬레이션하고 작성된 절차에 따라 마지막으로 알려진 정상 버전으로 복원하는 연습입니다.
목표는 빠르게 디버그하는 것이 아니라, 압박 속에서도 서비스를 반복 가능하고 차분하게 복원할 수 있도록 만드는 것입니다.
When should we roll back instead of trying a hotfix?
현장에서 논쟁을 피하기 위해 사전 정의된 트리거를 사용하세요. 일반적인 기본 규칙은 다음과 같습니다:
- 핵심 흐름(로그인/결제/회원가입)이 몇 분 이상 작동하지 않을 때
- 오류율이나 지연이 합의된 임계값을 넘어섰을 때
- 잘못된 쓰기, 중복 결제 또는 개인정보/보안 위험이 있을 때
트리거가 발동하면 먼저 롤백하고, 사용자가 안전해진 뒤 문제를 조사하세요.
What does “restore in 5 minutes” actually mean?
사용자를 빠르게 정상 버전으로 돌려보낼 수 있다는 의미입니다 — 새 릴리스가 여전히 깨져 있어도 괜찮습니다.
실무적으로는 소수의 신호가 다시 정상으로 돌아왔을 때를 "복구"로 봅니다(핵심 사용자 동작 성공, 오류율·지연 정상화, 크래시 루프 없음).
What should our default rollback target be?
몇 초 내에 선택할 수 있고 논쟁이 필요 없는 대상을 고르세요:
- 검사에 통과한 이전 릴리스
- 복원 가능한 이름이 붙은 배포 스냅샷
- 코드 자체는 괜찮지만 설정만 바꾸는 구성 롤백(기능 플래그/환경변수)
“이전 정상”은 가장 최근의 모니터링이 정상이고 활성 인시던트가 없던 릴리스를 의미합니다. 사람들이 기억하는 버전이 아닙니다.
What should we snapshot before every release?
릴리스 전에 최소한 다음 항목을 캡처하세요:
- 배포된 빌드 식별자(버전 + 커밋 + 아티팩트 태그)
- 데이터베이스 마이그레이션 상태와 되돌릴 수 있는지 여부
- 배포 시점 구성(플래그, 환경변수, 엔드포인트) — 변경은 버전 관리
- 라우팅/인프라 스위치(도메인, 인증서, 로드밸런서 규칙)
- 한 줄 릴리스 노트: 무엇이 바뀌었고, 롤백 성공을 어떻게 확인할지
데이터베이스 변경이 흔한 함정입니다 — 스키마가 호환되지 않으면 앱 롤백이 소용없습니다.
How should we name snapshots so people can find them during an incident?
정렬 가능하고 빠르게 찾을 수 있게 이름을 붙이세요. 예:
prod-YYYY-MM-DD-HHMM-vX.Y.Z-commitABC123
환경 + 타임스탬프 + 버전 + 커밋을 포함하세요. 정확한 포맷보다 일관성이 더 중요합니다.
Who should do what during a rollback drill?
소규모/중간 규모 팀에 적합한 반복 가능한 역할 분담:
- Incident lead: 결정권자이자 타임키퍼
- Deployer: 롤백 절차를 실행하는 사람
- Verifier: 필수 체크를 실행하고 신호를 모니터링
- Communicator: 이해관계자와 지원팀에 짧게 정기 보고
드릴 중에는 Deployer와 Verifier를 겸하지 않는 것이 좋습니다(가능하면 서로 독립된 확인자가 필요).
What are the minimum checks to verify the rollback actually worked?
짧고 명확한 합격/불합격 체크를 사용하세요. 좋은 필수 체크 항목:
- 로그인(또는 회원가입) 후 홈 화면 진입까지 오류 없이 동작하는지
- 핵심 트랜잭션(결제/예약/폼 제출)이 정상 동작하는지
- 핵심 API 엔드포인트 하나가 200을 반환하고 응답이 정상인지
- 관리자/지원용 핵심 작업(환불/취소/상태 변경)이 가능한지
- 자주 깨지는 엣지 흐름(비밀번호 재설정/파일 업로드/검색) 하나가 동작하는지
그 후 오류율과 지연이 몇 분 내에 정상으로 돌아오는지 확인하고, 백그라운드 작업·큐가 쌓이지 않는지 살펴보세요.
How do we handle database migrations so rollbacks stay safe?
5분 경로에 데이터베이스 롤백을 포함하지 마세요. 대신:
- 뒤호환(추가형) 마이그레이션을 선호해 이전 코드도 동작하도록 한다
- 두 단계 릴리스 사용: 먼저 필드 추가, 나중에 사용 시작
- 되돌릴 수 없는 변경이 불가피하면 릴리스를 "rollback safe: yes/no"로 라벨링하고 전진 수정 계획을 세운다
이렇게 하면 빠른 롤백 경로가 안전하고 예측 가능해집니다.
How do snapshots and rollback work if we’re using Koder.ai?
플랫폼이 릴리스 흐름에 스냅샷과 복원을 포함한다면 롤백 연습은 더 쉬워집니다 — “알려진 정상으로 되돌리기”가 긴급 절차가 아니라 일상적인 동작이 되기 때문입니다.
Koder.ai를 사용한다면 사전에 결정하세요:
- 누가 스냅샷을 만들고 누가 복원할 권한이 있는지
- 복원 동작이 어디에 기록되는지
- 항상 실행할 빠른 검증 항목(커스텀 도메인 및 핵심 통합 포함)
도구가 있더라도 역할, 트리거, 짧은 검증 목록은 변함없이 필요합니다.