파이어스토어와 빅쿼리사이에 Pub/Sub→Dataflow 설계”를 우선 검토한다는 의미는 뭘까?




“Pub/Sub → Dataflow 설계”를 우선 검토하자는 것은, Firestore에 저장된 데이터 변경 이벤트를 직접 BigQuery에 보내기 전에, Google Cloud Pub/Sub와 Dataflow를 스트리밍 파이프라인으로 연결해 처리하는 아키텍처를 먼저 설계·시험해 보자는 뜻입니다. 구체적으로 세 단계로 나뉘는데요:


1. Firestore 변경 이벤트를 Pub/Sub에 발행하기

  • Firestore Trigger

    • Cloud Functions(또는 Cloud Run)를 이용해, Firestore의 문서 생성·수정·삭제 이벤트를 감지

    • 이벤트 발생 시 해당 레코드의 메타데이터(JSON)를 Pub/Sub 토픽에 푸시

  • 장점

    • Firestore와 분석 파이프라인을 완전히 분리 → 애플리케이션 성능에 영향 최소화

    • 변경 이벤트를 메시지 큐에 저장하므로, 장애 시 재처리가 용이


2. Pub/Sub 메시지를 Dataflow(Beam)로 처리

  • Dataflow (Apache Beam 기반)

    • Pub/Sub 토픽으로부터 메시지를 실시간 스트리밍으로 받아 옴

    • 데이터 변환(스키마 매핑, 필터링, 집계), 윈도잉(windowing) 등의 로직 적용

    • 에러가 발생한 레코드는 Dead-letter 토픽으로 분리 관리

  • 설계 고려사항

    1. 스키마 관리: Firestore 문서 구조 변경 시, 파이프라인이 깨지지 않도록 JSON 필드 매핑 로직 수립

    2. 지연 시간(Latency): 실시간성이 중요한지, 몇 초(e.g. 1–5초) 내에 BigQuery 업데이트가 필요한지

    3. 확장성: 초당 메시지량, 성수기 트래픽 급증에 대비한 자동 확장 전략

    4. 모니터링: Dataflow UI / Stackdriver로 처리율·에러율·지연 시간 모니터링


3. Dataflow → BigQuery로 적재

  • Streaming Insert

    • Dataflow 내장 I/O 커넥터로 BigQuery 테이블에 실시간 삽입

    • 또는, 대량 데이터는 Dataflow에서 하루 단위 배치 파일로 GCS에 저장 후 BigQuery Load

  • 장점

    • BigQuery 테이블에 계속 쌓이는 원시 이벤트(원시 로그)와 정제 테이블(분석용 뷰)을 구분

    • ML·대시보드용으로 이상치 탐지·집계 쿼리를 즉시 실행 가능


“우선 검토”해야 하는 이유

  1. 구현 복잡도 vs. 장기 안정성

    • Extension(Firestore → BigQuery)보다 초기 설계·코드 작업은 늘어나지만,

    • 복잡한 변환 로직·모니터링을 체계적으로 갖출 수 있어 장기 운영에 유리

  2. 스트리밍 지연 시간

    • “몇 초 내 분석 결과가 필요한가”에 따라 Pub/Sub→Dataflow가 최적일 수도 있고,

    • 지연 허용 범위가 크면 배치 로드로 전환 고려

  3. 유연한 데이터 전처리

    • 태깅·JSON 필드 확대·윈도잉 집계 등, 코드로 논리를 제어하기 때문에

    • 향후 콘텐츠 메타데이터가 바뀌어도 파이프라인 수정만으로 대응 가능


다음 단계 제안

  • 1. 요구사항 정리: 각 이벤트별 처리 지연 허용 시간, 예상 초당 메시지량, 데이터 변환 요구사항

  • 2. 프로토타입 작성:

    • Firestore 문서 변경 → Pub/Sub 푸시

    • Dataflow 최소 예제(python/java)로 Pub/Sub → BigQuery 스트리밍 삽입

  • 3. 테스트 & 모니터링:

    • 소규모 데이터를 흘려보내 보면서 지연 시간·에러 처리 검증

    • Stackdriver 지표 수집

  • 4. 운영 환경 적용:

    • 파이프라인 자동 확장, Dead-letter 관리, 비용 최적화 방안 수립

이렇게 단계별로 “Pub/Sub → Dataflow” 구조를 먼저 설계·검증해 보면, Firestore와 BigQuery를 잇는 실시간 스트리밍 아키텍처의 장단점을 명확히 파악하고, 장기 운영에 최적화된 방안을 결정할 수 있습니다.

추가로, 구체적인 Cloud Functions 트리거 코드 샘플이나 Dataflow(Beam) 파이프라인 예시가 필요하시면 알려주세요!

댓글 남기기