AWS Advanced JDBC Wrapper의 blue/green 플러그인을 통하여 전환 시 최소의 다운타임 달성하기
AWS Advanced JDBC Wrapper Blue/Green 플러그인: RDS 전환 시 다운타임 최소화
1. 개요
- 본 문서는 AWS Advanced JDBC Wrapper의 Blue/Green 배포 플러그인을 소개하며, RDS Aurora Blue/Green 전환 시 발생하는 다운타임과 연결 문제를 최소화하는 방법을 설명합니다.
- 목표: 애플리케이션 코드 변경 없이 JDBC 연결 설정만으로 전환 중 연결 라우팅, 상태 감지, 트래픽 관리를 자동화하여 다운타임 최소화.
2. Blue/Green 배포 플러그인 소개
- 핵심 기능: RDS Aurora Blue/Green 전환 과정에서 발생하는 연결 종료, DNS 전파 지연, 엔드포인트 변경 자동 감지 및 처리.
- 주요 특징:
- 자동 전환 감지: 백그라운드 모니터링으로 RDS 메타데이터 주기적 조회 및 Phase 변화 실시간 감지.
- 지능형 트래픽 관리: 전환 단계별 연결 및 쿼리 실행 자동 제어.
- DNS 독립적 라우팅: IP 기반 라우팅으로 stale DNS 문제 방지.
- 연결 인벤토리 관리: Blue/Green 환경의 엔드포인트 및 IP 주소 사전 수집.
3. 플러그인 동작 방식
3.1. 상태 모니터링 및 인벤토리 유지
- RDS 메타데이터 테이블/함수를 주기적으로 조회하여 Blue/Green Phase 감지 및 라우팅 정책 적용.
- Blue/Green 양쪽 환경의 엔드포인트 및 IP 주소 목록 사전 수집 및 관계 정리.
3.2. 전환 단계별 트래픽 라우팅
- PREPARATION: Blue 호스트명을 IP 주소로 치환하여 연결 준비.
- IN_PROGRESS: 모든 신규 연결 및 기존 쿼리 실행 일시 중단(Suspend).
- POST: Blue 호스트명→Green IP 치환, DNS 전파 대기 및 Green 노드 직접 연결 거부.
- COMPLETED: DNS 안정화 후 정상 호스트명 기반 라우팅 복귀.
3.3. 내부 레이어 구조
- 레이어 A (Interception): BlueGreenConnectionPlugin (JDBC 호출 가로채기, Connect/Execute Routing 적용).
- 레이어 B (Policy): BlueGreenStatusProvider (상태/인벤토리/라우팅 정책 관리).
- 레이어 C (Monitoring): BlueGreenStatusMonitor (배경 모니터링 및 Phase 감지).
4. 사전 요구사항 및 제약사항
- 네트워크 연결: 클러스터/인스턴스 엔드포인트 직접 접근 가능해야 함 (CNAME alias 미지원).
- DB 엔진 버전: 메타데이터 테이블 지원 버전 필요.
- 애플리케이션 스택: AWS Advanced JDBC Wrapper 2.6.0 이상, PostgreSQL/MySQL JDBC 드라이버.
- 사용자 권한: 비관리자 계정 시
rds_tools 확장 등 추가 권한 필요.
- 미지원 구성: Multi-AZ clusters, Aurora Global Database.
- 로깅 설정: FINE 레벨 이상 로깅 설정 필요 (로그 저장 공간 확보).
5. Java 애플리케이션 설정 및 파라미터
- Maven/Gradle 종속성 추가.
.java 파일에서 파라미터 설정 (예: bgConnectTimeoutMs, bgHighMs, bgSwitchoverTimeoutMs).
bgConnectTimeoutMs: 신규 연결 최대 대기 시간.
bgHighMs: Aurora/RDS 메타데이터 폴링 주기 조정 (낮을수록 빠름).
bgSwitchoverTimeoutMs: 전체 전환 타임아웃 설정.
6. 전환 단계별 동작 및 롤백
- 전환 수명 주기 (Lifecycle): NOT_CREATED → CREATED → PREPARATION → IN_PROGRESS → POST → COMPLETED.
- Phase별 폴링 주기 및 라우팅 정책: Phase에 따라 폴링 주기 및 트래픽 라우팅 정책 자동 조정.
- 롤백 감지: Green 모니터에서 Phase 값 역행 감지 시 롤백 처리 (bgSwitchoverTimeoutMs 설정 주의).
7. 결론
- AWS Advanced JDBC Wrapper Blue/Green 플러그인은 RDS/Aurora 전환 시 다운타임을 최소화하고 DNS 독립적 동작을 보장.
- 애플리케이션 코드 변경 없이 JDBC 연결 파라미터 설정만으로 활성화 가능.
- 유연한 튜닝 및 롤백 메커니즘 제공으로 높은 가용성과 복원력 확보.