Slovníček pojmů

Krátké vysvětlení odborných pojmů z dokumentace s odkazem tam, kde se o nich dočtete víc.

Na této stránce

Pojmy jsou seřazené abecedně. Odkaz vede na stránku, kde je pojem vysvětlený na MiniShopu.

Architektura a EDA

Pojem Význam Víc
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

Účty a zabezpečení

Pojem Význam Víc
Autentizace / autorizace kdo jsi? (přihlášení) / co smíš? (role, vlastnictví záznamu) Accounts
Claim jeden údaj o přihlášeném uživateli uložený v cookie (ID, e-mail, jméno, role) Accounts
Hash hesla se solí jednosměrný otisk hesla s náhodnou přísadou – heslo samo se neukládá Accounts
Fallback policy (secure by default) pravidlo pro vše, co nemá vlastní: v MiniShopu „musí být přihlášen“ – zapomenutá stránka je zamčená Accounts
IDOR chyba: k cizím datům se dostanu jen změnou čísla v adrese (/api/orders/43) – brání filtr podle vlastníka a 404 Ordering
Open redirect chyba: web po přihlášení přesměruje na adresu, kterou podstrčil útočník Accounts
Policy pojmenované pravidlo autorizace (RequireAdmin), používané na stránkách i v API Accounts
Přihlašovací cookie zašifrovaná identita v prohlížeči; HttpOnly, Secure, SameSite Accounts
Resource-based authorization rozhodnutí podle konkrétního záznamu („objednávka patří přihlášenému“), ne jen podle role Ordering
Role štítek na uživateli (User, Admin), podle kterého policies rozhodují Accounts

Nasazení a provoz

Pojem Význam Víc
Basic auth jednoduché přihlášení jménem a heslem na úrovni HTTP (v Caddy) HTTPS a přístup
CI / CD automatické sestavení a testy / automatické nasazení GitHub a CI/CD
cloud-init skript, který připraví novou VM při prvním startu Oracle Cloud
Compartment „místnost“ v OCI pro zdroje jednoho projektu, s vlastními právy Oracle Cloud
Container / image běžící instance aplikace / neměnný balík aplikace se vším potřebným Kontejnery
Environment (GitHub) sada secrets a pravidel pro nasazení do jednoho prostředí (production) CD
Health check adresa (/health), na které služba hlásí svůj stav Monitoring
IaC infrastruktura popsaná kódem (OpenTofu) místo klikání Infrastruktura jako kód
IAM politika pravidlo „kdo smí co a kde“ v cloudu Oracle Cloud
Instance principal identita VM – přihlásí se ke službám cloudu bez klíče Zálohy
Multi-stage build Dockerfile s fází sestavení a malou výslednou image Kontejnery
Registry úložiště Docker image (GHCR) CI
Reserved IP pevná veřejná IP adresa, která přežije novou VM Oracle Cloud
Reverse proxy server před aplikací: HTTPS, přihlášení, přeposílání (Caddy) HTTPS a přístup
Rollback návrat na předchozí verzi po neúspěšném nasazení CD
Ruleset pravidla GitHubu pro větev (povinný PR, povinné testy) Repozitář
Secret tajná hodnota (heslo, klíč), která nesmí do gitu Secrets
Security list cloudový firewall – které porty jsou zvenku otevřené Oracle Cloud
Smoke test rychlá kontrola po nasazení, že aplikace vůbec odpovídá CD
State (OpenTofu) záznam, co OpenTofu v cloudu vytvořil a pod jakým ID Infrastruktura jako kód
Vynucený příkaz (forced command) SSH klíč, který smí spustit jen jeden předem daný příkaz CD
Volume trvalý disk kontejneru – data přežijí nový image Kontejnery