Datastream 및 MongoDB로 실시간 데이터 파이프라인 간소화
Robert Walters
Senior Product Manager Connectors and Things, MongoDB
Paresh Saraf
Partner Solutions Architect, MongoDB
* 본 아티클의 원문은 2021년 6월 23일 Google Cloud 블로그(영문)에 게재되었습니다.
끊임없이 진화하는 디지털 세계에서 경쟁에서 앞서는 기업은 필요한 데이터를 필요한 시점에 바로 사용할 수 있는 기업입니다. 실시간으로 데이터에 액세스하면 회사에서 지속적으로 분석, 계획, 개선할 수 있으므로 전략적 의사결정 능력을 향상하고 전반적인 위험을 완화할 수 있습니다. 목표가 수요 예측을 조정하는 것이든, 고객 쿼리를 해결하는 것이든, 최종 사용자가 필요성을 인지하기 전에 분석을 제공하는 것이든 상관없이 필요한 유용한 정보를 확보하기 위한 첫 번째 단계는 관련 데이터를 가능한 한 빨리 파악하는 것입니다.
그러나 어떤 시스템도 가장 느린 병목 현상보다 빠르게 움직일 수는 없습니다. 데이터가 조직의 여러 영역과 다양한 플랫폼에 있는 경우 노후화된 관계형 데이터베이스로 인해 심각한 정체가 발생하는 경우가 많습니다. 그럼에도 기업은 여전히 이러한 관계형 데이터 저장소에 저장된 데이터와 지속적으로 데이터를 작성하는 애플리케이션에서 방대한 양의 유용한 비즈니스 정보를 얻을 수 있으며, 또 그래야만 합니다. 관건은 어떻게 이를 실현할 수 있느냐입니다.
Google Cloud의 서버리스 변경 데이터 캡처 및 복제 서비스인 Datastream과 MongoDB Atlas를 사용하면 Oracle과 MySQL 같은 기존 관계형 데이터 저장소에서 MongoDB Atlas로 데이터를 지속적으로 스트리밍하는 실시간 분석 파이프라인을 설정할 수 있습니다. 여기에서 애플리케이션은 MongoDB의 기능을 활용하여 비즈니스 의사결정을 향상할 수 있습니다.
MongoDB Atlas는 Google Cloud에서 사용할 수 있는 글로벌 클라우드 데이터베이스 서비스입니다. Atlas는 최대 99.995%*의 가용성, 확장성, 가장 까다로운 데이터 보안 및 개인 정보 보호 표준의 규정 준수를 보장하는 원활한 자동화 및 입증된 관행으로 완전 관리형 MongoDB 클러스터를 배포합니다. MongoDB Atlas에는 전체 텍스트 검색 기능을 애플리케이션에 통합하는 Atlas Search와 추가 도구 없이도 유용한 시각화를 만드는 Atlas Charts 같은 기능이 포함되어 있습니다.
시작하기
기본 요건
- MongoDB Atlas 계정(무료 등급 만들기)
- 관계형 데이터 소스
- Google Cloud 계정
MongoDB Atlas 클러스터 만들기
자체 MongoDB Atlas 클러스터를 만드는 방법에 대한 자세한 내용은 Atlas 시작하기 튜토리얼을 참조하세요. 이 블로그 게시물에서는 Google Cloud를 사용하여 M10 MongoDB Atlas 클러스터를 만들었습니다. 클러스터를 설정할 때 가장 가까운 GCP 리전을 선택하는 것이 좋습니다.
클러스터가 생성되면 연결을 위해 네트워크 액세스와 데이터베이스 액세스라는 두 가지 설정을 구성해야 합니다.
네트워크 액세스
기본적으로 새 MongoDB Atlas 클러스터는 네트워크 연결을 허용하지 않습니다. Dataflow에서 MongoDB Atlas로 보안 네트워크 액세스를 허용하는 방법에는 두 가지 옵션이 있습니다. Google VPC 네트워크 피어링을 사용하거나 Google Cloud에서 Atlas 클러스터로 특정 IP 연결만 허용하여 연결을 보호할 수 있습니다. 이 블로그에서는 모든 IP(0.0.0.0)에서 연결할 수 있도록 Atlas를 설정하겠습니다. 프로덕션 환경에서는 VPC 네트워크 피어링을 사용하거나 허용 목록 IP를 지정하는 것이 좋습니다. MongoDB Atlas 보안에 대한 자세한 내용은 보안 기능 및 설정을 확인하세요.
MongoDB Atlas에서 외부 연결을 허용하려면 Network Access(네트워크 액세스) 메뉴 아래의 'IP Access List(IP 액세스 목록)' 입력 대화상자를 실행하고 'Allow access from anywhere(위치에 상관없이 액세스 허용)'를 선택합니다.
네트워크 액세스를 구성한 후에는 Google Cloud에서 MongoDB Atlas로 연결하는 데 사용할 사용자 계정을 구성할 수 있습니다. Database Access(데이터베이스 액세스) 메뉴에서 사용자 인증을 구성합니다.
데이터베이스 액세스
사용자 이름/비밀번호, 인증서 또는 ID 및 액세스 관리(IAM) 인증 방법을 사용하여 MongoDB Atlas에 인증할 수 있습니다. Google Cloud에서 연결에 사용할 사용자 이름 및 비밀번호를 만들려면 Database Access(데이터베이스 액세스) 메뉴에서 '+ Add new Database User(+ 새 데이터베이스 사용자 추가)' 옵션을 선택합니다.
사용자 이름과 비밀번호를 입력하고 두 가지를 모두 기록해 두세요. 이 블로그 게시물 뒷부분의 Dataflow Flex 템플릿에서 이 사용자 인증 정보가 필요합니다.
소스 관계형 데이터베이스 구성
Datastream은 MySQL과 Oracle을 비롯한 여러 데이터베이스와 다양한 보안 연결 방법을 지원합니다. 시작하기에 앞서 변경 데이터 캡처(CDC)를 위해 데이터베이스를 구성해야 합니다. 여기에서는 MySQL을 데이터 소스로 사용하며, 온라인 문서에 따라 CDC를 활성화했습니다.
Datastream 연결 프로필 구성
변경 데이터 캡처를 위해 데이터베이스를 설정한 후에는 Datastream MySQL 소스와 Cloud Storage 대상 위치 연결 프로필을 구성할 수 있습니다. 이 예시에서는 'source_mysql' 및 'dest_cloudstorage'라고 부릅니다.
Datastream 연결 프로필을 구성하려면 Datastream 연결 프로필 UI에서 '프로필 만들기'를 클릭하고 소스 또는 대상의 관련 유형을 선택합니다.
MySQL 연결 프로필 구성
연결 프로필의 이름을 지정하고 해당 프로필이 위치할 리전과 MySQL 연결 세부정보를 선택합니다.
Cloud Storage 연결 프로필 구성
연결 프로필 이름을 지정하고 해당 프로필이 위치할 리전과 버킷 위치를 선택합니다. 리전은 소스 연결 프로필과 해당 프로필이 사용될 스트림이 저장된 리전과 동일해야 합니다.
참고: 보안을 위해 Compute 서비스 계정 또는 원하는 Dataflow 작업자 서비스 계정에 대한 IAM 권한을 설정해야 합니다. 다음 단계를 수행해야 합니다.
- IAM의 서비스 계정에 Datastream 관리자 역할 권한 부여(소유자는 요청 권한도 부여함)
- Datastream 버킷에 objectReader IAM 권한 부여
두 연결 프로필이 생성되면 연결 프로필 목록에서 확인할 수 있습니다.
스트림 구성
스트림 메뉴에서 '스트림 만들기'를 클릭하여 소스에서 대상으로 스트림을 만듭니다.
스트림 이름과 ID를 입력합니다. '소스 유형'은 관계형 데이터베이스 소스이며, 이 예시에서는 MySQL입니다. 마법사의 안내에 따라 앞서 만든 MySQL 및 Cloud Storage 프로필을 선택합니다. 구성이 완료되면 Datastream이 MySQL에서 발생하는 데이터 변경사항을 가져와 Cloud Storage 버킷에 씁니다.
이제 Dataflow MongoDB 템플릿을 구성할 준비가 되었습니다. 하지만 파일이 Cloud Storage에 저장되어 있기 때문에 Cloud Storage용 Pub/Sub 알림을 사용하는 것이 가장 좋습니다. 이 기능을 사용하면 Dataflow를 사용하여 전체 버킷에서 새 파일을 찾기 위해 Cloud Storage를 계속 검색하는 대신 새 파일을 사용할 수 있게 될 때 알림을 전송하여 Dataflow의 효율성을 높일 수 있습니다.
Pub/Sub 알림 만들기
Pub/Sub 알림을 만들려면 Google Cloud Console에서 사용 가능한 UI가 없기 때문에 gcloud 및 gsutil 명령줄 도구를 사용해야 합니다. Pub/Sub 주제와 구독을 만들고 Cloud Storage 버킷에 알림을 만들어 알림을 사용하도록 설정해 보겠습니다. 다음은 구성 스크립트의 예시입니다.
참고: 나중에 gcloud dataflow deploy 명령어의 --parameters 섹션에 이 구성을 제공합니다.
gcsPubSubSubscription="projects/${PROJECT_ID}/subscriptions/${PUBSUB_SUBSCRIPTION}"
Datastream이 실행되기 전에 알림을 설정해야 합니다. Datastream이 이미 실행 중인 경우 스트림을 다시 만드는 대신 Cloud Storage에 파일 사본을 만들 수 있습니다. 그러면 알림 메커니즘이 트리거됩니다. Dataflow에서 모든 파일을 처리한 후 사본을 삭제할 수 있습니다.
Dataflow 템플릿 만들기
지금까지 Datastream과 Cloud Storage를 만들고 구성했으며 이제 Dataflow를 구성할 준비가 되었습니다. 아직 준비가 되지 않았다면 gcloud services enable dataflow.googleapis.com을 통해 Dataflow를 사용하도록 설정해야 합니다.
Dataflow는 템플릿을 사용하므로 소스와 대상은 물론 데이터에 적용해야 하는 변환 및 기타 로직을 더욱 쉽게 정의할 수 있습니다. 자체 커스텀 자바스크립트 함수를 플러그인하여 커스텀 변환을 수행할 수도 있습니다.
Dataflow MongoDB 템플릿을 활용하려면 GitHub 저장소로 이동하여 README 파일의 안내를 따릅니다. 이 안내는 Dataflow Flex 템플릿 이미지를 빌드하고 Google Container Registry에 배치하는 과정을 설명합니다. 다음으로는 필수 매개변수를 사용하여 Flex 템플릿을 실행하는 방법을 설명하겠습니다. 스크립트에서 고려해야 하는 몇 가지 매개변수가 있습니다.
README의 안내를 따라 템플릿을 실행하면 Dataflow 작업 UI에서 생성된 작업을 볼 수 있습니다. Dataflow MongoDB 템플릿을 배포하면 작업이 실행됩니다.
작업을 선택하면 상세한 작업 그래프, 측정항목, 실행 세부정보 같은 더 많은 세부정보를 확인할 수 있습니다.
실제 작동하는 흐름을 보려면 관계형 데이터베이스에 몇 개의 행을 추가하여 MongoDB Atlas에 표시되는 것을 확인하세요.
실시간으로 더 나은 비즈니스 의사결정 실현
이 게시물에서는 MySQL에서 MongoDB로 데이터를 스트리밍할 수 있도록 Google Cloud 및 MongoDB Atlas에서 구성요소를 설정하고 구성하는 방법을 살펴봤습니다. 실시간 데이터 이동을 간소화하여 유용한 비즈니스 정보를 더 빠르게 수집하고 보다 스마트하고 전략적인 의사결정을 내릴 수 있습니다. 업계에 상관없이 MongoDB Atlas와 Google Cloud를 활용하면 업계를 선도하는 데 도움이 됩니다.
Google Cloud에서 MongoDB를 배포, 관리, 확장하는 자세한 방법은 파트너 페이지를 참조하세요.