AWS 기술 블로그
AWS 서비스를 활용하여, 오픈소스 데이터베이스로 내 데이터 다시 담기
이 글은 SQL Server to Aurora MySQL in Game Development 시리즈 블로그의 일부로 작성이 되었습니다. 시리즈의 모든 글들은 아래 링크들을 따라가시면 읽어보실 수 있습니다.
- 저장 프로시저 중심 아키텍처에서 벗어나 클라우드 데이터베이스 적응하기
- Aurora MySQL 성능 검증 직접 해보기
- Game 개발시 Aurora MySQL을 사용하는 과정에서 SQL Server와 달라 주의할 점들에 대한 가이드
- Amazon Aurora MySQL을 활용한 클라우드 답게 데이터베이스 운영하기
- Amazon Aurora MySQL의 여러 관리 도구를 SQL Server Management Studio 와 비교하기
- Amazon Aurora MySQL 오해와 진실
- 개발 중이거나 서비스중인 DB schema 및 데이터에 대한 migration 방법들(SCT, DMS)
소개
본 블로그 시리즈의 이전 글들에서는 용도에 맞는 데이터베이스를 왜 선택해야 하는지, 이러한 데이터 생태계에 오픈소스 데이터베이스를 활용하면 어떠한 이점이 있는지등에 대하여 살펴보았습니다. 데이터는 다양한 형태로 생성과 소비가 되고 있으며, 데이터의 소비자들도 다양한 형태로 존재합니다. 이전에는 게임에 직접 노출되는 데이터의 구조에 대한 부분만 관심의 대상 이었다면, 데이터의 통합과 분석에 대해서도 비지니스의 다양한 요구 조건에 따라 관심의 영역이 확장되고 있습니다. 데이터는 아래와 같은 다양한 분석을 위한 근거로 활용이 될 수 있습니다.
- 새로 출시한 업데이트의 수익 분석
- 게임 애플리케이션의 실시간 오류 분석과 수정
- 사용자들의 행동 패턴과 실패 지점 분석
- 부정 행위의 탐지등
이러한 통합을 유연하고 매끄럽게 수행하기 위해서는, 기존의 게임 혹은 플랫폼의 데이터를 마이그레이션 해야 하는 경우가 발생합니다. 이러한 상황에서 AWS의 어떠한 서비스들이, 데이터의 유연한 통합과 마이그레이션에 활용이 될 수 있는지 살펴보고자 합니다.
AWS Database Migration Service (AWS DMS)
첫 번째로 소개해 드릴 서비스는 AWS Database Migration Service (AWS DMS)입니다. AWS DMS는 데이터의 전체 스냅샷 혹은 데이터의 증분을 이기종 데이터베이스 엔진으로 복제하는 서비스 입니다. 이기종 데이터베이스간의 유연한 데이터 마이그레이션을 지원하기 위한 자료형 변환, 기본적인 스키마 조정 등의 기능들을 제공하고 있습니다. 이에 추가하여, 기본적인 데이터의 변환과 필터링 등을 지원합니다. AWS DMS는 Oracle, Microsoft SQL Server, 그리고 IBM DB2와 같은 상용 엔진에 추가하여, MySQL, MariaDB, 그리고 PostgreSQL 등 오픈소스 까지 다양한 복제 소스를 지원합니다. 복제 타겟으로는 위에 지원하는 데이터베이스에 추가하여, Amazon DocumnetDB, Amazon OpenSearch Service와 같은 NoSQL 데이터 서비스와 Amazon Redshift, Amazon S3로의 복제와 같은 데이터레이크 구성을 위한 복제, Apache Kafka, Amazon Kinesis Data Streams와 같은 스트림 복제를 위한 타겟을 지원합니다. DMS 구성은 아래와 같은 사용 사례에서 활용할 수 있습니다.
- 이기종 복제를 활용하여, 이미 상용 데이터베이스를 기반으로 개발 된 프로젝트를 오픈소스로 마이그레이션하여, 데이터의 마이그레이션과 비용 효율화를 동시에 달성
- N:1 복제를 활용하여, 상용 데이터베이스로 구성된 여러 월드의 데이터를 오픈소스 데이터베이스 혹은 오픈소스 데이터레이크로 복제하여, 데이터 분석에 활용
- 상용 데이터베이스에 존재하는 상점 데이터를, 검색 기능에 강점이 있는 Amazon DocumentDB 혹은 Amazon OpenSearch Service로 옮겨와, 사용자들의 거래 내역에 대한 검색 혹은 관리용 백오피스 애플리케이션을 별도 구성
AWS Schema Conversion Tool (AWS SCT)
다른 데이터베이스 엔진으로의 마이그레이션을 고려하는 경우 제일 큰 장벽은 사용하고 있는 기능의 호환성, 자료형의 변환, 그리고 각종 명령어의 매칭 기능입니다. AWS Schema Conversion Tool (AWS SCT)은 미리 사용자들이 이관을 고려하는 데이터베이스 엔진으로의 각종 스키마 (테이블, 함수, 그리고 자료형)를 변환을 하고, 이에 대한 매칭 정도, 변환에 대한 추천 내용 등에 대한 평가를 시각적으로 제공하는 도구 입니다. AWS SCT는 AWS DMS 에서 제공하는 소스와 타겟이 호환됩니다.
AWS SCT의 주요 기능으로는, 스키마의 변경을 수행한 후 평가 리포트를 통해, 마이그레이션 수행 전에 조치해야 할 상세 사항들을 확인하고 정리할 수 있습니다.
다음 기능으로는 소스 혹은 타겟 데이터베이스와 연결하여, 각각의 스키마 변경 오브젝트들을 시각화 하여 살펴보고, 각각의 변환 결과에 대한 시각화에 접근할 수 있습니다. 이 화면에서는, 소스의 오브젝트 코드와 타겟의 오브젝트 코드를 비교하여, 어떠한 변화가 이루어졌는지를 간편하게 비교하고, 바로 대상에 적용하는 것도 가능합니다.
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Amazon Managed Streaming for Apache Kafka (Amazon MSK)는 다양한 데이터의 메세지 처리 및 스트림 분석으로 활용되는 Apache Kafka를 완전 관리형으로 제공합니다. Amazon MSK는 복잡한 고가용성 구성 및 관리, 브로커 구성, 확장성등을 손쉽게 관리할 수 있게 해줍니다. 또한, Apache Kafka 클러스터 뿐만 아니라 Kafka 커넥터도 서버리스 형태로 제공하여, 다양한 데이터 소스의 데이터 캡쳐를 손쉽게 연결할 수 있습니다. 그 중, Debezium 커넥터는 오픈소스 데이터베이스 커넥터로, 다양한 오픈소스 데이터베이스의 Change Data Capture (CDC) 워크로드 동기화에 활용되어 왔습니다. 데이터의 변환, 조건에 맞춘 데이터의 복제등 조금 더 세밀한 동작 제어가 필요한 경우 아래의 구성을 통하여, 지원되는 소스 들을 활용할 수 있습니다. 사용 방법에 대한 더욱 자세한 내용은 Amazon MSK 소개 블로그에서 참조하실 수 있습니다.
AWS Glue
AWS Glue 서비스를 활용하여, 데이터의 이관 뿐만 아니라 이관된 데이터를 분석계로 통합하여 활용하는 것도 가능합니다. AWS DMS 는 S3를 타겟으로 지원합니다. AWS DMS를 통해 이관된 데이터는 Glue 데이터 카탈로그를 생성하기 위한 Extract, transform, and load (ETL) 및 크롤러 작업을 추가할 필요 없이, DMS에서 바로 Glue 데이터 카탈로그를 생성합니다. 이렇게, S3에 통합된 데이터는 바로 Amazon Redshift Spectrum, Amazon Athena에 쿼리를 수행하여 데이터를 조회할 수 있습니다. 이를 통해 Linked Server와 같이 동일한 쿼리를 수행하는 환경을 구성하는 노력이나, 데이터 통합을 위한 OLTP 워크로드를 분석계로 이관할 수 있어, 더욱 안정적이고 통합된 데이터의 인사이트를 활용할 수 있는 서비스를 구성할 수 있습니다.
결론
이번 블로그에서는 운영하고 있는 데이터베이스 워크로드를 적절한 오픈소스 데이터베이스로 이관하는 방법들과 분석계로 데이터를 통합하기 위한 파이프라인에 대해 살펴보았습니다. 첫번째로 AWS DMS와 AWS SCT를 활용한 데이터베이스의 스키마 변환에 대한 사전 평가 및 실제 데이터의 이동에 대해 알아보았고, 두번째로 Amazon MSK를 활용하여, 데이터의 변환, 조건부 이관 등 조금 더 까다로운 조건들을 처리하기 위한 방법론에 대해 소개하였습니다. 마지막으로는 위 두가지의 기능을 활용하여 데이터를 S3로 통합한 다음 이를 AWS Glue, Amazon Redshift 혹은 Amazon Athena를 활용하여 분석계에서 바로 활용하는 방법을 말씀드렸습니다. 이를 통해, 상용 데이터베이스의 확장성에 대한 걱정, 라이선스의 라이프 사이클에 대한 대응, 그리고 분석계 구성을 통한 라이선스 비용 최적화, 가용성, 안정성, 그리고 비용 효율적인 서비스를 구성할 수 있습니다.