SlideShare a Scribd company logo
1 of 37
Microservice
architecture
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á
Ahoj!
Jindřich Kubát
Vedoucí vývoje v Mall.cz
jindrich.kubat@outlook.com
@techitouch
https://www.linkedin.com/in/jindrich-kubat/
Filozofie
Microservice
1
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)
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 Deployment
 Škálování v pozdější
fázi
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
“
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í
Jak zavést
Microservice
s
2
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
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ů
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
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
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
Monitoring
Závislosti
Výkon
Delivery Pipeline
Infrastruktura
Business metrics
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
Komunikace
mezi MS
3
Komunikace 1:1
Volba vhodné strategie
Komunikace 1:n
První dimenze komunikace
Druhá dimenze komunikace
Synchroní Asynchroní
Formy komunikace
1:1 1:n
Synchroní Request / Response -
Asynchroní
Notification Publish / Subscribe
Request / Async
response
Publish / Async
responses
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
1:1 - Notification
Klient vyšle požadavek a neočekává
žádnou odpověď
PurchaseService -> NotifyHeureka
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
1:N – Publish /
Subscribe
Klient vyšle zprávu, která je konzumovaná 0
– n službami
PurchaseService -> RabbitMQ::PurchaseCreated
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
Služba typicky využívá kombinace komunikačních stylů.
Vždy je nutné myslet na možnost, že služba bude nedostupná!
Jindrovo
tajemství ;)
4
Jedním z největším benefitů
Microservices je možnost využítí
širokého spektra technologií. Využijte to!
Dejte vývojářům svobodu, ale také
zodpovědnost
Každý produkt, nebo služba nechť má
svého jednoznačného vlastníka
Budujte produktové, multifunkční teamy
Podporujte Agilní prostředí ve firmě
Vychovejte si Produktového
vlastníka
Nejste v tom
sami
4
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 Microservice architecture

ITSM - Jira Service Desk a spřátelené aplikace z rodiny Atlassian
ITSM - Jira Service Desk a spřátelené aplikace z rodiny AtlassianITSM - Jira Service Desk a spřátelené aplikace z rodiny Atlassian
ITSM - Jira Service Desk a spřátelené aplikace z rodiny AtlassianOnlio
 
Outsourcing - pohled dodavatele
Outsourcing - pohled dodavateleOutsourcing - pohled dodavatele
Outsourcing - pohled dodavateleOKsystem
 
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
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuAkce Dobrého webu
 
MicroStrategy GI a GIS Connector
MicroStrategy GI a GIS ConnectorMicroStrategy GI a GIS Connector
MicroStrategy GI a GIS ConnectorOKsystem
 
BIInfrastructure
BIInfrastructureBIInfrastructure
BIInfrastructureJan Bízik
 
Synergie PPC a programatických kampaní
Synergie PPC a programatických kampaníSynergie PPC a programatických kampaní
Synergie PPC a programatických kampaníTaste Medio
 
20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýraJiří Mareš
 

Similar to Microservice architecture (20)

TNPW2-2011-10
TNPW2-2011-10TNPW2-2011-10
TNPW2-2011-10
 
TNPW2-2014-06
TNPW2-2014-06TNPW2-2014-06
TNPW2-2014-06
 
ITSM - Jira Service Desk a spřátelené aplikace z rodiny Atlassian
ITSM - Jira Service Desk a spřátelené aplikace z rodiny AtlassianITSM - Jira Service Desk a spřátelené aplikace z rodiny Atlassian
ITSM - Jira Service Desk a spřátelené aplikace z rodiny Atlassian
 
TNPW2-2011-04
TNPW2-2011-04TNPW2-2011-04
TNPW2-2011-04
 
Outsourcing - pohled dodavatele
Outsourcing - pohled dodavateleOutsourcing - pohled dodavatele
Outsourcing - pohled dodavatele
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
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
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webu
 
MicroStrategy GI a GIS Connector
MicroStrategy GI a GIS ConnectorMicroStrategy GI a GIS Connector
MicroStrategy GI a GIS Connector
 
Smact a průmysl 4.0
Smact a průmysl 4.0Smact a průmysl 4.0
Smact a průmysl 4.0
 
BIInfrastructure
BIInfrastructureBIInfrastructure
BIInfrastructure
 
Synergie PPC a programatických kampaní
Synergie PPC a programatických kampaníSynergie PPC a programatických kampaní
Synergie PPC a programatických kampaní
 
Analyza trhu nastroje na projektove rizeni
Analyza trhu   nastroje na projektove rizeniAnalyza trhu   nastroje na projektove rizeni
Analyza trhu nastroje na projektove rizeni
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra
 
Microsoft Azure - představení
Microsoft Azure - představeníMicrosoft Azure - představení
Microsoft Azure - představení
 
TNPW2-2013-02
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
 
TNPW2-2012-08
TNPW2-2012-08TNPW2-2012-08
TNPW2-2012-08
 

Microservice architecture