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