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
MaterializeOIncremental 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 EC の注文パイプライン

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 比較」

ストリーミングとバッチがストレージを共有するようになったなら、次の問いは「その上で誰が最も速くクエリするのか」だ。

1つのエンジンがすべてをこなすわけではない」という 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年の実用主義だ。

コメント

まだコメントはありません。

ログインするとコメントできます