ETL/ELT & Datové Pipeline
Pipeline, který selže v tichu, je horší než žádný pipeline.
Stavíme datové pipeline s produkčním přístupem — monitoring, alerting, retry logika, data quality checks. Airflow, dbt, Spark — volíme podle vašich požadavků, ne podle hype.
Proč potřebujete robustní datové pipeline¶
Datové pipeline jsou páteří každé datové platformy. Bez spolehlivého přesunu a transformace dat nemáte reporting, nemáte analytics, nemáte AI. A přesto většina firem řeší pipeline jako afterthought — skripty v cronu, ruční exporty, nehlídané joby.
Důsledky špatných pipeline¶
- Tichá selhání: Pipeline spadne v noci, ráno dashboard ukazuje včerejší data, nikdo neví proč
- Nekonzistentní data: Různé pipeline transformují stejná data různě, čísla se neshodují
- Žádná opakovatelnost: Ruční skripty, které rozumí jeden člověk — ten, co odešel minulý měsíc
- Nulová viditelnost: Nevíte, co běží, jak dlouho, jestli doběhlo, jestli data prošla quality checks
Náš přístup k datovým pipeline¶
Apache Airflow — orchestrace¶
Airflow je de facto standard pro orchestraci datových workflow. DAG-based přístup umožňuje definovat závislosti mezi úlohami, retry logiku, SLA monitoring a paralelní zpracování.
Co implementujeme: - DAG design s jasnými závislostmi a izolovanými tasky - Taskflow API pro čistší Python kód - Custom operátory pro specifické zdroje (SAP, Salesforce, interní API) - Connection management s Vault/Secret Manager - SLA alerting — pipeline musí doběhnout do definovaného času - Backfill — přepracování historických dat bez duplikátů
dbt — transformace jako kód¶
dbt (data build tool) přináší software engineering best practices do datových transformací. SQL-first přístup, verzování v Gitu, automatické testování, dokumentace a lineage.
Proč dbt: - Verzování: Každá transformace v Gitu, code review před deployem - Testování: Schema testy (unique, not_null, accepted_values), custom data testy - Dokumentace: Automaticky generovaná dokumentace s lineage grafem - Incremental processing: Zpracování pouze nových/změněných dat, ne celé tabulky - Jinja templating: DRY principy v SQL, parametrizované modely
Streaming pipeline¶
Pro use cases vyžadující nízkou latenci stavíme streaming pipeline:
- Kafka + Kafka Streams: Jednoduché transformace, filtering, enrichment v reálném čase
- Apache Flink: Komplexní stream processing s windowing, complex event processing
- Spark Structured Streaming: Micro-batch processing pro near-real-time scénáře
Error handling a resilience¶
Každá pipeline má definovanou strategii pro selhání:
- Retry s exponential backoff — transient chyby (network timeout, rate limit) se řeší automaticky
- Dead letter queue — záznamy, které nelze zpracovat, jdou do DLQ pro manuální review
- Circuit breaker — pokud zdrojový systém opakovaně selhává, pipeline ho dočasně přestane volat
- Idempotence — opakované spuštění pipeline nevytvoří duplicity
- Checkpointing — při selhání pipeline pokračuje od posledního úspěšného bodu
Monitoring a observability¶
Pipeline bez monitoringu je časovaná bomba. Implementujeme:
- Execution metrics: Doba běhu, počet zpracovaných záznamů, error rate
- Data quality metrics: Completeness, freshness, volume anomálie
- Alerting: PagerDuty/Slack/Teams notifikace při selhání nebo SLA breach
- Grafana dashboardy: Přehled všech pipeline na jednom místě
- Data lineage: Odkud data přišla, jak se transformovala, kam putuje
Typické implementace¶
Batch pipeline pro reporting¶
ERP + CRM + e-shop → Airflow orchestrace → dbt transformace v Snowflake → Power BI dashboardy. Denní/hodinový refresh. Implementace: 4-6 týdnů.
CDC pipeline pro near-real-time¶
Debezium CDC z PostgreSQL → Kafka → stream processing → Delta Lake. Latence pod 1 minutu. Implementace: 3-5 týdnů.
Data lake ingestion¶
Stovky zdrojů (API, soubory, databáze) → Airbyte/Fivetran → S3/ADLS Bronze layer → dbt Silver/Gold. Škálovatelné na desítky TB denně. Implementace: 6-10 týdnů.
Časté otázky
ETL transformuje data před uložením — vhodné pro regulovaná prostředí s přísnými pravidly na ukládaná data. ELT ukládá raw data a transformuje až v cílovém systému (Snowflake, BigQuery, Databricks). Většinou volíme ELT pro lepší flexibilitu a audituovatelnost, ale rozhodujeme podle kontextu.
Desítky až stovky DAGů v jedné Airflow instanci. Pro velké organizace nasazujeme Airflow na Kubernetes s autoscalingem workerů. Klíčový je správný design závislostí a paralelizace.
Automatický retry s exponential backoff, dead letter queue pro selhané záznamy, okamžitý alert do Slacku/Teams/PagerDuty. Backfill capability pro přepracování historických dat. Většina transient chyb se vyřeší automaticky.
Schema evolution detection na vstupu pipeline. Breaking changes vyvolají alert a zastaví pipeline (raději žádná data než špatná data). Non-breaking changes (nový sloupec) se propagují automaticky.