AWS CDK: Rollback

김기현·2026년 2월 5일

AWS

목록 보기
43/44

클라우드 인프라를 배포하다 잘못되는 경우가 있다. 이때 개발자를 당황스럽게 하면서도 구원해주는 기능이 바로 롤백이다.


1. 롤백이란?

롤백은 배포 도중 에러가 발생했을 때 해당 스택을 배포 전의 마지막 안정적이었던 상태(Last Known Goot State)로 되돌리는 안전장치이다.

  • 철학: 인프라가 어중간하게 수정된 상태로 남아서 시스템이 꼬이는 것을 방지한다.
  • 주체: 실제로 롤백을 수행하는 것은 CDK가 아니라 배포를 담당하는 AWS CloudFormation이다.

2. 롤백은 왜 발생하는가?

배포가 실패하고 롤백이 시작되는 이유는 다양하다.

  • 권한 부족: 리소스를 생성하려는데 IAM Role에 필요한 권한이 없을 때
  • 리소스 한도 초과: 해당 리전에 생성 가능한 VPC 개수나 인스턴스 개수 제한이 걸렸을 때
  • 설정 오류: 이미 존재하는 이름을 가진 리소스를 생성하려 하거나, 유효하지 않은 파라미터를 전달했을 때
  • 헬스 체크 실패: 새 버전의 서비스를 배포했는데, 로드 밸런서의 상태 확인(Health Check)을 통과하지 못해 배포가 중단될 때

3. 롤백의 진행 과정

배포 중 에러가 감지되면 CloudFormation은 자동으로 다음 단계를 시작한다.

  1. 에러 발생: 특정 리소스 생성/수정 실패
  2. 중단: 현재 진행 중인 다른 리소스들의 작업을 즉시 멈춘다
  3. 역순 실행: 이번 배포에서 생성된 리소스는 삭제하고 수정된 리소스는 이전 설정으로 되돌린다.
  4. 상태 변경: 스택 상태가 UPDATE_ROLLBACK_COMPLETE 또는 ROLLBACK_COMPLETE로 바뀐다.

4. 롤백을 다루는 팁

—no—rollback: 디버깅

배포가 실패하면 롤백이 즉시 실행되어 에러가 난 리소스를 지워버리기 때문에 왜 실패했는지 원인을 파악하기 힘들 때가 있다. 이때 이 옵션을 사용하면 에러가 난 상태 그대로 멈춰있는다.

cdk deploy --no-rollback

특정 리소스 보존 (Retain)

중요한 데이터가 담긴 DB나 S3 버킷의 경우, 롤백이나 스택 삭제 시에도 지워지지 않도록 설정할 수 있다.

// Java 예시
Bucket.Builder.create(this, "MySafeBucket")
    .removalPolicy(RemovalPolicy.RETAIN) // 스택이 삭제되거나 롤백되어도 리소스는 남김
    .build();

5. 롤백 관리 요약

상태의미대응 방법
UPDATE_IN_PROGRESS배포 중기다리거나 터미널 로그를 지켜본다.
ROLLBACK_IN_PROGRESS에러 감지 후 되돌리는 중AWS 콘솔의 'Events' 탭에서 실패 원인을 찾는다.
ROLLBACK_COMPLETE이전 상태로 복구 완료코드를 수정하고 다시 배포한다.
ROLLBACK_FAILED롤백조차 실패한 최악의 상황수동으로 AWS 콘솔에서 리소스를 정리해야 한다.
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글