AWS Advanced JDBC Wrapper로 RDS/Aurora Blue/Green 전환, 다운타임 최소화!
AWS Advanced JDBC Wrapper는 RDS/Aurora Blue/Green 배포 시 다운타임 최소화를 목표로, 연결 관리 및 트래픽 제어 기능을 제공
자동 전환 감지 및 지능형 트래픽 관리를 통해 애플리케이션 코드 변경 없이 JDBC 연결 설정만으로 Blue/Green 전환 지원
DNS 캐시 문제 해결을 위해 IP 기반 라우팅을 사용하고, 연결 실패 시 재시도 로직을 통해 가용성(Availability) 향상을 도모
RDS/Aurora Blue/Green 전환 시 5초 미만의 다운타임을 목표로 하며, 롤백 메커니즘을 통해 안정성 확보
AWS Advanced JDBC Wrapper의 작동 원리
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에 따라 가변적으로 조정된다.
DNS 캐시 문제 해결을 위한 IP 기반 라우팅
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 문제를 방지한다.
Blue/Green 전환 단계별 트래픽 관리
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 Advanced JDBC Wrapper를 사용하기 위해서는 몇 가지 사전 요구 사항과 설정을 고려해야 한다. 먼저, AWS 클러스터 및 인스턴스 엔드포인트에 대한 네트워크 연결(Network Connection)이 가능해야 하며, 데이터베이스 엔진 버전 및 애플리케이션 스택 요구 사항을 충족해야 한다.
Maven 설정: pom.xml에 필요한 종속성 추가
.properties 파일 설정: 로깅 레벨 설정
Connection Parameter 설정: wrapperPlugins, bgdId, bgConnectTimeoutMs, bgHighMs, bgSwitchoverTimeoutMs 등 설정
또한, 비관리자 계정으로 접속하는 경우, Blue/Green 메타데이터 조회를 위한 추가 권한(Additional Permissions)이 필요하다. 설정 시, 각 파라미터의 의미와 영향을 정확히 이해하고, 애플리케이션 환경에 맞게 조정해야 한다.