DB 마이그레이션을 위한 솔루션
- AWS Database Migration Service

안녕하세요. 온프레미스에서 클라우드로 넘어가거나, 혹은 데이터를 분석용으로 따로 빼고 싶을 때 가장 고민되는 것이 바로 **"데이터베이스 마이그레이션"**입니다. 서비스 중단 시간을 최소화하면서 대용량 데이터를 어떻게 옮길까요?

‍

이때 사용하는 AWS의 강력한 도구가 바로 **AWS DMS(Database Migration Service)**입니다. 오늘은 DMS의 핵심 개념과 함께, EC2(MariaDB)에 있는 데이터를 S3로 실시간 적재하는 실습 과정을 단계별로 알아보겠습니다.

‍

1. AWS DMS란 무엇인가요?

AWS DMS는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 등 다양한 데이터 저장소 간에 데이터를 쉽게 마이그레이션하도록 돕는 관리형 서비스입니다.

핵심 특징

최소한의 다운타임: 데이터를 옮기는 동안에도 원본 DB는 정상 운영 가능합니다.

동종/이종 마이그레이션: MySQL → MySQL은 물론, Oracle → PostgreSQL 같은 이종 간 이동도 지원합니다.

지속적 복제(CDC): 단순히 한 번 옮기고 끝나는 게 아니라, 변경된 데이터(INSERT/UPDATE/DELETE)를 실시간으로 타겟에 반영할 수 있습니다 .

‍

2. 실습 시나리오: EC2(MariaDB) → S3 데이터 파이프라인 구축

프라이빗 환경에서 DB 데이터를 S3로 옮기는 과정을 구성해 보겠습니다.

아키텍처 구성

Source: VPC 내부 EC2에 설치된 MariaDB (Table: employees)

Target: S3 Bucket (데이터 레이크 용도)

Middleware: AWS DMS (데이터 중계자)

Network: 보안을 위해 인터넷을 타지 않는 Private Network 구성 (S3 Gateway Endpoint 활용)

‍

3. 단계별 구축 가이드

Step 1. S3 버킷(Target) 준비 및 권한 설정

가장 먼저 데이터가 쌓일 S3 버킷을 생성하고, DMS가 이 버킷에 데이터를 쓰고 지울 수 있도록 권한을 줘야 합니다.

‍

버킷 생성: 원하는 이름(예: dms-test-bucket-01)으로 생성합니다 .

IAM Role 생성: DMS가 S3에 접근할 수 있는 IAM Role을 만듭니다. 필수 권한은 다음과 같습니다.

s3:PutObject (데이터 저장)

s3:DeleteObject (데이터 삭제 - 로드 전 정리용)

s3:GetObject 등 .

버킷 정책(Bucket Policy) 설정: 위에서 만든 IAM Role만 이 버킷에 접근할 수 있도록 정책을 설정합니다 .

‍

Tip: 프라이빗 환경에서 S3에 접속하려면 VPC에 S3 Gateway Endpoint가 반드시 있어야 합니다.

Step 2. DMS 복제 인스턴스 생성

데이터를 퍼 나르는 일꾼인 '복제 인스턴스(Replication Instance)'를 만듭니다.

‍

서브넷 그룹 생성: DMS가 위치할 VPC와 서브넷(Private Subnet 권장)을 지정합니다 .

복제 인스턴스 생성:

인스턴스 클래스: dms.t3.medium (테스트용으로 적합).

Multi-AZ: 운영 환경이면 '예', 테스트면 '아니요' .

퍼블릭 액세스: 비활성화 (보안을 위해 Private IP만 할당).

Step 3. 엔드포인트(Endpoint) 연결

DMS에게 "어디서 가져와서(Source), 어디로 보낼지(Target)"를 알려줍니다.

‍

Source Endpoint (MariaDB):

서버 이름: EC2의 Private IP.

포트: 3306.

자격 증명: DB ID/PW 입력 .

Target Endpoint (S3):

대상 엔진: Amazon S3.

