BLOG

데이터베이스 마이그레이션 서비스를 사용하여 관계형 데이터베이스에서 Amazon Kinesis로 CDC데이터 로드하기
작성일: 2018-08-02

많은 대기업들이 시기 적절한 통찰력을 얻기 위해 데이터 처리를 배치에서 실시간으로 이동하고 있습니다. 그렇게 하는 것의 문제점은 실시간 데이터 처리 아키텍처가 들어오는 데이터 스트림을 따라잡을 수 있어야 한다는 것입니다. 이를 위해서는 강력한 내결함성과 탄력성이 필요합니다.

이 글에서는 실시간 데이터 처리 아키텍처와 SQL 서버 데이터베이스용 Amazon RDS에서의 변경 사항을 캡쳐하여 Amazon Kinesis 데이터 스트림으로 보내는 방법에 대해 설명합니다. 초기 데이터 로드에 Amazon S3 및 AWS Lambda를 사용하는 방법과 지속적인 복제를 위해 AWS 데이터베이스 마이그레이션 서비스를 사용하는 방법을 보여 줍니다.

AWS는 Amazon Kinesis 데이터 스트림, AWS DMS(데이터베이스 마이그레이션 서비스), AWS Lambda 등의 성공적인 데이터 처리를 위한 여러 서비스를 제공합니다. DMS는 기존 데이터를 마이그레이션하고 진행 중인 변경 데이터를 소스 시스템에서 타겟 시스템으로 복제하는 데 도움이 됩니다.

 

전제 조건 및 가정

  • 이 솔루션을 직접 사용하려면 AWS 서비스에 대한 액세스를 제공하는 AWS 계정이 필요합니다.
  • 이 서비스는 us-east-1 리전에서 생성되어야 하며 us-east-1 리전의 동일한 VPC에서 구성하여 네트워킹 고려 사항을 간소화해야 합니다.
  • Lambda 함수에 대해 컴파일된 Java 코드는 이 Amazon 저장소에 있는 ZIP 파일에 포함되어 있습니다. S3 버킷을 만들고 ZIP 파일을 업로드합니다. CloudFormation 스택을 생성하는 동안 이 S3 버킷의 이름을 제공해야 합니다.
  • RDS 데이터베이스의 기본 마스터 사용자 이름은 AWSUser입니다. CloudFormation 스택을 생성하는 동안 마스터 암호를 선택합니다.

AWS CloudFormation을 사용하는 경우 관련 리소스를 스택이라는 단일 단위로 관리합니다. 스택을 생성, 업데이트 및 삭제하여 리소스 모음을 생성, 업데이트 및 삭제할 수 있습니다. 스택의 모든 리소스는 스택의 AWS CloudFormation 템플릿에 의해 정의됩니다.

 

솔루션 구현 단계

이 솔루션을 구현하기 위한 코드와 CloudFormation 템플릿은 이 Amazon GitHub 저장소에서 찾을 수 있습니다.

다음을 프로비저닝 합니다.

  1. 공용 스냅샷의 SQL 서버 데이터베이스를 위한 Amazon RDS입니다.
  2. DMS용 S3 버킷으로 Lambda 함수를 호출할 수 있습니다.
  3. DMS용 IAM 역할.
  4. AWS DMS(데이터베이스 마이그레이션 서비스).
  5. 아마존 Kinesis 데이터 스트림.
  6. Lambda 함수에 대한 IAM 역할.
  7. 소스 S3 버킷에서 타겟 Kinesis 데이터 스트림으로 데이터를 로드하는 Lambda 함수입니다.
  8. Kinesis 데이터 스트림에서 데이터를 읽는 Lambda 함수입니다.

아래의 아키텍처 다이어그램은 데이터베이스 마이그레이션 서비스를 사용하여 SQL 서버용 RDS에서 Kinesis 데이터 스트림으로의 데이터 흐름을 보여 줍니다.

1단계: CloudFormation 스택 생성하기

이 Amazon 저장소에서 CloudFormation 스크립트를 다운로드합니다.

AWS Console의 CloudFormation 페이지로 이동하고 아래와 같이 Create Stack(스택 생성)을 클릭합니다.

CDCCloudFormation.yml 파일을 아래와 같이 업로드합니다.

다음 화면에서 이들을 제공합니다.

  • 스택 이름
  • Code3Bucket 이름(Lambda 코드 ZIP 파일의 버킷)
  • 데이터베이스의 마스터 사용자 암호
  • TargetS3BucketName (DMS용 타겟 버킷). 각 S3 버킷에 대해 다른 버킷 이름을 선택합니다. 그들은 전 세계적으로 유일합니다.

아래와 같이 Next(다음)를 클릭합니다.

Review Details(세부 정보 검토) 페이지로 이동할 때까지 Next(다음)를 클릭합니다. IAM 리소스 생성을 확인하고 아래와 같이 Create(생성)을 클릭합니다.

CloudFormation 스택이 완료되면 리소스가 생성되었는지 확인합니다. CloudFormation 스택이 완료되지 않으면 AWS 관리 콘솔에서 CloudFormation 스택에 대한 이벤트를 확인합니다.

2단계: 공용 스냅 샷에서 SQL 서버 데이터베이스용 Amazon RDS 확인하기

RDS의 SQL 서버 데이터베이스는 CloudFormation 스크립트가 완료된 후 생성됩니다. 아래와 같이 AWS 관리 콘솔에서 RDS 인스턴스가 생성되었는지 확인할 수 있습니다.

또한 SQL 서버에 대한 CDC(변경 데이터 캡처)를 사용하도록 설정해야 합니다. 자세한 내용은 Amazon RDS 사용자 가이드의 변경 데이터 캡처 사용을 참조하십시오. 먼저 exec msdb.dbo.rds_cdc_enable_db ‘CustomerDB’를 실행하여 CDC에서 데이터베이스를 활성화합니다. 그런 다음 아래 저장된 절차를 실행하여 CDC에서 테이블을 활성화합니다.

exec sys.sp_cdc_enable_table

@source_schema = N’dbo’

,  @source_name = N’CustomerInformation’

,  @role_name = N’admin’

SQL 서버 관리 스튜디오를 통해 SQL RDS 인스턴스에 액세스 할 수 없는 경우 보안 그룹 내에서 RDS 인스턴스가 수신 중인 포트를 엽니다. 이 글에 함께 제공된 CloudFormation 템플릿을 사용하는 경우 사용되는 포트 번호는 1433입니다.

3단계: DMS용 S3 버킷 확인하기

데이터베이스 마이그레이션 서비스용 타겟 S3 버킷이 CDC 데이터 CSV 파일에 대해 생성됩니다. 아래와 같이 AWS 관리 콘솔에서 버킷이 생성되었는지 확인할 수 있습니다.

4단계: DMS 데이터베이스 마이그레이션 서비스 설정하기

AWS 데이터베이스 마이그레이션 서비스 작업에는 3개의 엔티티가 필요합니다.

소스는 데이터를 이동시킬 데이터베이스이고 타겟은 데이터를 받을 데이터베이스입니다. 이 경우 소스 데이터베이스는 RDS용 SQL 서버이고 타겟 데이터베이스는 S3 버킷입니다. 복제 인스턴스는 마이그레이션 작업을 처리하며 VPC 내의 원본 및 대상 엔드포인트에 액세스해야 합니다. 복제 인스턴스는 원본 데이터베이스와 대상 데이터베이스 간을 연결하고, 데이터를 전송하며, 초기 데이터 로드 중에 원본 데이터베이스에서 발생한 모든 변경 사항을 캐시합니다.

CloudFormation 스크립트가 완료되면 복제 인스턴스, 직압 및 엔드포인트가 생성되었는지 확인합니다. 아래 그림과 같이 DMS 작업을 확인하고 시작합니다.

5단계: Lambda 함수 확인하기

CloudFormation 스크립트가 완료되면 콘솔을 확인하여 두개의 Lambda 함수가 생성되는지 확인합니다. 첫번째 함수는 데이터베이스 마이그레이션 서비스에서 생성된 S3의 CSV파일을 읽습니다. 두번째 함수는 Kinesis 데이터 스트림의 데이터를 소비합니다.

콘솔에서 아래 표시된 두개의 Lambda 함수를 참조하십시오.

Lambda 함수를 위해 컴파일된 Java 코드는 이 Amazon GitHub 저장소에 있는 ZIP 파일에 포함되어 있습니다. 코드를 사용하려면 S3 버킷을 만들고 CloudFormation 스택을 생성할 때 이름을 제공합니다. 그런 다음, ZIP 파일을 S3 버킷에 업로드합니다.

데이터베이스 마이그레이션 서비스가 CSV 데이터를 S3에 로드하면 Kinesis 데이터 스트림이 채워집니다. Consumekinesis 스트림 Lambda 함수는 새 데이터의 스트림을 검사합니다. 아래 나온 것처럼 consumekinesis를 위한 로그 그룹 아래의 CloudWatch에서 consumekinesis Lambda 함수를 통해 소비된 소비자 데이터를 볼 수 있습니다.

S3에서 개체가 생성된 후 S3에서 Lambda가 트리거되면 첫번째 Lambda 함수의 Java 코드가 실행됩니다. 그런 다음 S3 이벤트를 사용하여 개체 메타데이터와 컨텐츠를 검색합니다. CSV 파일의 컨텐츠를 처리하고 Kinesis 데이터 스트림을 통해 처리합니다. Lambda가 Kinesis 데이터 스트림에 게시된 새 레코드를 찾으면 두번째 Lambda 함수의 Java 코드가 실행됩니다. 이 경우 Lambda 함수는 Kinesis 데이터 스트림을 검사하여 스트림에 게시된 새 레코드를 확인합니다.

유스 케이스에 맞게 Lambda 함수 중 하나의 코드를 자유롭게 수정할 수 있습니다.

 

요약

이 글에서는 데이터베이스 마이그레이션 서비스를 사용하여 CDC 데이터를 관계형 데이터베이스에서 Amazon Kinesis로 로드하는 엔드 투 엔드 솔루션을 보여 주었습니다. 이 솔루션을 사용하여 실시간 데이터 변경을 분석할 수 있습니다. 예를 들어, 사기 거래를 모니터링하거나 돈 세탁 방지 관련 규제 법을 충족할 수 있습니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/database/load-cdc-data-from-relational-databases-to-amazon-kinesis-using-database-migration-service/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.