AWS Advanced JDBC Wrapper는 RDS/Aurora Blue/Green 배포 시 다운타임 최소화를 목표로, 연결 관리 및 트래픽 제어 기능을 제공
자동 전환 감지 및 지능형 트래픽 관리를 통해 애플리케이션 코드 변경 없이 JDBC 연결 설정만으로 Blue/Green 전환 지원
DNS 캐시 문제 해결을 위해 IP 기반 라우팅을 사용하고, 연결 실패 시 재시도 로직을 통해 가용성(Availability) 향상을 도모
RDS/Aurora Blue/Green 전환 시 5초 미만의 다운타임을 목표로 하며, 롤백 메커니즘을 통해 안정성 확보
AWS Advanced JDBC Wrapper는 JDBC 드라이버(JDBC Driver) 위에 레이어(Layer)를 추가하여 Blue/Green 배포 전환을 지원한다. 플러그인은 세 개의 레이어로 구성되며, 각 레이어는 특정 기능을 담당한다.
BlueGreenConnectionPlugin: 신규 연결 개설을 가로채고, 전환 Phase에 따라 연결을 제어한다. Suspend, Substitute, Reject, SuspendUntilFound 등의 라우팅 전략을 적용
BlueGreenStatusProvider: Blue/Green 전환 Phase를 관리하고, 해당 Phase에 맞는 ConnectRouting/ExecuteRouting 리스트를 생성하여 캐싱한다. Blue와 Green 환경의 엔드포인트 매핑 정보를 유지
BlueGreenStatusMonitor: RDS 메타데이터를 주기적으로 조회하여 Blue/Green 배포 상태를 감지한다. 폴링 주기는 Phase에 따라 가변적으로 조정된다.
AWS Advanced JDBC Wrapper는 DNS 전파 지연으로 인한 문제를 해결하기 위해 IP 기반 라우팅(IP-based Routing)을 사용한다. 일반적인 JDBC 드라이버는 호스트명(Hostname) 기반으로 연결을 시도하지만, 이 플러그인은 내부적으로 IP 인벤토리를 유지하여 호스트명이 아닌 IP 주소로 연결한다.
PREPARATION 단계: Blue 호스트명을 Blue IP 주소로 치환하여 연결
IN_PROGRESS 단계: 모든 신규 연결과 기존 쿼리 실행을 일시 중단
POST 단계: Blue 호스트명으로 들어오는 연결을 Green IP로 치환하고, Green 엔드포인트로의 직접 연결을 거부
이러한 방식으로 DNS 캐싱 문제를 우회하고, 전환 과정에서 Stale DNS 문제를 방지한다.
AWS Advanced JDBC Wrapper는 Blue/Green 배포의 각 Phase에 따라 지능적인 트래픽 관리(Intelligent Traffic Management)를 수행한다. 전환 단계별로 연결과 쿼리 실행을 제어하여 다운타임을 최소화하고 데이터 일관성을 유지한다.
NOT_CREATED/CREATED: 평상시 모니터링 상태
PREPARATION: IP 기반 연결로 전환
IN_PROGRESS: 모든 연결과 쿼리 실행 일시 중단
POST: Green 환경으로 라우팅
COMPLETED: 정상 동작 복귀
각 Phase에 따라 ConnectRouting 및 ExecuteRouting 정책을 적용하여, 데이터베이스 전환 중에도 애플리케이션의 가용성을 보장한다.
AWS Advanced JDBC Wrapper는 RDS 전환 실패 시 롤백을 자동으로 감지하고 처리하는 메커니즘을 제공한다. 롤백은 Green 모니터링을 통해 감지되며, 특정 조건을 만족할 때 트리거된다.
롤백 감지 조건: Green 모니터링 사용, 이전 Phase 존재, 현재 Phase 유효, COMPLETED 이전, Phase 값 역행
제약 사항: bgSwitchoverTimeoutMs가 먼저 만료되면 롤백 감지 불가, SOURCE 모니터에서는 롤백 판단 불가
롤백 감지 시 모든 트래픽 제어가 해제되고, 내부 상태가 초기화되어 새로운 사이클로 모니터링이 재시작된다. 롤백 메커니즘은 데이터베이스 전환의 안정성을 높이는 데 기여하지만, 타임아웃 설정에 주의해야 한다.
AWS Advanced JDBC Wrapper를 사용하기 위해서는 몇 가지 사전 요구 사항과 설정을 고려해야 한다. 먼저, AWS 클러스터 및 인스턴스 엔드포인트에 대한 네트워크 연결(Network Connection)이 가능해야 하며, 데이터베이스 엔진 버전 및 애플리케이션 스택 요구 사항을 충족해야 한다.
Maven 설정: pom.xml에 필요한 종속성 추가
.properties 파일 설정: 로깅 레벨 설정
Connection Parameter 설정: wrapperPlugins, bgdId, bgConnectTimeoutMs, bgHighMs, bgSwitchoverTimeoutMs 등 설정
또한, 비관리자 계정으로 접속하는 경우, Blue/Green 메타데이터 조회를 위한 추가 권한(Additional Permissions)이 필요하다. 설정 시, 각 파라미터의 의미와 영향을 정확히 이해하고, 애플리케이션 환경에 맞게 조정해야 한다.