[AWS] RDS: Blue Green Deploy를 통한 DB 교체
RDS를 사용하다보면, 단순 DB 수정만으로 해결할 수 없는 문제가 종종 생긴다.
그 중 대표적인 것이 디스크의 축소다.
디스크를 줄이려면 새로운 DB를 만들고 거기에 데이터를 복제해서 옮겨써야 한다.
이런걸 하기 위해서 존재하는 것이 Blue Green Deploy다.
사전 조건
지원되는 대상과 버전이 어느 정도 정해져있다.
RDS PostgreSQL, MariaDB, MySQL만 지원한다.
지원 수준은 PostgreSQL가 가장 좋다. 11 버전 이상이기만 하면 다 되고, 나머지는 지원되는 버전이 정해져있다.
지원 대상에 대한 전체 정보는 별도 문서를 참조하길 바란다.
그리고 최소한 1개 이상의 백업이 켜져있어야 한다. 백업을 토대로 복제본을 만들기 때문인 것 같다.

그리고 원본 DB에서 논리적 복제 등을 통해서 다른 소스로 옮기는게 있다면, 삭제해서 중단시켜야 한다. PostgreSQL의 논리적 Replication이 이에 속한다.
아키텍쳐와 제한사항
기본적으로는 물리적 복제를 사용해서 동기화한다.
새로운 버전의 DB(Green)을 띄워놓고 물리적 복제를 기반으로 데이터를 실시간으로 동기화하는 것이다.
그리고 동기화 상태에서의 Green DB는 읽기 전용이기 때문에 쓰기를 처리할 수 없다.
복제가 문제 없다는 것이 판단되면 실제 DB를 교체하되, 외부의 DB 사용자 관점에서는 같은 DB URL로 사용할 수 있는 것이다.
하지만 리스크가 없는 것은 아니다. 이 최종 교체에는 다운타임이 존재한다.
AWS 발표에 따르면 전환에 따른 다운타임은 5초 미만이고, DB 드라이버 세팅에 따라서는 DB를 쓰는 서버들을 재부팅할 필요도 있다.
비용
Blue Green Deploy만을 위한 추가 비용은 없다.
다만 RDS 복제본을 추가로 띄워야 하니, 그에 대한 비용이 발생할 뿐이다.
블루그린 배포 생성
먼저 DB를 선택하고 배포를 생성해야 한다.

그럼 이런 식으로 배포 생성 창이 뜬다.
새로운 DB(Green)을 어떤 옵션으로 생성할지 선택할 수 있다.
DB 버전도 마이너 버전은 업데이트가 가능하고
스펙 변경 가능하고
스토리지 옵션도 변경 가능하다.
다른건 그냥 DB 수정에서도 할 수 있어서 아마 이게 핵심일듯...
그리고 이 초기화-동기화 시간은 제법 걸린다. 걸어놓고 한숨 자고 다음날에 확인하는 것이 편하다.
검토

시각화도 제법 잘 해준다.
그렇게 생성을 하면, 클러스터 창처럼 배포 단위를 그룹화해서 보여주게 된다. 이런 식이다.

기존에 존재하던 old 서버가 blue, new 서버가 green으로 뜬다.
그리고 blue DB에는 이 복제를 위한 replication이 생성된다. (PostgreSQL)
동기화가 완료되면 이렇게 될 것이고
green 서버에 대한 엔드포인트도 열릴 것이다.
(IAM 연결 옵션을 쓴게 아니라면) 엔드포인트만 다르고 같은 계정으로 접속할 수 있게 된다.

접속해서 문제가 없는지 이것저것 확인해보면 된다.
Blue -> Green 전환
문제가 없다는 것이 판단되면, 전환 기능을 사용해서 새로운 DB로 교체를 시작할 수 있다.
전용 버튼 찾아서

클릭만 하면 된다.

제한시간만 적당히 설정하고 시도한다. 보통은 5분 내에 된다.


그럼 이렇게 전환 상태에 진입한다.
경우에 따라서는 전환이 실패할 수도 있는데, 지금 UX에 문제가 좀 있다. 뭐때문에 실패한건지 제대로 보여주는게 없다.
내 경우에는 기존 blue DB에 논리적 복제가 남아있어서 생긴 문제였다. 논리적 복제를 전부 삭제한 뒤 재시도하니 성공했다.
전환이 완료되면 이렇게 뜰 것이고, 실제로도 새 버전으로 라우팅될 것이다.
이 상태에서는 단순 롤백이 불가능하다.
blue green 제거
일 다 끝났으면 배포를 제거하면 된다.
잘가라.
그리고 배포 삭제한다고 old DB가 자동으로 지워지진 않는다. 직접 지워야 한다.
참조
https://aws.amazon.com/ko/blogs/database/shrink-storage-volumes-for-your-rds-databases-and-optimize-your-infrastructure-costs/
https://www.lgcns.com/kr/moa/insight/detail.58480
https://aws.amazon.com/ko/about-aws/whats-new/2026/01/amazon-rds-blue-green-deployments-reduces-downtime/