AWS DMS와 SCT를 활용한 클라우드 마이그레이션

1. 마이그레이션 전략 수립

  • 온프레미스에서 클라우드로의 전환 이유 분석

    • 기존 온프레미스 시스템의 한계점: 높은 유지보수 비용, 확장성 부족, 장애 복구 체계 미흡.
    • 클라우드 전환을 통한 기대 효과: 비용 절감, 탄력적 확장, 복원력 향상.
  • 마이그레이션 유형 선택

    • 리프트 앤드 시프트(Lift & Shift): 기존 시스템을 클라우드로 단순 이전.
      (빠르게 전환이 가능하지만 최적화 부족)
    • 리플랫폼(Replatform): 데이터베이스 엔진 변경이나 성능 개선을 포함.
    • 리팩터링(Refactoring): 클라우드 네이티브 환경에 맞게 어플리케이션 재설계.

2. 데이터 마이그레이션 과정에서의 주요 고려사항

  • 마이그레이션 전 검증
    • 데이터 무결성(integrity) 검증: DMS 실행 전, 원본 데이터베이스의 상태를 점검.
    • 대상 DB 스키마 검증: SCT로 변환된 스키마가 대상 데이터베이스와 호환되는지 확인.
  • Downtime 최소화
    • CDC(Change Data Capture) 활용: 원본 데이터 변경사항을 지속적으로 복제해 서비스 중단을 최소화.
    • 피크 타임 회피: 마이그레이션 작업을 트래픽이 적은 시간대에 수행.

3. AWS DMS와 SCT를 사용한 실제 구현 예시

(1) 온프레미스 Oracle DB -> AWS Aurora PostgreSQL로의 마이그레이션

1. 스키마 변환 (Schema Conversion Tool)

  • 온프레미스 Oracle DB의 스키마를 분석해 Aurora PostgreSQL에 맞는 스키마로 변환.
  • 변환 과정 중 발생할 수 있는 경고 및 오류 사항 검토
    • 예: Oracle의 PL/SQL 코드가 PostgreSQL의 PL/pgSQL과 호환되지 않을 경우, 수작업으로 변환해야 함.
  • 사용자 정의 함수를 변환하는 데 발생할 수 있는 문제
    • Oracle의 SEQUENCE 객체가 PostgreSQL의 SERIAL 또는 IDENTITY로 대체되어야 함.

2. DMS 복제 인스턴스 설정

  • AWS DMS 복제 인스턴스를 EC2에서 구성.

  • 소스 엔드포인트: Oracle DB.

  • 대상 엔드포인트: Aurora PostgreSQL.

  • 작업 유형

    • Full Load + CDC: 초기 데이터를 모두 로드한 뒤 지속적으로 변경 사항을 복제.
  • 복제 중 고려사항

    • 네트워크 대역폭 부족으로 인한 데이터 전송 속도 저하 시, VPC 엔드포인트 및 Direct Connect 설정.

(2) 이질적 데이터베이스 마이그레이션의 한계점 해결

  • 캐릭터셋 문제

    • 소스 DB와 대상 DB의 캐릭터셋이 다를 경우, 한글 데이터 깨짐 현상 발생 가능.
    • 해결책: 데이터 전송 전, 캐릭터셋을 UTF-8로 변환.
  • 대용량 테이블 처리

    • 소스 DB의 특정 테이블 크기가 매우 클 경우, DMS 복제 작업이 느려질 수 있음.
    • 해결책: 테이블을 파티셔닝(partitioning)하여 병렬로 전송.

4. 성능 최적화 및 트러블슈팅

  • DMS 복제 작업 최적화

    • 배치 크기 조정: 데이터 전송 중 적절한 BatchSize 설정으로 속도 개선.
    • 멀티 AZ 활성화: 복제 인스턴스의 고가용성 확보.
    • 엔드포인트 설정 최적화
      • 소스 DB 연결 설정: 쿼리 타임아웃(timeouts) 및 세션 관리.
      • 대상 DB 연결 설정: 쓰기 지연(latency) 최소화.
  • 에러 처리 및 복구

    • 데이터 손실 방지
      • CDC 로그가 손상될 경우, 체크포인트를 활용해 복구.
    • 중단된 복제 작업 재시작
      • 작업 ID를 기반으로 특정 단계부터 복제 재시작 가능.

5. 실시간 복제와 스트리밍 데이터 통합

  • AWS DMS와 Kinesis Data Streams 연동
    • 실시간 데이터 복제를 위해 DMS를 Kinesis Data Streams와 통합.
    • 사용 사례
      • 소스 DB에서 발생하는 이벤트 데이터를 실시간 분석.
    • 예: 쇼핑몰 트랜잭션 데이터를 DynamoDB와 Redshift로 복제해 실시간 대시보드 구축.

6. 보안 강화 및 데이터 암호화

  • 전송 중 데이터 보호
    • DMS 엔드포인트 간 SSL/TLS 암호화 설정.
  • DMS에서 KMS를 활용한 데이터 암호화
    • 복제 작업 중 대상 DB로 전송되는 데이터를 AWS Key Management Service(KMS)로 암호화.
  • 접근 제어
    • IAM 정책을 통해 DMS 복제 인스턴스의 권한 최소화.

7. 사후 모니터링 및 운영

  • CloudWatch를 통한 실시간 모니터링

    • DMS 작업 상태, 성능 지표(Throughput, Latency) 추적.
  • 경보(Alarm) 설정

    • 복제 작업 실패, 네트워크 오류, 대상 DB 연결 문제 발생 시 알림.
  • 마이그레이션 완료 후 최적화

    • 데이터 정합성 검사: 소스와 대상 데이터가 일치하는지 검증.
    • 클라우드 네이티브 서비스로 전환
      • DynamoDB를 사용해 데이터 처리 속도 최적화.
      • Redshift를 활용해 데이터 분석 성능 강화.

결론

DMS와 SCT를 활용한 클라우드 마이그레이션은 단순히 데이터 이전 이상의 복잡성을 동반합니다. 발생 가능한 트러블 및 최적화 방안을 포함하여, 실제 프로젝트에서 겪을 법한 상황과 이를 해결하는 접근 방식을 이번 프로젝트를 경험으로 상기하기위해 포스팅 하였습니다.

profile
꾸준히, 의미있는 사이드 프로젝트 경험과 문제해결 과정을 기록하기 위한 공간입니다.

0개의 댓글