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