LESSON 30分

ストーリー

田中VPoE
データ戦略が決まったら、次はそれを実現するアーキテクチャを選ぶ必要がある。データ処理にはいくつかの代表的なアーキテクチャパターンがある
あなた
Lambda Architectureは聞いたことがあります。バッチとストリームを組み合わせるやつですよね
田中VPoE
そうだ。ただし、Lambda Architectureには課題もある。バッチとストリームで同じロジックを二重実装する必要があるからだ。それを解決するためにKappa Architectureが生まれた。さらに最近ではData Mesh、Medallion Architectureといった新しいパターンも登場している
あなた
用途に応じて使い分けが必要なんですね
田中VPoE
その通り。万能なアーキテクチャは存在しない。組織のデータ成熟度、チームのスキル、ビジネス要件に応じて最適なパターンを選ぶ判断力が必要だ

Lambda Architecture

概要

バッチ処理とストリーム処理を組み合わせ、正確性とリアルタイム性を両立するアーキテクチャ。

Lambda Architecture:

                   ┌──────────────────────────┐
                   │      Batch Layer          │
                   │  (全データの再処理)         │
データソース ──────→│  Spark / Hive             │──→ Batch View
      │            └──────────────────────────┘        │
      │                                                 │
      │            ┌──────────────────────────┐        ├──→ Serving Layer
      │            │      Speed Layer          │        │    (クエリ応答)
      └───────────→│  (リアルタイム処理)         │──→ Real-time View
                   │  Kafka Streams / Flink    │
                   └──────────────────────────┘

メリットとデメリット

観点メリットデメリット
正確性バッチ層で全データを再処理し正確な結果を保証バッチとストリームのロジック二重実装
リアルタイム性スピード層でリアルタイム近似結果を提供運用が複雑(2つのパイプライン管理)
耐障害性バッチ層がマスターとして機能し、障害から回復可能デバッグが困難

Kappa Architecture

概要

ストリーム処理のみで構成し、Lambda Architectureの複雑さを解消するアーキテクチャ。

Kappa Architecture:

                   ┌──────────────────────────┐
                   │     イベントログ            │
データソース ──────→│  (Kafka等の永続キュー)       │
                   └────────────┬─────────────┘

                   ┌────────────┴─────────────┐
                   │     Stream Processing     │
                   │  (Flink / Kafka Streams)  │
                   └────────────┬─────────────┘

                   ┌────────────┴─────────────┐
                   │     Serving Layer         │
                   │  (クエリ応答)              │
                   └──────────────────────────┘

Lambda vs Kappa

観点LambdaKappa
処理方式バッチ + ストリームストリームのみ
ロジックの重複あり(二重実装)なし(単一ロジック)
運用の複雑さ高い低い
過去データの再処理バッチ層で容易ログの再生で実現(設計が必要)
適用場面正確性が最重要(金融等)リアルタイム性が重要、ロジックが頻繁に変わる場面

ETL vs ELT

パラダイムシフト

観点ETL(Extract-Transform-Load)ELT(Extract-Load-Transform)
変換タイミングロード前にステージングで変換ロード後にDWH内で変換
変換場所専用のETLサーバーDWHのコンピュートリソース
スケーラビリティETLサーバーがボトルネックDWHのスケーラビリティを活用
柔軟性スキーマ変更に弱い生データが残るため柔軟
代表的ツールInformatica, Talenddbt, Spark SQL
現在のトレンドレガシーシステムで多いモダンデータスタックの主流
ETL:
  [ソース] → Extract → Transform → Load → [DWH]

                    ステージングで変換
                    (スキーマが固定)

ELT:
  [ソース] → Extract → Load → [DWH] → Transform → [データマート]

                                    DWH内で変換
                                    (dbt等で柔軟に)

「ELTの最大のメリットは、生データが残ることだ。ビジネス要件が変わっても、生データから新しいモデルを作り直せる。ETLでは変換済みデータしか残らないため、やり直しができない」 — 田中VPoE


データパイプラインのパターン

バッチ vs ストリーム vs マイクロバッチ

パターン処理頻度レイテンシ適用場面
バッチ日次/時間次分〜時間日次レポート、月次集計
マイクロバッチ数秒〜数分秒〜分ニアリアルタイム分析、Spark Streaming
ストリームイベント単位ミリ秒〜秒リアルタイムアラート、不正検知

選択基準

要件推奨パターン
レイテンシ要件が「翌日」で十分バッチ
数分以内のデータ反映が必要マイクロバッチ
秒以内のリアルタイム処理が必要ストリーム
コスト最適化を重視バッチ(オフピーク時間帯に実行)
データ量が極めて大きいバッチ or マイクロバッチ

まとめ

ポイント内容
Lambda Architectureバッチとストリームの二重構成で正確性とリアルタイム性を両立
Kappa Architectureストリーム処理のみで構成し、ロジックの二重実装を排除
ETL vs ELTモダンデータスタックではELT(ロード後に変換)が主流
パイプラインパターンバッチ・マイクロバッチ・ストリームをレイテンシ要件で使い分ける

チェックリスト

  • Lambda ArchitectureとKappa Architectureの違いを説明できる
  • ETLとELTの違いとトレンドを理解した
  • バッチ/マイクロバッチ/ストリームの使い分け基準を説明できる
  • 自組織のデータ処理要件に最適なアーキテクチャを選定できる

次のステップへ

次は「Data Meshの考え方」を学びます。中央集権的なデータチームに依存せず、各ドメインチームがデータの所有権を持つ分散型アーキテクチャを理解しましょう。


推定読了時間: 30分