2. Co se dozvíte
◇Jaká je filozofie Microservice a jaký problém
řeší
◇Jak zavést Microservices
◇Komunikace mezi Microservices
◇Jindrovo tajemství ;)
◇Kdo Microservices používá
5. Architektura aplikace
Rozhodnutí daná na začátku vývoje,
jenž je následně velmi drahé změnit
MS je jedním z mnoha stylů
Event driven
Monolithic
Service oriented (SOA)
6. MS vs Monolithic architecture
Monolithic Architecture Microservice Architecture
7. Monolithic architecture
Výhody
Vývoj
Nasazování
Škálování v ranné fázi
Testování
Nevýhody
Refactoring
Kompilace / Pomalé
IDE
Continuous Deployment
Škálování v pozdější
fázi
8. Microservice architecture
Nevýhody
Vývoj v distribuovaném
systému
Komunikace mezi
teamy
Testování
Debugging
Vývoj projektu
Výhody
Jednoduché na
pohopení
Škálování
Možnost použít různé
technologie
High availability
Continuous Deployment
10. “
“Žá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í
12. Přechod k
Microservices
◇Zavedení produktové metodologie do vývoje
◇Odpovědnost vývojářů za provoz na produkci
◇Continuous delivery / deployment
◇Automatizace infrastruktury
◇Monitoring, Testy
◇Vhodný výběr prvních Microservices
13. Produktová
metodologie
◇Microservices jsou vybudované kolem business
problému
◇Produkt nikoliv Projekt
◇Agilní metodologie ( SCRUM, Kanban, LEAN, XP )
◇Role produktového vlastníka ve firmě
◇Rozvoj produktu jako celku, nikoliv sázení projektů
14. Odpovědnost za
provoz
◇PMO vs Development vs Operations
◇Vývojáři musí mít plný přístup do produkce
◇Dejte vývojářům odpovědnost a pohotovost!
◇Produktový vlastník a team musí mít stejné
cíle
15. Continuous delivery◇Budete mít desítky, možná stovky
microservices
◇Automatizace nasazování je nezbytný krok
◇Git Push -> Unit testy -> Staging env ->
Funkční testy / Akceptační testy -> Produkční
prostředí
◇Rollback je stejně jednoduchý jako
Deployment
◇Jak na databázové změny
16. Automatizace
infrastruktury
◇Typická MS se skládá z několika serverů
◇Servery pro aplikaci
◇Servery pro úložistě
◇Případně messages systém
◇Automatizace pomocí Chef / Puppet / Ansible /
Docker
18. Výběr prvních
Microservices
Začněte tam, kde to nejvíce bolí
Dekompozice podle firemních oddělení
Banner system
Delivery system
Dekompozice dle služeb
Cart Service
Search Service
20. Komunikace 1:1
Volba vhodné strategie
Komunikace 1:n
První dimenze komunikace
Druhá dimenze komunikace
Synchroní Asynchroní
21. Formy komunikace
1:1 1:n
Synchroní Request / Response -
Asynchroní
Notification Publish / Subscribe
Request / Async
response
Publish / Async
responses
22. 1:1 - Request /
Response
Klient vyšle požadavek a čeká, dokud se
nevrátí odpověď
Ve vícevláknových aplikacích je typicky
dané vlákno zablokované dokud čeká na
odpověď
SearchService -> Request to ElasticSearch
23. 1:1 - Notification
Klient vyšle požadavek a neočekává
žádnou odpověď
PurchaseService -> NotifyHeureka
24. 1:1 – Request / Async
response
Klient vyšle požadavek a pokračuje ve
zpracování. Odpověď je zachycena v callback
metodě
Vlákno není po dobu zpracování požadavku
blokováno
Client -> CartService::AddToCart
25. 1:N – Publish /
Subscribe
Klient vyšle zprávu, která je konzumovaná 0
– n službami
PurchaseService -> RabbitMQ::PurchaseCreated
26. 1:N – Publish/Async
responses
Klient vyšle zprávu a čeká po určitou dobu na
odpovědi z volaných service
ShopAvailability -> WarehouseAvailability::GetAmount
27. Služba typicky využívá kombinace komunikačních stylů.
Vždy je nutné myslet na možnost, že služba bude nedostupná!