많은 기업에서 MongoDB를 운영 데이터 스토어로 사용하고 복잡한 분석을 수행하여 해당 데이터의 가치를 강화하려고 합니다. 이렇게 하려면 MongoDB 데이터를 집계하고 분석을 수행할 수 있는 데이터 웨어하우스로 이동해야 합니다. 이 참조 아키텍처는 Google Cloud에서 이 통합 파이프라인을 구성하는 방법을 설명합니다.
이 아키텍처에서는 Dataflow 템플릿을 사용하여 MongoDB Atlas의 데이터를 BigQuery에 통합합니다. 이러한 Dataflow 템플릿은 MongoDB에서 사용하는 문서 형식을 BigQuery에서 사용하는 열 형식으로 변환합니다. 이러한 템플릿은 이 변환을 수행하기 위해 Apache Beam 라이브러리를 사용합니다. 따라서 이 문서에서는 사용자가 MongoDB에 익숙하고 Dataflow 및 Apache Beam에 익숙하다고 가정합니다.
아키텍처
다음 다이어그램은 이 솔루션을 배포할 때 사용하는 참조 아키텍처를 보여줍니다. 이 다이어그램은 다양한 Dataflow 템플릿이 MongoDB에서 BigQuery 데이터 웨어하우스로 데이터를 이동하고 변환하는 방법을 보여줍니다.
다이어그램에서 볼 수 있듯이 이 아키텍처는 다음 3가지 템플릿을 기반으로 합니다.
- MongoDB to BigQuery 템플릿. 이 Dataflow 템플릿은 MongoDB에서 문서를 읽고 해당 데이터를 분석할 수 있는 BigQuery에 쓰는 일괄 파이프라인입니다. 원하는 경우 JavaScript에서 사용자 정의 함수(UDF)를 작성하여 이 템플릿을 확장할 수 있습니다. 샘플 UDF는 운영 효율성을 참조하세요.
- BigQuery to MongoDB 템플릿. 이 Dataflow 템플릿은 BigQuery에서 분석된 데이터를 읽고 MongoDB에 쓰는 데 사용할 수 있는 일괄 템플릿입니다.
MongoDB to BigQuery(CDC) 템플릿. 이 Dataflow 템플릿은 MongoDB 변경 내역에서 작동하는 스트리밍 파이프라인입니다. MongoDB 변경 내역의 변경사항을 Pub/Sub에 푸시하는 게시자 애플리케이션을 만듭니다. 그런 다음 파이프라인은 Pub/Sub에서 JSON 레코드를 읽고 BigQuery에 씁니다. MongoDB to BigQuery 템플릿과 마찬가지로 UDF를 작성하여 이 템플릿을 확장할 수 있습니다.
MongoDB to BigQuery(CDC) 템플릿을 사용하여 MongoDB 컬렉션에서 발생하는 모든 변경사항이 Pub/Sub에 게시되도록 할 수 있습니다. MongoDB 변경 내역을 설정하려면 MongoDB 문서의 변경 내역에 있는 안내를 따르세요.
사용 사례
BigQuery를 사용하여 MongoDB Atlas 데이터를 분석하는 서비스는 금융 서비스, 소매, 제조 및 물류, 게임 애플리케이션을 비롯한 다양한 산업에서 유용할 수 있습니다.
금융 서비스
Google Cloud와 MongoDB Atlas는 오늘날의 금융 기관의 복잡하고 변화하는 데이터 요구사항을 처리하기 위한 솔루션을 제공합니다. BigQuery를 사용하여 MongoDB Atlas에서 재무 데이터를 분석하면 다음 태스크를 위한 솔루션을 개발할 수 있습니다.
- 실시간 사기 감지. 금융 기관은 실시간으로 허위성 거래를 감지하고 방지하려고 합니다. BigQuery에서 머신러닝(ML)을 사용하고 고객 행동 데이터를 분석하여 사기를 나타내는 패턴을 식별할 수 있습니다.
- 맞춤형 고객 경험. 금융 기관은 맞춤형 고객 환경을 제공하는 데에도 관심이 있습니다. BigQuery에 고객 데이터를 저장하고 분석하여 맞춤 추천을 생성하고, 맞춤형 제품 및 서비스를 제공하고, 더 나은 고객지원을 제공하는 솔루션을 만들 수 있습니다.
- 리스크 관리. 금융 기관은 항상 위험을 식별하고 완화하는 데 도움이 되는 프로세스를 원합니다. BigQuery에서 다양한 소스의 데이터를 분석하면 잠재적인 위험을 나타내는 패턴과 추세를 식별하는 데 도움이 됩니다.
Retail
고객 데이터를 스마트 데이터 사용과 제품 데이터 및 실시간 맞춤형 참여와 결합하여 미래 전자상거래를 정의합니다. 소매업체는 고객의 요구사항을 충족하기 위해 데이터를 수집하고 분석하여 데이터를 기반으로 의사 결정을 내려야 합니다. BigQuery 및 MongoDB Atlas를 사용하면 고객 데이터를 사용하여 다음 영역과 같은 맞춤설정에서 혁신을 이룰 수 있습니다.
- 옴니채널 상거래. MongoDB를 사용하여 온라인 및 오프라인 매장, 모바일 앱, 소셜 미디어와 같은 다양한 소스에서 데이터를 저장하고 관리하세요. BigQuery 분석과 함께 제공되는 데이터 저장 및 관리는 모든 채널에서 고객에게 원활한 환경을 제공해야 하는 옴니채널 소매업체에 적합합니다.
- 실시간 통계. BigQuery를 사용하여 고객, 인벤토리, 판매 실적에 대한 실시간 통계를 얻을 수 있습니다. 이러한 통계는 가격 책정, 프로모션, 간접 광고에 대해 보다 나은 결정을 내리는 데 도움이 됩니다.
- 맞춤 추천. 맞춤 추천 엔진을 통해 소매업체가 판매와 고객 만족도를 높일 수 있습니다. 고객 데이터를 저장 및 분석하여 각 개별 고객이 관심을 가질 만한 제품을 추천하는 데 사용할 수 있는 패턴과 트렌드를 식별할 수 있습니다.
제조 및 물류
BigQuery에서 MongoDB 데이터를 분석하면 제조 및 물류 산업에서 다음과 같은 이점도 얻을 수 있습니다.
- 실시간 정보 파악. 작업에 대해 실시간으로 파악할 수 있습니다. 이를 통해 프로덕션, 인벤토리, 배송에 대해 보다 나은 결정을 내릴 수 있습니다.
- 공급망 최적화. 공급망 불확실성을 관리하고 여러 소스의 데이터를 분석하면 비용을 줄이고 효율성을 높일 수 있습니다.
게임
또한 BigQuery의 분석을 통해 게임 개발자와 게시자는 최첨단 게임을 만들고 다음을 포함한 탁월한 게임 환경을 제공할 수 있습니다.
- 실시간 게임플레이. 분석을 사용하여 실시간 게임 플레이 환경을 만들어 리더보드, 매치메이커 시스템, 멀티플레이어 기능을 생성할 수 있습니다.
- 맞춤형 플레이어 환경. 인공지능(AI)과 ML을 사용하여 타겟팅된 추천을 제공하고 플레이어에게 게임 환경을 맞춤설정할 수 있습니다.
- 게임 분석. 게임 데이터를 분석하여 게임 설계, 게임플레이, 비즈니스 의사결정을 개선하는 데 도움이 되는 트렌드와 패턴을 파악할 수 있습니다.
설계 대안
Dataflow 템플릿을 MongoDB에서 BigQuery로의 통합 파이프라인으로 사용하는 방법에는 두 가지가 있습니다. BigQuery 구독을 사용하는 Pub/Sub 또는 Confluent Cloud입니다.
BigQuery 구독을 사용하는 Pub/Sub
Dataflow 템플릿을 사용하는 대신 Pub/Sub를 사용하여 MongoDB 클러스터와 BigQuery 간에 통합 파이프라인을 설정할 수 있습니다. Dataflow 대신 Pub/Sub를 사용하려면 다음 단계를 따르세요.
- MongoDB 변경 내역에서 메시지를 수집하도록 Pub/Sub 스키마 및 주제를 구성합니다.
메시지가 수신되면 기존 BigQuery 테이블에 메시지를 쓰는 Pub/Sub의 BigQuery 구독을 만듭니다. BigQuery 구독을 사용하지 않는 경우에는 가져오기/내보내기 구독과 메시지를 읽고 BigQuery에 쓰는 구독자(예: Dataflow)가 필요합니다.
MongoDB에 삽입된 새 문서를 리슨하고 Pub/Sub에 사용되는 스키마와 일치하는 변경 내역을 설정합니다.
이 대안에 대한 자세한 내용은 Pub/Sub BigQuery 구독을 사용하여 MongoDB 변경 내역용 데이터 파이프라인 만들기를 참조하세요.
Confluent Cloud
MongoDB 변경 내역을 모니터링하기 위해 자체 게시자 애플리케이션을 만들지 않으려면 대신 Confluent Cloud를 사용할 수 있습니다. 이 접근 방식에서는 Confluent를 사용하여 MongoDB 데이터 스트림을 읽도록 MongoDB Atlas 소스 커넥터를 구성합니다. 그런 다음 Confluent 클러스터의 데이터를 BigQuery로 싱크하도록 BigQuery 싱크 커넥터를 구성합니다.
이 대안에 대한 자세한 내용은 Confluent 커넥터를 사용하여 MongoDB에서 BigQuery로 데이터 스트리밍을 참조하세요.
설계 고려사항
MongoDB Atlas to BigQuery 솔루션을 만들 때 다음 사항을 고려해야 합니다.
보안, 개인정보 보호, 규정 준수
통합 파이프라인을 실행하면 Dataflow가 다음 두 서비스 계정을 사용하여 보안 및 권한을 관리합니다.
- Dataflow 서비스 계정. Dataflow 서비스는 Dataflow 서비스 계정을 작업 생성 요청의 일부로 사용합니다(예: 프로젝트 할당량 확인 및 사용자 대신 작업자 인스턴스 생성). 또한 Dataflow 서비스는 이 계정을 사용하여 작업 실행 중에 작업을 관리합니다. 이 계정을 Dataflow 서비스 에이전트라고도 합니다.
- 작업자 서비스 계정.
작업자 인스턴스는 사용자가 작업을 제출한 후 작업자 서비스 계정을 사용하여 입력 리소스와 출력 리소스에 액세스합니다. 기본적으로 작업자는 프로젝트의 Compute Engine 기본 서비스 계정을 작업자 서비스 계정으로 사용합니다. 작업자 서비스 계정에는
roles/dataflow.worker
가 있어야 합니다.
또한 Dataflow 파이프라인은 Google Cloud 리소스에 액세스할 수 있어야 합니다. 이 액세스를 허용하려면 Dataflow 작업을 실행하는 동안 프로젝트에서 리소스에 액세스할 수 있도록 Dataflow 프로젝트의 작업자 서비스 계정에 필요한 역할을 부여해야 합니다. 예를 들어 작업이 BigQuery에 쓰는 경우 서비스 계정에는 최소한 테이블 또는 업데이트할 다른 리소스에 대한 roles/bigquery.dataEditor
역할이 있어야 합니다.
비용 최적화
Dataflow 템플릿 실행 비용은 예약된 워커 노드와 파이프라인 유형에 따라 달라집니다. 비용을 알아보려면 Dataflow 가격 책정을 참조하세요.
각 Dataflow 템플릿은 하나의 MongoDB 컬렉션에서 하나의 BigQuery 테이블로 데이터를 이동하는 작업을 처리할 수 있습니다. 따라서 컬렉션 수가 증가하면 Dataflow 템플릿을 활용하는 비용도 증가할 수 있습니다.
운영 효율성
MongoDB 데이터를 효율적으로 사용하고 분석하려면 해당 데이터의 커스텀 변환을 수행해야 할 수 있습니다. 예를 들어 대상 스키마와 일치하거나 민감한 정보를 수정하거나 출력에서 일부 요소를 필터링하도록 MongoDB 데이터를 리포맷해야 할 수 있습니다. 이러한 변환을 수행해야 하는 경우 템플릿 코드를 수정하지 않고도 UDF를 사용하여 MongoDB의 기능을 BigQuery 템플릿으로 확장할 수 있습니다.
UDF는 JavaScript 함수입니다. UDF는 JSON 문자열을 수신하고 반환해야 합니다. 다음 코드는 변환 예시를 보여줍니다.
/**
* A simple transform function.
* @param {string} inJson
* @return {string} outJson
*/
function transform(inJson) {
var outJson = JSON.parse(inJson);
outJson.key = "value";
return JSON.stringify(outJson);
}
UDF를 만드는 방법에 대한 자세한 내용은 Dataflow 템플릿에 대한 사용자 정의 함수 만들기를 참조하세요.
UDF를 만든 후에는 이 UDF를 사용하도록 다음 단계를 수행하여 MongoDB to BigQuery 템플릿으로 확장해야 합니다.
- 먼저 UDF가 포함된 JavaScript 파일을 Google Cloud Storage에 로드해야 합니다.
- 그런 다음 템플릿에서 Dataflow 작업을 만들 때 다음 템플릿 매개변수를 설정해야 합니다.
javascriptDocumentTransformGcsPath
매개변수를 JavaScript 파일의 Cloud Storage 위치로 설정합니다.javascriptDocumentTransformFunctionName
매개변수를 UDF의 이름으로 설정합니다.
UDF로 템플릿을 확장하는 방법에 대한 자세한 내용은 MongoDB to BigQuery 템플릿을 참조하세요.
성능 최적화
MongoDB에서 BigQuery로의 변환 성능은 다음 요소에 따라 달라집니다.
- MongoDB 문서 크기
- MongoDB 컬렉션 수
- 변환에 고정 스키마 또는 다양한 스키마 사용 여부
- JavaScript 기반 UDF를 사용하는 스키마 변환에 대한 구현팀의 지식
Deployment
이 참조 아키텍처를 배포하려면 MongoDB와 Google Cloud 간에 데이터 변환 배포를 참조하세요.
다음 단계
- Google Dataflow 템플릿을 맞춤설정하려면 GitHub에서 템플릿을 참조하기
- Cloud 기술 부스트에서 MongoDB Atlas 및 Google Cloud 솔루션에 대해 자세히 알아보기
- 이 참조 아키텍처에서 사용되는 Google Cloud 제품에 대해 자세히 알아보기
- 그 밖의 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항을 알아보려면 클라우드 아키텍처 센터를 확인하세요.
참여자
저자:
- Saurabh Kumar | ISV 파트너 엔지니어
- Venkatesh Shanbhag | 선임 솔루션 설계자(MongoDB)
기타 참여자:
- Jun Liu | 지원 기술 책임자
- Maridi Raju Makaraju | 지원 가능성 기술 책임자
- Sergei Lilichenko | 솔루션 설계자
- Shan Kulandaivel | 그룹 제품 관리자