버킷 폴더: s3://bucket_name/prefix.

IAM Role: Step 1에서 만든 Role의 ARN 입력.

Step 4. 마이그레이션 태스크(Task) 생성 및 실행

이제 실제로 데이터를 옮기는 작업을 정의합니다.

‍

마이그레이션 유형 선택:

기존 데이터 마이그레이션: 현재 있는 데이터만 옮김.

데이터 마이그레이션 및 변경 사항 복제 (CDC): 현재 데이터 + 앞으로 들어올 데이터까지 계속 실시간 동기화 . <- 이번 실습 권장 사항

테이블 매핑: demo 스키마의 employees 테이블만 옮기도록 필터링합니다 .

태스크 시작: 태스크를 실행하면 로드 상태가 100%가 되고, S3 버킷에 CSV 파일 형태로 데이터가 생성된 것을 확인할 수 있습니다.

Step 5. 데이터 검증 (CDC 테스트)

실시간 동기화가 잘 되는지 확인해 봅니다.

MariaDB에서 INSERT나 UPDATE 쿼리를 날려 데이터를 변경합니다 .

S3 버킷을 확인해보면 변경된 데이터에 대한 파일(LOAD000...csv 등)이 추가로 생성된 것을 볼 수 있습니다.

‍

4. 실제 업무에서는 이렇게 씁니다 (Use Cases)

DMS는 단순히 DB 이사뿐만 아니라 다양한 데이터 파이프라인 구축에 활용됩니다.

① 무중단 DB 마이그레이션 (On-Premise → AWS)

가장 전통적인 용도입니다. 서비스 중단 없이 온프레미스 오라클 DB를 AWS RDS(Aurora 등)로 옮길 때 사용합니다. 초기 적재(Full Load) 후 CDC를 걸어두고, 데이터가 싱크되면 DNS를 스위칭하여 다운타임을 최소화합니다.

② 데이터 레이크(Data Lake) 구축 (DB → S3)

실습에서 한 내용입니다. 운영 DB(OLTP)에 분석 쿼리를 날리면 서비스가 느려지겠죠? DMS로 데이터를 실시간으로 S3에 적재한 뒤, Athena나 Redshift를 이용해 분석 작업을 수행합니다. 운영 DB 부하를 줄이는 핵심 패턴입니다.

③ 이기종 DB 간 데이터 동기화 (MSA 환경)

마이크로서비스 아키텍처(MSA)에서, 결제 서비스(MySQL)의 데이터가 변경되면 주문 서비스(DynamoDB)에도 반영해야 할 때가 있습니다. DMS를 이용해 이기종 DB 간 데이터를 실시간으로 동기화할 수 있습니다.

‍

5. 핵심 요약 & 주의사항

보안 그룹(SG): 복제 인스턴스는 Source(EC2)와 Target(S3 Endpoint) 양쪽에 모두 접근 가능해야 합니다.

S3 Gateway Endpoint: Private Subnet에 있는 DMS가 S3에 접근하려면 필수입니다.

IAM 권한: Target이 S3인 경우 DeleteObject 권한이 없으면 태스크가 실패할 수 있으니 꼼꼼히 챙겨야 합니다.

‍

DMS는 AWS 데이터 생태계의 혈관과도 같은 서비스입니다. 이 가이드를 통해 데이터 파이프라인 구축의 첫걸음을 떼보시기 바랍니다!

  • AWS DMS란 무엇인가요?

  • 실습 시나리오: EC2(MariaDB) → S3 데이터 파이프라인 구축

  • 단계별 구축 가이드

  • 실제 업무에서는 이렇게 씁니다 (Use Cases)

  • 핵심 요약 & 주의사항

관련 키워드
클라우드
금감원
굿리치 사례연구
관련 키워드
클라우드
금감원
굿리치 사례연구
관련 콘텐츠
Insight
클라우드
AWS
Insight
Tech Guide
클라우드
보안
AWS
Tech Guide
Tech Guide
클라우드
보안
AWS
Tech Guide