MongoDB Atlas와 Google Cloud 간의 데이터 변환

Last reviewed 2023-12-13 UTC

많은 기업에서 MongoDB를 운영 데이터 스토어로 사용하고 복잡한 분석을 수행하여 해당 데이터의 가치를 강화하려고 합니다. 이렇게 하려면 MongoDB 데이터를 집계하고 분석을 수행할 수 있는 데이터 웨어하우스로 이동해야 합니다. 이 참조 아키텍처는 Google Cloud에서 이 통합 파이프라인을 구성하는 방법을 설명합니다.

이 아키텍처에서는 Dataflow 템플릿을 사용하여 MongoDB Atlas의 데이터를 BigQuery에 통합합니다. 이러한 Dataflow 템플릿은 MongoDB에서 사용하는 문서 형식을 BigQuery에서 사용하는 열 형식으로 변환합니다. 이러한 템플릿은 이 변환을 수행하기 위해 Apache Beam 라이브러리를 사용합니다. 따라서 이 문서에서는 사용자가 MongoDB에 익숙하고 Dataflow 및 Apache Beam에 익숙하다고 가정합니다.

아키텍처

다음 다이어그램은 이 솔루션을 배포할 때 사용하는 참조 아키텍처를 보여줍니다. 이 다이어그램은 다양한 Dataflow 템플릿이 MongoDB에서 BigQuery 데이터 웨어하우스로 데이터를 이동하고 변환하는 방법을 보여줍니다.

MongoDB Atlas와 Google Cloud 간의 데이터 변환을 위한 아키텍처

다이어그램에서 볼 수 있듯이 이 아키텍처는 다음 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를 사용하려면 다음 단계를 따르세요.

  1. MongoDB 변경 내역에서 메시지를 수집하도록 Pub/Sub 스키마 및 주제를 구성합니다.
  2. 메시지가 수신되면 기존 BigQuery 테이블에 메시지를 쓰는 Pub/Sub의 BigQuery 구독을 만듭니다. BigQuery 구독을 사용하지 않는 경우에는 가져오기/내보내기 구독과 메시지를 읽고 BigQuery에 쓰는 구독자(예: Dataflow)가 필요합니다.

  3. 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 간에 데이터 변환 배포를 참조하세요.

다음 단계

참여자

저자:

기타 참여자: