Event-Driven Architecture — pojmyEvent-Driven Architecture: pojmy, vzory a AWS služby
Často hledané pojmy okolo event-driven architektury — od event sourcingu přes CQRS po saga pattern a srovnání AWS messaging služeb.
Co je event-driven architecture (EDA)
Event-driven architecture je architektonický styl, kde komponenty komunikují prostřednictvím asynchronních událostí místo přímých synchronních volání. Producent publikuje event („objednávka vytvořena"), konzumenti reagují nezávisle. Výsledek: loose coupling, lepší škálovatelnost a přirozený audit log.
Event vs message vs command
Event je fakt o tom, co se stalo („OrderPlaced") — bez očekávání odpovědi. Command je požadavek na akci („PlaceOrder") s konkrétním cílem. Message je obecný transportní pojem zahrnující oba. EDA staví primárně na events.
Pub/Sub vs message queue
Pub/Sub (publish-subscribe) broadcastuje událost všem zájemcům (1:N) — typicky SNS, EventBridge, Kafka topics. Message queue (1:1) doručí zprávu jednomu konzumentovi a podporuje retry a dead-letter — typicky SQS, Amazon MQ, RabbitMQ.
Event sourcing
Event sourcing ukládá stav aplikace jako sekvenci eventů, ne jako aktuální snapshot. Stav rekonstruuješ přehráním eventů (replay). Výhoda: kompletní historie, time-travel debug, snadný audit. Nevýhoda: složitější dotazy a schema evolution.
CQRS (Command Query Responsibility Segregation)
CQRS odděluje write model (commands → eventy) a read model (optimalizované projekce pro dotazy). Často se kombinuje s event sourcingem. Vhodné tam, kde mají reads a writes velmi odlišné nároky na výkon nebo strukturu.
Saga pattern
Saga pattern řeší distribuované transakce napříč mikroslužbami sekvencí lokálních transakcí s kompenzačními akcemi. Když některý krok selže, předchozí kroky se rollbackují přes compensating events. Dvě varianty: choreography (peer-to-peer) a orchestration (centrální koordinátor, typicky AWS Step Functions).
Choreography vs orchestration
Choreography: služby si vyměňují eventy přes broker bez centrálního dirigenta — flexibilní, ale obtížně monitorovatelné. Orchestration: centrální workflow engine (Step Functions, Temporal, Camunda) řídí pořadí kroků — lepší přehled a error handling, ale jediný bod selhání.
Amazon EventBridge
EventBridge je serverless event bus pro AWS i SaaS aplikace. Podporuje content-based filtering, schema registry, EventBridge Pipes (zdrojový stream → filter → transformace → target) a archive/replay. Ideální pro cross-service eventy a SaaS integrace (Stripe, Salesforce, Datadog).
Kinesis vs MSK (Kafka)
Kinesis Data Streams je AWS managed streaming (shardy, 24h–365 dní retence, jednoduchý billing). Amazon MSK je managed Apache Kafka (topics, partitions, ekosystém Kafka Connect/Streams). Kinesis je rychlejší start, MSK je výhodnější pro existující Kafka stack a vyšší throughput.
SQS vs SNS vs EventBridge
SQS = queue (1:1, retry, DLQ). SNS = pub/sub (1:N, fan-out, A2A i A2P). EventBridge = pub/sub s pravidly, filtrováním a SaaS integracemi. Typický pattern: SNS → SQS fan-out, EventBridge pro complex routing s filtry.
Eventual consistency a idempotence
EDA je inherentně eventually consistent — různí konzumenti vidí stav s mírným zpožděním. Handlery musí být idempotentní (zpracování stejného eventu vícekrát nesmí způsobit duplicitní efekt), typicky přes deduplication ID nebo upsert operace.
Kdy nezavádět event-driven architekturu
EDA přidává komplexitu — broker, monitoring, schema evolution, debugging asynchronních flows. Nezavádějte ji pro malé monolity, jednoduché CRUD aplikace nebo když tým nemá zkušenost s distributed systems. Začněte hybridem: kritické flows event-driven, zbytek synchronně.