LabHub

블로그

스트리밍 vs 배치의 재정의: Flink·RisingWave·Materialize, CDC, Streaming SQL, 실시간의 실용주의 (2025)

한국어English日本語中文

Season 5 Ep 2 — Ep 1이 "데이터가 어디에 저장되는가"였다면 Ep 2는 "데이터가 얼마나 빠르게 흐르는가". 2020–2023의 실시간 광풍, 2024–2025의 실용주의로 돌아오기.

Prologue — "실시간은 기본이 아니라 옵션이다"

2019–2022년 데이터 컨퍼런스의 모든 키노트는 "모든 데이터는 실시간이 되어야 한다"였다. 2025년 현실은 다르다:

2025년의 정답:

"데이터별·지표별 SLA 기반으로 신선도 계층을 나누고, 각 계층에 맞는 도구를 쓴다."

이 글은 그 계층과 도구 선택을 구체화한다.


1장 · 신선도 계층 (Freshness Tiers)

1.1 5계층 프레임워크

계층지연예시도구
Real-timems–초거래 모니터링·이상탐지·fraudFlink, Kafka Streams
Near-real-time1–5분운영 대시보드·alertFlink, RisingWave, Materialize
Fresh5–60분재고·광고 최적화Streaming append + rollup
Daily24시간BI, 리포트Spark, dbt, SQL warehouse
Historical주/월분석·ML 학습Batch 연/월

1.2 각 지표·테이블을 계층에 매핑

1.3 의사결정 원칙


2장 · Lambda·Kappa 아키텍처의 2025년 버전

2.1 Lambda (2014)

2.2 Kappa (2014, Jay Kreps)

2.3 2025년: Unified on Lakehouse

2.4 "Streaming + Materialized" 패턴


3장 · 스트리밍 엔진 4대 비교

3.2 Spark Structured Streaming

3.3 Kafka Streams / ksqlDB

3.4 RisingWave

3.5 Materialize

3.6 비교표

엔진지연복잡도SQL한국 사용특징
Flinkms–초높음O많음업계 표준, 상태 관리 강함
Spark SS초–분O매우 많음Databricks 친화
Kafka StreamsksqlDB보통Kafka 내장
RisingWave낮음Postgres증가운영 간편, SaaS/OSS
MaterializeO드묾Incremental view 강점

3.7 선택 가이드


4장 · CDC (Change Data Capture)

4.1 왜 CDC가 핵심인가

4.2 구현 방식

4.3 도구

4.4 CDC → Iceberg 패턴

PostgresDebeziumKafkaFlinkIceberg

4.5 실무 함정


5장 · Iceberg v3와 실시간 Upsert

5.1 Iceberg 버전 히스토리

5.2 Row-level delete 방식 2가지

5.3 실시간 Upsert 워크플로우

  1. Flink가 CDC 이벤트를 읽음
  2. PK 기반으로 Equality delete + insert 생성
  3. Iceberg가 스냅샷에 반영
  4. 주기적 compaction으로 delete 파일 정리

5.4 성능 주의


6장 · Streaming SQL의 부상

6.1 왜 SQL인가

6.3 ksqlDB

6.4 RisingWave의 Postgres 호환

6.5 Materialize


7장 · 비용·지연 트레이드오프

7.1 비용 구성

7.2 대표 비용 비교 (월, 중간 규모 기준)

옵션월 비용지연
배치(Airflow + Spark, 일간)낮음($1–5k)24시간
Micro-batch(5분)중($3–10k)5분
Structured Streaming중–상 ($5–20k)초–분
Flink 클러스터상 ($10–30k+)ms–초
Managed(RisingWave/Confluent)중–상 ($7–25k)

7.3 절감 기법

7.4 지연 타깃별 권장 아키텍처


8장 · 관측성과 디버깅

8.1 핵심 지표

8.2 관측 도구

8.3 디버깅

8.4 경보


9장 · 장애·복구·SLA

9.1 SLA 설계

9.2 복구 전략

9.3 재처리

9.4 Multi-region


10장 · 스트리밍 + Lakehouse 실전 패턴

10.1 Medallion 위 스트리밍

10.2 CDC → Silver

10.3 이벤트 소싱

10.4 실시간 Feature Store

10.5 Streaming ETL 파이프라인


11장 · 실전 케이스 3

11.1 이커머스 주문 파이프라인

11.2 금융 거래 모니터링

11.3 게임 텔레메트리


12장 · 한국 기업의 스트리밍

12.1 전통적 패턴

12.2 최신 동향

12.3 규제 고려

12.4 난관


13장 · 안티패턴 10선

13.1 "모든 걸 실시간"

필요 없는 테이블까지 스트리밍 → 비용·복잡도 폭증.

13.2 Exactly-once 맹신

소스·싱크 양쪽에서 E2E exactly-once 보장이 쉽지 않음. 멱등 설계 필수.

13.3 CDC 초기 스냅샷 생략

누락 발생, 정확성 저하.

13.4 스키마 변경 자동 전파 없음

다운스트림 파이프라인 깨짐.

13.5 Kafka retention 너무 짧음

재처리 불가능.

13.6 체크포인트 주기 너무 김

장애 시 복구 비용·재처리량 폭증.

13.7 상태 무제한 보관

Flink keyed state 무한 증가 → OOM.

13.8 Delete 파일 compaction 없음

Iceberg 읽기 성능 저하.

13.9 메모리·CPU 과소할당

Back-pressure 연쇄.

13.10 관측성·경보 부재

사고를 고객이 먼저 발견.


14장 · 체크리스트 — 스트리밍 런칭 전 12가지


15장 · 다음 글 예고 — Season 5 Ep 3: "OLAP 엔진 2025 비교"

스트리밍과 배치가 저장소를 공유하게 됐다면, 다음 질문은 "그 위에서 누가 가장 빠르게 쿼리하나?".

"하나의 엔진이 모든 걸 하진 못한다"는 2025년의 현실을 인정한 뒤가 진짜 재미있다.

다음 글에서 만나자.


요약: 2025년 스트리밍은 "모두 실시간"에서 "SLA 기반 신선도 계층"으로 재정의됐다. Real-time / Near-real-time / Fresh / Daily / Historical 5계층에 맞춰 Flink·Spark SS·RisingWave·Materialize·ksqlDB를 배치하고, CDC로 운영 DB의 변화를 Lakehouse로 흘리고, Iceberg v3의 row-level delete로 실시간 upsert를 처리한다. Lambda/Kappa 대신 "Unified on Lakehouse"가 지배 패턴이며, 비용·지연·복잡도의 트레이드오프를 의식적으로 설계한다. "실시간이 기본이 아니라 옵션" — 이것이 2025년의 실용주의다.

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다