개요

항목 내용
기간 2025.08 ~ 2026.02
역할 설계 및 구축 주도
기술 스택 Kotlin, Apache Flink, Kafka, MongoDB, Debezium CDC, Kubernetes, ArgoCD
파이프라인 MongoDB → Kafka → Hadoop

배경

다나와 플랫폼에서 MongoDB에 입력되는 상품 데이터는 색인(검색), 통계, 레거시 시스템 역마이그레이션 등 다양한 후처리 작업이 필요했습니다. 이 데이터를 Hadoop 기반 후처리 시스템으로 실시간 적재해야 했으나, 기존에는 이를 위한 파이프라인이 존재하지 않았습니다.

flowchart LR
    A[상품 데이터 입력] --> B[MongoDB]
    B --> C[???]
    C --> D[Hadoop 후처리]
    D --> E[색인/검색]
    D --> F[통계]
    D --> G[레거시 역마이그레이션]

문제


무엇을 했나

1단계: 기술 선택 — Flink SQL vs Kotlin DataStream API

초기에는 Flink SQL(Streampark)로 프로토타이핑을 진행했습니다.

비교 항목 Flink SQL (Streampark) Kotlin DataStream API
개발 편의성 높음 (SQL 기반) 보통 (코드 작성 필요)
Before/After Diff 처리 제한적 ❌ 완전 제어 가능 ✅
MongoDB CDC 지원 Pipeline API 미지원 Debezium 직접 활용
커스텀 로직 어려움 자유로움

핵심 요구사항인 Before/After Diff 처리가 Flink SQL로는 제한적이라는 문제를 식별하고 보고하여, Kotlin DataStream API 기반으로 전환하는 의사결정을 주도했습니다.

2단계: 파이프라인 아키텍처

flowchart TD
    A[MongoDB Change Stream] --> B[Debezium CDC]
    B --> C[Flink DataStream<br>Kotlin 코드]
    C --> D[Before/After Diff 처리]
    D --> E[Kafka Producer]
    E --> F[Kafka Topics]
    F --> G[Hadoop 적재]
    
    subgraph Kubernetes
        H[Flink Operator] --> C
        I[ArgoCD] --> H
    end

3단계: 배포 파이프라인