| Agregát / entita |
objekt domény s identitou a pravidly, stav mění jen přes své metody (Order.Confirm) |
Vrstvy |
| Hranice konzistence |
co se musí změnit spolu v jedné transakci (košík + objednávka) – podle ní se kreslí hranice modulu |
Ordering |
| Hodnotový objekt |
objekt bez vlastní identity, daný jen svými hodnotami a neměnný (DeliveryAddress) – dvě stejné adresy jsou jedna a ta samá; platnost ověří už při vytvoření |
Pokladna |
| At-least-once |
doručení „alespoň jednou“ – zpráva se neztratí, ale může přijít víckrát |
Outbox |
| Broker |
prostředník, který přijímá zprávy a doručuje je do front příjemců (RabbitMQ) |
Broker |
| C4 model |
kreslení architektury v úrovních Context → Containers → Components → Code |
Architektura |
| Composition root |
jediné místo, kde se skládají závislosti (DI) – Program.cs |
Vrstvy |
| Concurrency token |
verze řádku; souběžná změna stejného záznamu selže místo přepsání |
Stavové diagramy |
| Consumer |
proces, který čte zprávy z fronty a předává je handlerům |
Broker |
| Dekorátor |
obal, který přidá chování beze změny obalené třídy (IdempotentDomainEventHandler) |
SOLID |
| Doménová událost |
fakt v minulém čase uvnitř modulu (OrderConfirmed) |
Doménové události |
| Dual write |
zápis do dvou systémů (DB + broker), který může skončit napůl |
Outbox |
| Eventual consistency |
data se sjednotí se zpožděním (sekundy), ne okamžitě |
EDA |
| Expand → contract |
změna kontraktu ve dvou fázích: nejdřív posílat starou i novou verzi, až ji nikdo nečte, starou odebrat (ProductUpdatedV1 → V2) |
Integrační zprávy |
| Event sourcing |
ukládá se seznam událostí, stav se z nich počítá |
Proud událostí |
| Exchange |
„třídírna“ v RabbitMQ – rozesílá zprávy do navázaných front |
Broker |
| Fanout |
typ exchange, který pošle kopii zprávy do každé navázané fronty |
Broker |
| Fold |
postupné „složení“ stavu z událostí – start s prázdným stavem a Apply pro každou |
Proud událostí |
| Handler |
třída, která reaguje na jednu událost nebo zprávu |
Doménové události |
| Immutable cache |
soubor se pod jednou adresou nikdy nemění (nový obsah = nové jméno), proto si ho prohlížeč smí uložit natrvalo |
Kopie katalogu |
| Idempotence |
provést operaci jednou nebo víckrát má stejný výsledek |
Inbox |
| Idempotentní příkaz |
požadavek s vlastním ID (CheckoutId) – opakované odeslání nic nového nezaloží, vrátí výsledek prvního |
Pokladna |
| Inbox |
tabulka zpracovaných zpráv – ochrana před dvojím zpracováním |
Inbox |
| Integrační zpráva / kontrakt |
veřejná, verzovaná zpráva mezi službami (ReserveStockV1) |
Integrační zprávy |
| Invariant |
pravidlo, které agregát hlídá vždy (košík: nejvýš 20 řádků, množství 1–100) – nejde obejít, protože se stav mění jen přes jeho metody |
Ordering |
| Kompenzace |
akce, která ruší účinek dřívějšího kroku (vrácení zboží) |
Sága |
| Modulární monolit |
jedna aplikace rozdělená na moduly s vlastními daty a jasnými hranicemi |
Moduly |
| Orchestrace / choreografie |
proces řídí jeden „dirigent“ / každý reaguje sám na události ostatních |
Sága |
| Outbox |
tabulka odchozích zpráv ukládaná v téže transakci jako data |
Outbox |
| Poison message |
zpráva, jejíž zpracování opakovaně selhává; po 5 pokusech se odloží |
Outbox |
| Projekce (read model) |
pohled na data poskládaný z událostí (kopie katalogu, časová osa) |
Kopie katalogu |
| Příkaz (command) |
zpráva „udělej“ s právě jedním příjemcem |
Integrační zprávy |
| Sága |
dlouhý proces přes více služeb složený z lokálních transakcí s kompenzacemi |
Sága |
| SOLID |
pět principů objektového návrhu |
SOLID |
| Span / trasa (trace) |
jeden krok práce / strom kroků jednoho požadavku přes služby |
Observabilita |
| traceparent |
standardní hlavička W3C nesoucí ID trasy mezi procesy |
Observabilita |
| Path traversal |
útok podvrženou cestou k souboru (../../appsettings.json) – brání se mu jen jména podle přesného vzoru |
Inventory |
| Výloha (/Shop) |
veřejná nabídka s hledáním a filtry nad kopií katalogu – read model tvarovaný pro čtení (CQRS) |
Kopie katalogu |
| Wire tap |
„odposlech“ – fronta, která dostává kopii všech zpráv (audit) |
Broker |