실시간 요구에 빠르게 답하려 Spark Structured Streaming·Kafka·Airflow로 시작한 스트리밍 파이프라인이, 확장성 한계에 부딪혀 Managed Flink를 거쳐 Flink Kubernetes Operator 자체 운영으로 진화한 과정을 담는다. '작동하는 파이프라인'에서 '견고한 self-service 플랫폼'으로 넘어가는 단계별 판단이 핵심이다.
핵심 포인트- 초기엔 이미 쓰던 Kafka·Spark로 빠르게 만들고 참조 table은 Airflow가 하루 한 번 재시작하는 값싼 방식을 택했지만, EMR 종료와 application lifecycle 결합·매일 재시작·scale-out 부족이 한계로 드러남
- 설계 시간이 충분한 MyData workload부터 낮은 latency의 Flink를 managed service로 도입했다가, 비용 급증·version/설정 제약·debugging 어려움 때문에 기존 Kubernetes cluster·spot instance를 공유하는 Flink Kubernetes Operator로 재이전 (19개 app 기준 비용 62%, 연 약 1억 1,300만 원 절감)
- Schema Registry로 type·null·호환성을 발행 단계에서 강제하고 Avro·Protobuf로 payload 축소, business rule 위반 event는 DLQ로 격리, source-sink 건수 비교와 Iceberg 원본 backup·StarRocks 실시간 serving으로 조용한 누락을 조기 탐지
- 최소한의 Flink 지식만으로 YAML·SQL·UDF·notebook으로 파이프라인을 만드는 self-service 플랫폼으로 확장, 다음 목표는 Paimon lakehouse
왜 읽나스트리밍 인프라를 어디까지 관리형에 맡기고 언제 자체 운영으로 넘어갈지 고민하는 데이터 플랫폼 팀에게, 비용·통제·안정성을 저울질하며 진화시킨 의사결정 레퍼런스.