Ch7. 롤백 전략
코드·스키마·데이터 롤백을 분리하고 서비스 영향 최소화로 복구하는 방법
롤백의 우선순위
- 코드 롤백으로 사용자 영향부터 줄입니다.
- 데이터는 가능하면 롤포워드 복구를 우선합니다.
- 물리적 데이터 롤백(PITR)은 최후 수단으로 사용합니다.
호환성 창(Compatibility Window) 운영
Expand/Contract를 쓰는 이유는 코드 버전이 섞여 있어도 일정 기간 동작하도록 만들기 위함입니다. 배포 중에는 최소 2개 버전의 앱이 공존할 수 있음을 가정합니다.
| 단계 | 구버전 앱 | 신버전 앱 |
|---|---|---|
| Expand 직후 | 동작해야 함 | 동작해야 함 |
| Transition | 동작해야 함 | 동작해야 함 |
| Contract 이후 | 제거된 필드 접근 금지 | 최종 구조 기준 |
롤백 결정 트리
데이터 롤백을 신중히 해야 하는 이유
- 롤백 시점 이후 정상 트랜잭션까지 함께 유실될 수 있음
- 외부 시스템(결제, 메시지, ERP)과 상태 불일치 가능
- 재처리 비용이 대규모로 발생
따라서 데이터 복원은 기술 판단뿐 아니라 비즈니스 승인 체계를 포함해야 합니다.
운영 체크리스트
- 릴리스마다 “코드 롤백 가능 여부”를 사전 점검
- 파괴적 DDL 이전에 충분한 호환 기간 확보
- PITR 복구 기준(누가 승인, 어느 시점까지 복원) 문서화
- 롤백 실행 로그와 의사결정 로그를 함께 보관
실무 팁
- 컬럼 삭제 전 최소 1개 릴리스 동안 읽기 경로 제거 여부를 모니터링
- feature flag를 활용해 코드 롤백 없이 기능만 비활성화 가능하게 설계
- 배포 파이프라인에 “rollback drill”을 정기적으로 포함