롤백은 자기 워크플로고, 후순위가 아니야
롤백 옵션이 '이전 커밋 다시 배포'뿐이면, 사건이 터졌을 때 이전 커밋의 이미지가 사라졌고 마이그레이션을 되돌릴 수 없고 아무도 테스트하지 않은 롤백 경로가 존재하지 않는다는 걸 깨닫게 돼. 필요하기 전에 롤백 워크플로를 빌드해.
롤백의 실제 의미
배포 타겟마다 롤백 형태가 달라:
- 컨테이너 오케스트레이터 (ECS, Kubernetes) — 이전 task definition / deployment manifest 재배포. 가장 빠름.
- 정적 사이트 (Vercel, Netlify, Pages) — 이전 배포 승격. UI 버튼이나 API.
- Lambda — 별칭을 이전 버전으로 가리킴.
- 커스텀 VPS 배포 — symlink 스왑,
git checkout <previous>후 배포 스크립트 재실행.
롤백 워크플로
- 마지막 10배포에서 채워지는 입력값
version: choice를 가진workflow_dispatch. - 또는: 스모크 작업의
if: failure()로 자동 실행 조건. - 선택 버전 + 운영자와 함께 Slack/이메일 알림 게시.
- 롤백 후 항상 스모크 실행 — 롤백 자체 동작 검증.
롤백으로 못 고치는 것
- 이미 적용된 schema 변경 — forward-fix 마이그레이션 필요.
- 이미 변경된 데이터 — 가능하면 point-in-time recovery, 아니면 손실 수용.
- 이미 통지된 외부 시스템 (보낸 이메일, 청구된 결제) — un-happen 안 됨.