클라우드 인프라를 배포하다 잘못되는 경우가 있다. 이때 개발자를 당황스럽게 하면서도 구원해주는 기능이 바로 롤백이다.
롤백은 배포 도중 에러가 발생했을 때 해당 스택을 배포 전의 마지막 안정적이었던 상태(Last Known Goot State)로 되돌리는 안전장치이다.
배포가 실패하고 롤백이 시작되는 이유는 다양하다.
배포 중 에러가 감지되면 CloudFormation은 자동으로 다음 단계를 시작한다.
UPDATE_ROLLBACK_COMPLETE 또는 ROLLBACK_COMPLETE로 바뀐다.배포가 실패하면 롤백이 즉시 실행되어 에러가 난 리소스를 지워버리기 때문에 왜 실패했는지 원인을 파악하기 힘들 때가 있다. 이때 이 옵션을 사용하면 에러가 난 상태 그대로 멈춰있는다.
cdk deploy --no-rollback
중요한 데이터가 담긴 DB나 S3 버킷의 경우, 롤백이나 스택 삭제 시에도 지워지지 않도록 설정할 수 있다.
// Java 예시
Bucket.Builder.create(this, "MySafeBucket")
.removalPolicy(RemovalPolicy.RETAIN) // 스택이 삭제되거나 롤백되어도 리소스는 남김
.build();
| 상태 | 의미 | 대응 방법 |
|---|---|---|
| UPDATE_IN_PROGRESS | 배포 중 | 기다리거나 터미널 로그를 지켜본다. |
| ROLLBACK_IN_PROGRESS | 에러 감지 후 되돌리는 중 | AWS 콘솔의 'Events' 탭에서 실패 원인을 찾는다. |
| ROLLBACK_COMPLETE | 이전 상태로 복구 완료 | 코드를 수정하고 다시 배포한다. |
| ROLLBACK_FAILED | 롤백조차 실패한 최악의 상황 | 수동으로 AWS 콘솔에서 리소스를 정리해야 한다. |