Real-time Analytics
Včerejší data jsou včerejší rozhodnutí.
Stavíme real-time processing platformy s Apache Kafka, Flink a streaming analytics. Sub-sekundová latence pro use cases, kde batch processing nestačí — fraud detection, dynamic pricing, IoT telemetrie, live dashboardy.
Kdy batch processing nestačí¶
Batch processing (denní/hodinový ETL) je správná volba pro většinu analytických use cases. Ale existují scénáře, kde zpoždění stojí reálné peníze:
Fraud Detection¶
Podvodná transakce musí být detekována v sekundách, ne v hodinách. Real-time scoring: transakce → enrichment (historie zákazníka, geolokace, device fingerprint) → ML model → approve/decline. Latence >5s = schválený podvod.
Dynamic Pricing¶
E-commerce, ride-sharing, hospitality — cena se mění podle poptávky, konkurence, zásob. Batch pricing s hodinovým update znamená hodinu suboptimálních cen. Real-time pricing reaguje na události okamžitě.
IoT & Telemetrie¶
Tisíce senzorů generují miliony eventů za minutu. Anomaly detection na streaming datech — pokud teplota stroje překročí threshold, alert přijde za sekundy, ne za hodiny. Prediktivní údržba vyžaduje real-time feature engineering.
Operativní dashboardy¶
Live přehled objednávek, zásilek, SLA, throughputu. Supply chain visibility — kde je každá zásilka teď, ne kde byla včera. Operátoři potřebují aktuální stav, ne historický snapshot.
Architektura real-time platformy¶
Apache Kafka — event streaming backbone¶
Kafka není jen message broker. Je to distribuovaný commit log, event streaming platforma a integrační páteř v jednom:
- Guaranteed delivery: At-least-once (default) nebo exactly-once (transactional)
- Ordering: Per-partition ordering garantuje sekvenční zpracování
- Replay: Consumer může číst od libovolného offsetu — reprocessing, debugging, nový consumer
- Retention: Konfigurovatelná (hodiny až neomezeně) — Kafka jako source of truth
- Schema Registry: Schema evolution (Avro, Protobuf) — producent a consumer se dohodnou na formátu
Stream Processing¶
Apache Flink — náš primární stream processor: - Stateful processing s exactly-once semantics - Event time processing — správné výsledky i při out-of-order eventech - Windowing: tumbling, sliding, session windows - Complex Event Processing (CEP) — pattern matching přes stream eventů - Savepoints a checkpoints pro fault tolerance
Kafka Streams — pro jednodušší transformace: - Library, ne cluster — běží jako součást vaší aplikace - Filtering, mapping, aggregace, joins - State stores pro lokální stav - Ideální pro microservice-based architektury
ksqlDB — SQL nad streaming daty: - SELECT, WHERE, GROUP BY, JOIN — jako SQL, ale nad nekonečným streamem - Materialized views aktualizované v reálném čase - Ideální pro prototyping a jednoduché use cases
Change Data Capture (CDC)¶
Debezium zachytává změny v databázi a posílá je do Kafky v reálném čase:
- PostgreSQL, MySQL, SQL Server, MongoDB — podporované zdroje
- Log-based CDC — čte z WAL/binlog, žádný impact na zdrojovou databázi
- Schema propagace — změny schématu se propagují automaticky
- Initial snapshot — první load celé tabulky, pak inkrementální změny
Real-time sinking¶
Data z Kafky do cílových systémů: - Elasticsearch — full-text search, real-time indexing - ClickHouse — OLAP dotazy nad streaming daty - Redis — cache pro real-time feature store - Snowflake/Databricks — streaming ingestion do warehouse/lakehouse - S3/ADLS — archivace raw eventů
Monitoring a operations¶
Kafka monitoring¶
- Consumer lag — jak daleko je consumer za producerem. Rostoucí lag = processing bottleneck
- Throughput — messages/s per topic, partition balance
- Broker health — ISR (in-sync replicas), under-replicated partitions
- Storage — disk usage, retention vs. capacity
Stream processing monitoring¶
- Backpressure — processing je pomalejší než input rate
- Checkpoint duration — jak dlouho trvá checkpoint (Flink)
- Watermark lag — zpoždění event time vs. processing time
- State size — rostoucí state = potenciální memory issue
Alerting¶
- Consumer lag > threshold → scale up consumers
- Broker offline → immediate alert + automatic rebalance
- Processing latency > SLA → investigate bottleneck
- Error rate spike → circuit breaker + dead letter queue
Implementační přístup¶
- Use case assessment (1 týden): Identifikace use cases, kde real-time přináší měřitelnou hodnotu. Ne všechno potřebuje být real-time.
- Kafka cluster setup (1-2 týdny): Provisioning (Confluent Cloud nebo self-managed), topic design, security (mTLS, SASL), Schema Registry.
- MVP streaming pipeline (2-4 týdny): CDC z primárního zdroje → Kafka → stream processing → cílový systém. End-to-end monitoring.
- Škálování a optimalizace (ongoing): Další zdroje a consumers, performance tuning, partitioning strategie, cost optimalizace.
Časté otázky
Když zpoždění stojí peníze nebo bezpečnost: fraud detection (sekundy = schválená podvodná transakce), dynamic pricing (minuty = ztracená marže), IoT alerting (minuty = poškozený stroj), inventory management (hodiny = vyprodané zboží). Pro reporting a analytics většinou stačí batch s hodinovým refreshem.
Managed Kafka (Confluent Cloud, AWS MSK): od $500/měsíc pro menší workloady, $5-20K/měsíc pro enterprise. Self-managed: nižší licence náklady, ale vyšší operations overhead. Confluent Cloud doporučujeme pro většinu projektů — ROI je jasný.
Kafka pro event streaming, vysoký throughput, replay capability, event sourcing. RabbitMQ pro klasické message queuing, request-reply pattern, nižší latence per-message. Pro datovou platformu je Kafka téměř vždy lepší volba.
Kafka Transactions + idempotentní producery pro Kafka-to-Kafka. Pro Kafka-to-external (DB, API) používáme idempotentní consumers s deduplication na cílové straně. Flink poskytuje exactly-once semantics s checkpointingem.