SlideShare a Scribd company logo
1 of 51
Microservices
CQRS & SAGAS
Co se dnes dozvíte
◇Základní princip Microservices
◇Jak na transakce v distribuovaném systému
◇Vytváření složitějších pohledů na data
Ahoj!
Jindřich Kubát
Vedoucí vývoje v Mall.cz
jindrich.kubat@outlook.com
@techitouch
https://www.linkedin.com/in/jindrich-kubat/
Proč
microservices
?
1
“
“
“
“
“Chaos v uzavřeném systému nelze zmenšit,
může pouze zůstat stejný, nebo se
zvětšovat”
Software entropy
Zmírnění chaosu
◇Pravidelná údržba
◇Refaktorizace
◇Teorie rozbitých oken
Filozofie
Microservice
2
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
MS vs Monolithic architecture
Monolithic Architecture Microservice Architecture
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
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
“
Produktivita vs Složitost
systému
“
“Žá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í
Transakce v
distribuovaném
systému
2
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
“
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
Řešení v
monolotické
architekruře
SQL
BEGIN;
SELECT …. FROM certs WHERE token = :token;
INSERT INTO purchase ….;
UPDATE certs SET valid = 0 WHERE token =
:token;
Microservic
e
architektura
Bad Solution – 2PC
Výhody:
◇ Umožňuje datovou
integritu
Nevýhody:
◇ Výrazné dopady na
dostupnost
systému
◇ SPOF
◇ Vyžaduje úložiště s
transakcemi
SAGAS
Sekvence lokálních transakcí, které jsou
vykonané samostatně a izolovaně
Kompenzační
transakce
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
Ří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!
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
Event Soursing
3
“
“Jak uložit a číst změny v systému”
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
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
Události ve skladu
ID Amount
100 10
200 20
100 -5
100 10
200 -3
Příklady použití
◇Bankovní účet
◇Účetnictví
◇Zdravotní dokumentace
◇SAGAS & CQRS ;)
Uložení událostí
◇Kamkoliv, kde mohu segregovat události
• Apache Kafka
• Databáze
• NoSQL úložiště
• Úložiště -> Paměť
SAGA process
manager
3
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.
)
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
Ř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
CQRS
4
Command & Query
Responsibility
Segregation
Jak zobrazit všechny objednávky, kde byl použitý slevový kupón v
hodnotě >= 2000Kč za rok 2017
SQL
SELECT p.purchase_id, c.amount
FROM purchase p
JOIN ucerts c ON p. purchase = c.purchase_id
WHERE c.amount >= :amount
AND c.time BETWEEN :t1 AND :t2
Řešení v
monolotické
architekruře
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
CQRS základní
princip
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
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
)
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
Díky!
Otázky?
Doporučená literatura
 http://microservices.io
 https://martinfowler.com/articles/microservices.ht
ml
 https://www.nginx.com/resources/library/designing
-deploying-microservices/
 https://craft-conf.com
 http://microxchg.io

More Related Content

Similar to Microservices - morning talk

Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileProfinit
 
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Jaroslav Prodelal
 
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduOracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduMarketingArrowECS_CZ
 
View5 technicka 2011
View5 technicka 2011View5 technicka 2011
View5 technicka 2011Vladan Laxa
 
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...Taste
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datJaroslav Prodelal
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...Jaroslav Prodelal
 
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Jaroslav Prodelal
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z clouduJaroslav Smarda
 
Entity Framework v enterprise aplikacích
Entity Framework v enterprise aplikacíchEntity Framework v enterprise aplikacích
Entity Framework v enterprise aplikacíchProfinit
 
Zkušenosti s využitím Cloud Computingu ve výuce
Zkušenosti s využitím Cloud Computingu ve výuceZkušenosti s využitím Cloud Computingu ve výuce
Zkušenosti s využitím Cloud Computingu ve výuceKISK FF MU
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Jaroslav Prodelal
 
MS Awards Brozura 2015 210x210 R7 LR
MS Awards Brozura 2015 210x210 R7 LRMS Awards Brozura 2015 210x210 R7 LR
MS Awards Brozura 2015 210x210 R7 LRJaromir Sponar
 
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Jaroslav Prodelal
 
Přechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchPřechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchMarketingArrowECS_CZ
 

Similar to Microservices - morning talk (20)

Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum Mobile
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
TNPW2-2013-08
TNPW2-2013-08TNPW2-2013-08
TNPW2-2013-08
 
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
 
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduOracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
 
View5 technicka 2011
View5 technicka 2011View5 technicka 2011
View5 technicka 2011
 
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...
Data Date #2: Radek Kupr - Jak zjistit skutečný propad dat po nasazení cookie...
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních dat
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
 
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
 
Datasheet simplivity cz
Datasheet simplivity czDatasheet simplivity cz
Datasheet simplivity cz
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z cloudu
 
CSAS_v06
CSAS_v06CSAS_v06
CSAS_v06
 
TNPW2-2012-08
TNPW2-2012-08TNPW2-2012-08
TNPW2-2012-08
 
Entity Framework v enterprise aplikacích
Entity Framework v enterprise aplikacíchEntity Framework v enterprise aplikacích
Entity Framework v enterprise aplikacích
 
Zkušenosti s využitím Cloud Computingu ve výuce
Zkušenosti s využitím Cloud Computingu ve výuceZkušenosti s využitím Cloud Computingu ve výuce
Zkušenosti s využitím Cloud Computingu ve výuce
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
 
MS Awards Brozura 2015 210x210 R7 LR
MS Awards Brozura 2015 210x210 R7 LRMS Awards Brozura 2015 210x210 R7 LR
MS Awards Brozura 2015 210x210 R7 LR
 
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
 
Přechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchPřechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítích
 

Microservices - morning talk

Editor's Notes

  1. Atomic Consistent Isolated Durable
  2. Two Phase Commit