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개의 댓글