11. Architektura aplikace
Rozhodnutí daná na začátku vývoje,
jenž je následně velmi drahé změnit
MS je jedním z mnoha stylů
Even driven
Monolithic
Service oriented
12. MS vs Monolithic architecture
Monolithic Architecture Microservice Architecture
13. Monolithic architecture
Výhody
Vývoj
Nasazování
Škálování v ranné fázi
Testování
Nevýhody
Refactoring
Kompilace / Pomalé
IDE
Continuous Deployme
nt
Škálování v pozdější
fázi
14. Microservice Architecture
Výhody
Jednoduché na
pohopení
Škálování
Možnost použít různé
technologie
High availability
Continuous Deployment
Nevýhody
Vývoj v distribuovaném
systému
Komunikace mezi
teamy
Testování
Debugging
Vývoj projektu
16. “
“Žádná neexistuje”
Definice Microservices
MS splňují většinu uvedených vzorů
Izolované prostředí
Pokryté testy
Automatizovaně nasazované
Automatizovaná infrastruktura
Plně zdokumentované
REST / SOAP API
Řeší izolovaný problém z business prostředí
18. ACID transakce
◇Zajištění konzistence dat v relační databázi
◇Velmi běžné a snadné v monolitické
architektuře
◇Mohou významně zhoršovat dostupnost
systému
19. “
Mějme objednávku a dárkový certifiktát.
Platí, že nelze platit neplatným certifikátem,
zároveň je nutné certifikát zneplatnit
společně se založením objednávky
26. Kompenzační
transakce
◇Pro co nejvyšší odolnost systému je nutné implementovat
jako idempotentní
◇Není nutné vždy revertovat původní stav, lze reagovat
libovolným způsobem
27. Řízení událostí
Již existující služba
◇ Jednotlivé služby jsou
úzce provázané
◇ Porušení doménové
odpovědnosti
◇ SAGA je rozprostřena
mezi spoustu služeb
SAGA process manager
◇ Nová služba pro
sjednocení volání
service na jedno místo
◇ Neobsahuje žádnou
business logiku
◇ SPOF!
28. Předávání událostí
1. Přímé volání API Endpointu
2. Pomocí událostí
Pro události se často používá Event
Soursing
31. Tradiční způsob
◇Při každé události se přepíše původní hodnota
◇Stav systému je dán aktuální hodnotou
Nevýhody
◇ Změny jsou uloženy v logách ( pokud vůbec )
◇ Nutná infrastruktura ( úložiště ) a třídy, které se o data
starají
◇ Změna pohledu na data je platná od bodu implementace
32. Event Soursing
◇Využívá event systém jako primární úložiště
změn
◇Zapisují se pouze změny ( přidávání zpráv )
◇Aktuální stav systému je dán přehráním všech
zpráv
Výhody
Systém lze kdykoliv replikovat pouhým přehráním
zpráv
Není nutné dodatečné úložiště
Změna pohledu na data umožnuje mít všechny
data od počátku
38. Event Soursing &
SAGA
◇Celý běh událostí je kompletně zaznamenán
◇Události lze kdykoliv přehrát znovu
◇Komunikace je asynchronní
◇Události lze replikovat a reagovat v jiných částech
systému
◇Lze snadno vkládat nové události ( odeslání emailu, apod.
)
39. Zobrazení v UI
Po dokončení celé SAGY
Odpověď může trvat delší dobu
Nemusí se v UI nic měnit
Ihned po založení objednávky
Okamžitá odpověď
Nutná změna UI / API
40. Řešení problémů
◇Změna business stavu některých objektů – “Pending”
◇Process Manager – SPOF
◇Kompenzační transakce vždy idempoetentní
◇Výrazně vyšší komplexita
◇Monitoring procesu
45. Možnosti
◇Multiget API
Nikdy nelze pokrýt všechny možné scénáře
Výrazné dopady na performance, dostupnost
◇ CQRS
Flexibilní vzor pro další scénáře
Rozdělení zátěže, výrazně lepší performance
- Denormalizace dat, Redundance dat
47. Výhody CQRS
◇Oddělení zátěže mezi Zápisem a Čtením
◇Oddělení různých potřeb pro čtení ( komplexní
dotazy ) a zápis ( validace, pravidla )
◇Možnost používat různé technologie pro čtení /
zápis
48. Synchronizace dat
◇Není nezbytně nutné používat zcela jiné úložiště, nicméně
se to částo děje kvůli lepší dostupnosti a možnosti
škálování.
◇Jak fungují transakce v relační databázi?
◇Je nutné mít velmi odolnou metodu na synchronizaci dat
mezi úložišti, podle účelu ( Exact copy vs Materialized View
)
49. CQRS a Event
Soursing
◇Velmi často se oba přístupy kombinují dohromady
◇Jako jediné úložiště a zdroj pravdy je využit
stream událostí
◇Na druhé straně je 1 – n úložišť pro čtení dat, kde
se realizují různé pohledy