===== 13 - CQRS + Event Sourcing ===== Náplň cvičení: * Patterny pro microservices * Konzultace a odevzdávání semestrálních prací ==== Teorie ==== Přednáška: {{:courses:a7b36omo:10_-_patterny_pro_microservices.pptx_3_.pdf| }} Následující schéma zachycuje aplikaci, která aplikuje patterny pro tvorbu microservices. {{:courses:b6b36omo:labs:cqrs.png?600|}} **Command Queue** - v této frontě se skladují commandy (pokyny co se má provést) např. z UI, které jsou odebírány zaregistrovanými komponentami **Command Handler(s)** - kód, který selektivně odebírá commandy a zpracovává je pomocí služeb doménové logiky **Domain Logic** - služby nad doménovou logikou, které provádí kód pro danou doménu (např. Logika pro zpracování klienta banky, logika pro spotřební úvěr atd.). Při změnách generují eventy. **Event Store** - úložiště eventů **Event Queue** - fronta eventů, které jsou odebírány zaregistrovanými komponentami **Event Handler(s)** - kód, který selektivně odebírá eventy a ty jsou dále zpracovávány **Materialized view** - datové repository optimalizované pro čtení např. z UI **Process Manager/Saga** - implementace ságy, transformuje eventy do akcí nad doménovou logikou ==== Zadání úlohy ==== Stáhněte si z repository kód pro aplikaci, která zjednodušeně implementuje patterny pro tvorbu microservices na hře kámen, nůžky, papír: https://gitlab.fel.cvut.cz/B231_B6B36OMO/seminar/-/tree/master/cv13_assignment {{:courses:b6b36omo:labs:cqrs_notes.png?600|}} 1) Oddebuggujte si aplikaci a snažte se pochopit jak je implementována 2) Rozšiřte aplikaci ze tří symbolů (kámen, nůžky, papír) na pět tak, aby hra byla pořád vyvážená Prezentace 103/104: https://docs.google.com/presentation/d/16UQDgXh_vyMs496P5m9xtr86MoDYMpeDq7E8M_eA1XA/edit?usp=sharing