개요

항목 내용
기간 2025.12.23 ~ 2026.01.27
역할 의사결정 및 구현 담당
기술 스택 Java/Kotlin, Apache Flink CDC, Kafka, Avro, Confluent Schema Registry
핵심 오픈소스 커스텀으로 Avro + Schema Registry 지원 추가

배경

상품 메타데이터는 CNPG(Cloud Native PostgreSQL)에 저장되어 있었고, 이 역시 MongoDB와 마찬가지로 색인과 통계 등 후처리 작업을 위해 CDC가 필요했습니다.

Flink CDC Pipeline YAML 방식이 PostgreSQL을 지원하므로, Kotlin DataStream API로 직접 코드를 작성하는 것보다 간단한 이 방식을 채택했습니다.


문제

타 부서에서 관리하는 Kafka 환경에서는 Schema Registry + Avro 포맷 사용이 필수였습니다. 그러나 Flink CDC Pipeline YAML 방식은 이를 지원하지 않았습니다.

flowchart LR
    A[PostgreSQL<br>CNPG] --> B[Flink CDC Pipeline<br>YAML 방식]
    B --> C[Kafka]
    C --> D[Schema Registry ❌<br>Avro 미지원 ❌]

선택지는 세 가지였습니다:

선택지 장점 단점
MongoDB처럼 Kotlin DataStream API로 전환 완전한 제어 개발 비용 높음, YAML의 간편함을 포기
Kafka Consumer 쪽에서 변환 CDC 쪽 수정 불필요 아키텍처 복잡도 증가, 타 부서 협의 필요
오픈소스 커스텀 YAML 방식 유지 + 요구사항 충족 유지보수 부담

무엇을 했나

의사결정: 오픈소스 커스텀

오픈소스 커스텀은 유지보수와 문서 관리 등 관리 요소가 증가하지만, AI 에이전트를 적극 활용해 규격화하면 이러한 단점을 극복할 수 있을 것이라 판단했습니다.

구현 내용

flowchart LR
    A[PostgreSQL<br>CNPG] --> B[Flink CDC Pipeline<br>YAML 방식]
    B --> C[커스텀 Kafka Connector]
    C --> D[Avro 직렬화]
    D --> E[Schema Registry 등록]
    E --> F[Kafka]

원래 커넥터 vs 커스텀 범위:

flowchart LR
    A[CDC Source<br>PostgreSQL] --> B[Serialization]
    B --> C[Kafka Producer]
    C --> D[Kafka]

    style B fill:#fff3cd,stroke:#ffc107