Lambda, Kappa и Medallion Architecture
Lambda Architecture: Batch + Stream
Проблема Lambda
[NO] Lambda downsides:
- Два стека кода (batch + stream) для одной логики
- Синхронизация результатов (serving merge) — сложно
- Двойное тестирование, двойной debugging
- Команда должна знать и Spark, и Flink
Kappa Architecture: Stream-Only
Jay Kreps (Confluent/Kafka) предложил Kappa: всё через stream:
[OK] Kappa advantages:
- Один стек кода
- Simpler architecture
- Replay: перечитать Kafka topic для reprocessing
[NO] Kappa limitations:
- Не всё естественно выражается как stream
- Heavy aggregations (yearly reports) дороже в streaming
- Backfill сложен (replay all history)
Medallion Architecture: Bronze → Silver → Gold
Medallion (multi-hop) — доминирующий паттерн для lakehouse:
Medallion Rules
Bronze Layer Rules:
- Store raw data exactly as received
- Never modify — append only
- Partition by ingestion timestamp
- Keep forever (or long retention) — source of truth for replay
- Schema: flexible (JSON, raw Parquet)
Silver Layer Rules:
- Clean: remove duplicates, fix types, handle nulls
- Validate: schema enforcement, data quality checks
- Conform: standardize formats (dates, currencies, names)
- Partition by business date (event_date, not ingestion_date)
- SCD Type 2 for slowly changing dimensions
Gold Layer Rules:
- Business-level aggregations (revenue, KPIs, metrics)
- Star schema for BI tools (fact + dimension tables)
- Feature tables for ML
- Pre-computed, optimized for read performance
- Partitioned/clustered for common query patterns
Когда какой паттерн
| Паттерн | Когда использовать | Когда НЕ использовать |
|---|---|---|
| Lambda | Real-time + batch с разными SLA | Маленькая команда (too complex) |
| Kappa | Всё event-driven, stream-first | Heavy batch aggregations |
| Medallion | Lakehouse, progressive quality | Simple single-table pipeline |
| ELT + dbt | DWH-centric, SQL transforms | Streaming workloads |
Современный default: Medallion + ELT
Medallion architecture (Bronze/Silver/Gold) в Lakehouse (Delta/Iceberg) с dbt для Silver→Gold transforms — доминирующий паттерн. Lambda уходит (too complex). Kappa — для streaming-native companies (Confluent, Uber).
Data Mesh: организационный паттерн
Data Mesh — не техническая архитектура, а организационный подход:
Data Mesh principles:
1. Domain ownership: каждая команда владеет своими данными
2. Data as product: данные = продукт с SLA, docs, quality
3. Self-serve platform: общая инфраструктура для всех доменов
4. Federated governance: общие стандарты, domain-specific решения
Data Mesh ≠ техническое решение
Data Mesh — про организацию, не про инструменты. Можно использовать Medallion architecture внутри каждого domain. Data Mesh решает проблему “one central data team” → “domain teams own their data products”.