SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
The Micro Way 
czyli architektura mikroserwisów 
Konrad Król
Zainteresowanie 
microserwisami 
By Google Trends
Zainteresowanie 
microserwisami 
• Assess – marzec 2012 
• Trial – październik 2012 
• Rosnące zainteresowanie 
tematem mikroserwisów – 
styczeń 2014 
By ThoughtWorks Technology Radar
Classic Way vs Micro 
Way 
James Hughes, „Micro Service Architecture”
Aplikacje 
monolityczne 
Warstwa prezentacji: specjaliści UI 
Warstwa logiki: specjaliści Java 
Warstwa persystencji: specjaliści DB 
Martin Fowler, „Microservices”, 25 March 2014
Aplikacje 
monolityczne 
Conway's law 
Any organization that designs a system (defined 
broadly) will produce a design whose structure is a 
copy of the organization's communication 
structure. 
Melvin Conway, 1967
Aplikacje 
monolityczne 
Charakterystyka 
monolitów 
• Architektura wielowarstwowa 
• Wiele (100+ tysięcy) linii 
kodu 
• Oparte o z góry określony 
stack technologiczny
Aplikacje 
monolityczne 
Typowe problemy 
• Zamknięcie na zmiany 
nieprzewidziane na etapie 
projektowania 
• Zamknięty stack 
technologiczny 
• Bardzo długi cykl życia
Aplikacje 
monolityczne 
Typowe problemy 
• Skalowalność 
• Długi proces wprowadzania 
zmian 
• Ryzyko związane z 
wdrażaniem nowej wersji 
• Wydajność, wspólne wątki
Skalowalność w 
ujęciu 
monolitycznym
Skalowalność w 
ujęciu 
monolitycznym
Skalowalność 
pojedynczego 
microserwisu 
Load Balancer
Wprowadzanie 
zmian w ujęciu 
monolitycznym
Wprowadzanie 
zmian w ujęciu 
monolitycznym
Wprowadzanie 
zmian w ujęciu 
monolitycznym 
M CM QA
The Micro Way 
is approach to developing 
a single application as a 
suite of small services. 
Martin Fowler, „Microservices”, 25 March 
2014
The Micro Way 
Single responsibility 
• wiele luźno powiązanych 
aplikacji 
• każda aplikacja ma tylko 
jedną, konkretną funkcję 
• kilkaset linii kodu
The Micro Way 
Containerless 
• one process – one service 
• embedded container 
• executable fat jar
The Micro Way 
Dedykowane 
repozytorium 
• osobne repozytorium dla 
każdej aplikacji 
• wspólne moduły w formie 
bibliotek
The Micro Way 
Production ready 
• Monitoring 
• Skalowalne komponenty 
• Health check endpoints
The Micro Way 
Zwinne zespoły Podzielone 
pod kątem 
obszarów biznesowych 
Martin Fowler, „Microservices”, 25 March 2014
The Micro Way
The Micro Way 
Wyzwania: 
• Narzut na zdalną 
komunikację 
• Przenoszenie 
odpowiedzialności pomiędzy 
systemami jest trudniejsze 
niż pomiędzy bibliotekami
The micro way - 
porady 
Dobór technologii: 
• Standardised – w przypadku 
interfejsów 
• Free for all - czyli możesz 
poeksperymentować 
wewnątrz niektórych 
mikroserwisów
The micro way - 
porady 
Monitoring: 
• Dbaj o monitoring na 
produkcji 
• Używaj narzędzi 
pozwalających na dostęp do 
logów z jednego miejsca 
(#logstash, #kibana)
The micro way - 
porady 
Testowanie systemów 
produkcyjnych: 
• Stwórz testową transakcję i 
obserwuj jak przepływa 
przez system 
• Pomyśl w jaki sposób ją 
zidentyfikować (np. 
customowy HTTP Header)
The micro way - 
porady 
Interfejsy publiczne vs 
opublikowane 
• Interfejs publiczny – jego 
metody są publiczne dla 
innych elementów systemu 
• Interfejs opublikowany – jest 
dostępny publicznie, poza 
ramami systemu, nie znamy 
jego klientów
The micro way - 
porady 
Cascade failures 
• Definiuj timeouty 
• Używaj komunikacji 
asynchronicznej (jeśli możliwe) 
1 
2 3 
4 5 6
The micro way - 
porady 
Deployment – trzy 
żelazne zasady 
• Jeden zunifikowany sposób 
na deployment (#fabric) 
• Zawsze rób deployment tylko 
jednego serwisu 
• Zrób deployment jak 
najszybciej
API microserwisów 
Tolerant reader 
• Klient usługi powinien 
nałożyć jak 
najmniejsze 
oczekiwania na 
strukturę odpowiedzi 
• … nawet wtedy gdy 
dostawca usługi 
dostarcza schemat 
odpowiedzi, np. XSD 
# GET /products/1 
<?xml version="1.0" encoding="UTF­8" 
?> 
<product> 
<name>iPhone 5s</name> 
<price>2200,00 PLN</price> 
<description>Very modern and 
elegant...</description> 
<category>Telecommunication</category> 
<rating>5</rating> 
<opinions>101</opinions> 
</product>
API microserwisów 
Wersjonowanie 
• Najlepsze rozwiązanie 
w przypadku 
„opublikowanych API” 
• Bardzo zwiększa narzut 
na utrzymanie systemu 
• Można obsługiwać tylko 
określoną liczbę wersji 
wstecz 
# GET /v2/products/1 
<?xml version="1.0" encoding="UTF­8" 
?> 
<product> 
<name>iPhone 5s</name> 
<price>2200,00 PLN</price> 
<description>Very modern and 
elegant...</description> 
<category>Telecommunication 
</category> 
<categories> 
<category>Telecommunication</category> 
<category>Mobile phones</category> 
</categories> 
<rating>5</rating> 
<opinions>101</opinions> 
</product>
API microserwisów 
Extension points 
• Jeśli jednak chcesz walidować odpowiedzi oryginalną schemą 
• Każdy schemat jest kompatybilny do przodu i do tyłu 
• Dobry do przekazywania „ekstra” parametrów 
<xs:complexType name="Extension"> 
<xs:sequence> 
<xs:any minOccurs="1" maxOccurs="unbounded" processContents="lax" /> 
</xs:sequence> 
</xs:complexType>
API microserwisów 
Consumer driven contract 
• Pokazuje które elementy API są wykorzystywane w procesach 
biznesowych 
• Mamy bardzo szybki feedback, która zmiana może się nie udać 
• #Schematron, #pact 
<pattern name="Validate product"> 
<rule context="*//p:Product"> 
<assert test="p:Name">Must contain Name</assert> 
<assert test="p:Price">Must contain Price</assert> 
</rule> 
</pattern>
API microserwisów 
Distributed transactions 
• Write-of 
• Retry 
• Compensation 
A 
B C D
Dostępne 
frameworki
Spring Boot – czym 
jest? 
• Automatyczna (domyślna) 
konfiguracja 
• Convention over 
configuration 
• Metryki 
• Startery 
• No XML Config 
• Standalone Apps
Spring Boot - 
przykład 
dependencies { 
compile("org.springframework.boot:spring-boot-starter-web") 
} 
package hello; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.SpringApplication; 
import org.springframework.context.annotation.ComponentScan; 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 
public static void main(String[] args) { 
SpringApplication.run(Application.class, args); 
} 
} 
package hello; 
import org.springframework.web.bind.annotation.RestController; 
import org.springframework.web.bind.annotation.RequestMapping; 
@RestController 
public class HelloController { 
@RequestMapping("/") 
public String index() { 
return "Greetings from Spring Boot!"; 
} 
} 
build.gradle 
Application.java 
HelloController.java
Spring Boot - 
przykład 
Build & Run 
gradle build 
java -jar java -jar build/libs/gs-rest-service-0.1.0.jar 
curl localhost:8080 
Co siedzi w środku? 
• spring-core 
• spring-web 
• jackson 
• embedded-tomcat 
• Log4j 
• ... 
Czego nie ma w 
środku? 
• web.xml 
• beans.xml 
• ...
Spring Boot – więcej 
przykładów 
Przewodniki od spring.io 
• można ukończyć w 10-15 
minut 
• można zbudować maven'em 
lub gradl'em 
• można pobrać z github'a 
(wersja początkowa i 
końcowa) 
• są oparte o startery od 
Spring Boot
Spring Boot Starters 
Spring Boot starters 
• Rozwijane przez community 
• Obejmują większość 
popularnych technologii 
używanych ze Springiem 
• Przykłady: jpa, web, test, 
tomcat, jetty, jdbc, batch, 
amqp, security...
Production ready 
spring-boot-actuator 
monitoring oraz zdalny 
dostęp poprzez: 
• jmx 
• ssh 
endpointy: 
• /info 
• /health 
• /beans 
• /env 
• /dump 
• /metrics 
• /trace 
• /autoconfigurationreport 
• /shutdown
Spring Boot vs 
Spring Roo 
find . ­type 
f | xargs cat | wc ­l 
find . ­type 
f | wc ­l 
Spring Roo 
• 1130 linii kodu 
• 26 plików 
Spring Boot 
• 87 linii kodu 
• 4 pliki
Źródła 
• Martin Fowler, „Microservices”, March 2014, http://martinfowler.com/articles/microservices.html 
• Ian Robinson, „Consumer-Driven Contracts: A Service Evolution Pattern”, 12 June 2006 
http://martinfowler.com/articles/consumerDrivenContracts.html 
• Martin Fowler, „Tolerant Reader”, 9 May 2011, http://martinfowler.com/bliki/TolerantReader.html 
• Martin Fowler, „Public versus Published Interfaces”, March/April 2002 
• Sam Newman, „GeeCON 2014: Sam Newman - The Practical Implications Of Microservices” 
• Sam Newman, „GeeCON 2014: Sam Newman - Deploying And Testing Microservices” 
• Marco Vermeulen, „Building Microservices using Spring Boot and Friends”, Greach 2014 
• James Hughes, „Micro Service Architecture”, 
http://yobriefca.se/blog/2013/04/28/micro-service-architecture 
• „Schematron”, http://www.schematron.com/ 
• „Pact”, https://github.com/realestate-com-au/pact 
• „Spring Boot” - http://projects.spring.io/spring-boot/ 
• „Fabric” - https://github.com/fabric/fabric 
• „Logstash” - http://logstash.net/ 
• „Kibana” - http://www.elasticsearch.org/guide/en/kibana/current/
Dziękujemy za uwagę

Contenu connexe

Similaire à Tech cafe Microservices

PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PROIDEA
 
Certyfikacja a Kariera IT - Self Case Study
Certyfikacja a Kariera IT - Self Case StudyCertyfikacja a Kariera IT - Self Case Study
Certyfikacja a Kariera IT - Self Case Study
Tobias Koprowski
 
Case study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SACase study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SA
Tomasz Karwatka
 
Case Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SACase Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SA
Divante
 

Similaire à Tech cafe Microservices (20)

PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
university day 1
university day 1university day 1
university day 1
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólna
 
Certyfikacja a Kariera IT - Self Case Study
Certyfikacja a Kariera IT - Self Case StudyCertyfikacja a Kariera IT - Self Case Study
Certyfikacja a Kariera IT - Self Case Study
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
[infraXstructure] Wirtualizacja aplikacji czy desktopów (PL)
[infraXstructure] Wirtualizacja aplikacji czy desktopów (PL)[infraXstructure] Wirtualizacja aplikacji czy desktopów (PL)
[infraXstructure] Wirtualizacja aplikacji czy desktopów (PL)
 
infraxstructure: Paweł Serwan i Jarosław Sobel "Wirtualizacja aplikacji czy ...
infraxstructure: Paweł Serwan i Jarosław Sobel  "Wirtualizacja aplikacji czy ...infraxstructure: Paweł Serwan i Jarosław Sobel  "Wirtualizacja aplikacji czy ...
infraxstructure: Paweł Serwan i Jarosław Sobel "Wirtualizacja aplikacji czy ...
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Case study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SACase study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SA
 
Case Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SACase Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SA
 
Najbardziej popularne wzorce architektoniczne w chmurze
Najbardziej popularne wzorce architektoniczne w chmurzeNajbardziej popularne wzorce architektoniczne w chmurze
Najbardziej popularne wzorce architektoniczne w chmurze
 

Tech cafe Microservices

  • 1. The Micro Way czyli architektura mikroserwisów Konrad Król
  • 3. Zainteresowanie microserwisami • Assess – marzec 2012 • Trial – październik 2012 • Rosnące zainteresowanie tematem mikroserwisów – styczeń 2014 By ThoughtWorks Technology Radar
  • 4. Classic Way vs Micro Way James Hughes, „Micro Service Architecture”
  • 5. Aplikacje monolityczne Warstwa prezentacji: specjaliści UI Warstwa logiki: specjaliści Java Warstwa persystencji: specjaliści DB Martin Fowler, „Microservices”, 25 March 2014
  • 6. Aplikacje monolityczne Conway's law Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. Melvin Conway, 1967
  • 7. Aplikacje monolityczne Charakterystyka monolitów • Architektura wielowarstwowa • Wiele (100+ tysięcy) linii kodu • Oparte o z góry określony stack technologiczny
  • 8. Aplikacje monolityczne Typowe problemy • Zamknięcie na zmiany nieprzewidziane na etapie projektowania • Zamknięty stack technologiczny • Bardzo długi cykl życia
  • 9. Aplikacje monolityczne Typowe problemy • Skalowalność • Długi proces wprowadzania zmian • Ryzyko związane z wdrażaniem nowej wersji • Wydajność, wspólne wątki
  • 10. Skalowalność w ujęciu monolitycznym
  • 11. Skalowalność w ujęciu monolitycznym
  • 13. Wprowadzanie zmian w ujęciu monolitycznym
  • 14. Wprowadzanie zmian w ujęciu monolitycznym
  • 15. Wprowadzanie zmian w ujęciu monolitycznym M CM QA
  • 16. The Micro Way is approach to developing a single application as a suite of small services. Martin Fowler, „Microservices”, 25 March 2014
  • 17. The Micro Way Single responsibility • wiele luźno powiązanych aplikacji • każda aplikacja ma tylko jedną, konkretną funkcję • kilkaset linii kodu
  • 18. The Micro Way Containerless • one process – one service • embedded container • executable fat jar
  • 19. The Micro Way Dedykowane repozytorium • osobne repozytorium dla każdej aplikacji • wspólne moduły w formie bibliotek
  • 20. The Micro Way Production ready • Monitoring • Skalowalne komponenty • Health check endpoints
  • 21. The Micro Way Zwinne zespoły Podzielone pod kątem obszarów biznesowych Martin Fowler, „Microservices”, 25 March 2014
  • 23. The Micro Way Wyzwania: • Narzut na zdalną komunikację • Przenoszenie odpowiedzialności pomiędzy systemami jest trudniejsze niż pomiędzy bibliotekami
  • 24. The micro way - porady Dobór technologii: • Standardised – w przypadku interfejsów • Free for all - czyli możesz poeksperymentować wewnątrz niektórych mikroserwisów
  • 25. The micro way - porady Monitoring: • Dbaj o monitoring na produkcji • Używaj narzędzi pozwalających na dostęp do logów z jednego miejsca (#logstash, #kibana)
  • 26. The micro way - porady Testowanie systemów produkcyjnych: • Stwórz testową transakcję i obserwuj jak przepływa przez system • Pomyśl w jaki sposób ją zidentyfikować (np. customowy HTTP Header)
  • 27. The micro way - porady Interfejsy publiczne vs opublikowane • Interfejs publiczny – jego metody są publiczne dla innych elementów systemu • Interfejs opublikowany – jest dostępny publicznie, poza ramami systemu, nie znamy jego klientów
  • 28. The micro way - porady Cascade failures • Definiuj timeouty • Używaj komunikacji asynchronicznej (jeśli możliwe) 1 2 3 4 5 6
  • 29. The micro way - porady Deployment – trzy żelazne zasady • Jeden zunifikowany sposób na deployment (#fabric) • Zawsze rób deployment tylko jednego serwisu • Zrób deployment jak najszybciej
  • 30. API microserwisów Tolerant reader • Klient usługi powinien nałożyć jak najmniejsze oczekiwania na strukturę odpowiedzi • … nawet wtedy gdy dostawca usługi dostarcza schemat odpowiedzi, np. XSD # GET /products/1 <?xml version="1.0" encoding="UTF­8" ?> <product> <name>iPhone 5s</name> <price>2200,00 PLN</price> <description>Very modern and elegant...</description> <category>Telecommunication</category> <rating>5</rating> <opinions>101</opinions> </product>
  • 31. API microserwisów Wersjonowanie • Najlepsze rozwiązanie w przypadku „opublikowanych API” • Bardzo zwiększa narzut na utrzymanie systemu • Można obsługiwać tylko określoną liczbę wersji wstecz # GET /v2/products/1 <?xml version="1.0" encoding="UTF­8" ?> <product> <name>iPhone 5s</name> <price>2200,00 PLN</price> <description>Very modern and elegant...</description> <category>Telecommunication </category> <categories> <category>Telecommunication</category> <category>Mobile phones</category> </categories> <rating>5</rating> <opinions>101</opinions> </product>
  • 32. API microserwisów Extension points • Jeśli jednak chcesz walidować odpowiedzi oryginalną schemą • Każdy schemat jest kompatybilny do przodu i do tyłu • Dobry do przekazywania „ekstra” parametrów <xs:complexType name="Extension"> <xs:sequence> <xs:any minOccurs="1" maxOccurs="unbounded" processContents="lax" /> </xs:sequence> </xs:complexType>
  • 33. API microserwisów Consumer driven contract • Pokazuje które elementy API są wykorzystywane w procesach biznesowych • Mamy bardzo szybki feedback, która zmiana może się nie udać • #Schematron, #pact <pattern name="Validate product"> <rule context="*//p:Product"> <assert test="p:Name">Must contain Name</assert> <assert test="p:Price">Must contain Price</assert> </rule> </pattern>
  • 34. API microserwisów Distributed transactions • Write-of • Retry • Compensation A B C D
  • 36. Spring Boot – czym jest? • Automatyczna (domyślna) konfiguracja • Convention over configuration • Metryki • Startery • No XML Config • Standalone Apps
  • 37. Spring Boot - przykład dependencies { compile("org.springframework.boot:spring-boot-starter-web") } package hello; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.context.annotation.ComponentScan; @ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } package hello; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Spring Boot!"; } } build.gradle Application.java HelloController.java
  • 38. Spring Boot - przykład Build & Run gradle build java -jar java -jar build/libs/gs-rest-service-0.1.0.jar curl localhost:8080 Co siedzi w środku? • spring-core • spring-web • jackson • embedded-tomcat • Log4j • ... Czego nie ma w środku? • web.xml • beans.xml • ...
  • 39. Spring Boot – więcej przykładów Przewodniki od spring.io • można ukończyć w 10-15 minut • można zbudować maven'em lub gradl'em • można pobrać z github'a (wersja początkowa i końcowa) • są oparte o startery od Spring Boot
  • 40. Spring Boot Starters Spring Boot starters • Rozwijane przez community • Obejmują większość popularnych technologii używanych ze Springiem • Przykłady: jpa, web, test, tomcat, jetty, jdbc, batch, amqp, security...
  • 41. Production ready spring-boot-actuator monitoring oraz zdalny dostęp poprzez: • jmx • ssh endpointy: • /info • /health • /beans • /env • /dump • /metrics • /trace • /autoconfigurationreport • /shutdown
  • 42. Spring Boot vs Spring Roo find . ­type f | xargs cat | wc ­l find . ­type f | wc ­l Spring Roo • 1130 linii kodu • 26 plików Spring Boot • 87 linii kodu • 4 pliki
  • 43. Źródła • Martin Fowler, „Microservices”, March 2014, http://martinfowler.com/articles/microservices.html • Ian Robinson, „Consumer-Driven Contracts: A Service Evolution Pattern”, 12 June 2006 http://martinfowler.com/articles/consumerDrivenContracts.html • Martin Fowler, „Tolerant Reader”, 9 May 2011, http://martinfowler.com/bliki/TolerantReader.html • Martin Fowler, „Public versus Published Interfaces”, March/April 2002 • Sam Newman, „GeeCON 2014: Sam Newman - The Practical Implications Of Microservices” • Sam Newman, „GeeCON 2014: Sam Newman - Deploying And Testing Microservices” • Marco Vermeulen, „Building Microservices using Spring Boot and Friends”, Greach 2014 • James Hughes, „Micro Service Architecture”, http://yobriefca.se/blog/2013/04/28/micro-service-architecture • „Schematron”, http://www.schematron.com/ • „Pact”, https://github.com/realestate-com-au/pact • „Spring Boot” - http://projects.spring.io/spring-boot/ • „Fabric” - https://github.com/fabric/fabric • „Logstash” - http://logstash.net/ • „Kibana” - http://www.elasticsearch.org/guide/en/kibana/current/