| 항목 | 내용 |
|---|---|
| 기간 | 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