SlideShare a Scribd company logo
1 of 19
Download to read offline
1 / 19
Java
Docker
Microservices
Přednášející: Jan Kaštánek
2 / 19
Proč Microservices
●
Oproti monolitu? To je dobrá otázka.
●
Snažší deployment.
●
Menší nutný kontext pro vývojáře. Může se
více soustředit na samotnou úlohu, než řešit
hodně věcí okolo.
3 / 19
Aplikační stack
●
React JS + Cypress
●
GraphQL
●
Spring Boot + Apache Camel
●
ActiveMQ (JMS)
●
Obsidian Scheduler
●
PostgreSQL, Redis
●
ELK (Elasticsearch, Logstash, Kibana)
●
Docker Swarm
4 / 19
Stavební kameny
5 / 19
Synchronizace dat
●
Každá služba má vlastní databázi a vzájemně
si nelezou do zelí
●
To prospívá izolaci datových struktur a dat
samotných
●
Entity, které hrají roli ve více databázích, mají
své tabulky v každé z nich. Jsou propojeny
referencí a atributy odpovídají kontextu
6 / 19
Synchronizace dat
7 / 19
Uživatelská session
●
Držení uživatelské
session v systému → trochu overkill
●
Řešením může být samonosná session cookie
●
JWT – specifkace pro přenos autorizačního
tokenu
●
JWT putuje s každým požadavkem napříč
službami a nese sebou informaci o volajícím,
což může být uživatel, nebo microservice
8 / 19
Uživatelská session
eyJraWQiOiJkZWZhdWx0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwOi8vYXV0aC91c2VyLzE4MjI0MyIsImlzcyI6ImdvcGF5LmNvbSIsInNjb3BlcyI6WyJyb2xlLmNsaWVudC5
vd25lciIsImh0dHA6Ly9jbGllbnQvY2xpZW50LXByb2ZpbGUvMTI42MjQ1MzUsImp0aSI6ImQ5MGVmMDc1LWU0YzgtNGExMC1hZjFjLWY4MDU4YzQ2MTM4MyIsInRhZ3MiOlsiZmN0OlBFUy
JdfQ.iwBbEzPsbXosa1ltzYfFNki-6-GJAiZoJEhwhdsWmPAorxaY6EWmucTDOm-mdPyeu38mH9VORUWYgNpXbiVWbKn-
r5W_eBgogU_NmuzTYi1sojUABJoXo0ubMIbLZbKke4QM5deJwCjMI6JOlv7HXTAH_sV4-
N4aElmzExp0ZwJoPehZnFu8sK80dY7YQL1Mt3Z_KqWQKClj6WNmmGZ3jQMy59oBV6M2MVlydEXDJemxqvT4ims7oYp21WoN-SIQiBFIZ-A6bQyf-NwgbYv6fAw
JWT:
9 / 19
Periodicky spouštěné úlohy
●
Nutnost zajistit provedení úlohy pouze jednou
instancí
●
Nutnost zajistit sekvenční provedení úloh
●
Bez nutnosti vlastní Quartz komponenty v
každé službě
●
Bez nutnosti nastavovat všechny CRONy pro
každou službu zvlášť
10 / 19
Periodicky spouštěné úlohy
11 / 19
Cluster
●
Docker Swarm – nativní nástroj pro
clusterizaci docker instancí aneb jak si udělat
jednu velkou docker instanci
●
Umožňuje replikování služeb
●
Umožňuje bezvýpadkový release
●
Umožňuje auto restart
●
Je snadný na použití
12 / 19
Cluster – software pro
monitorování: Portainer
13 / 19
Unit testy – TDD ve Springu
●
V první fázi vývoje. Testuje se kód.
●
Cílem je co nejlepší code coverage.
●
Umožňuje nahodit celý container jako HTTP
server a přímo testovat REST endpointy.
●
Spring profl ofine“ znamená, že nahozená
služba neprovolává nic směrem ven.
●
Umožňuje Dependency injection a
testování bean.
14 / 19
Unit testy - příklad
15 / 19
Unit testy – ofine režim
16 / 19
Integrační testy
●
Testy nad celou běžící aplikací.
●
Behaviorální testy – lidsky čitelný zápis
●
Slouží k otestování celé funkcionality
●
Slouží jako dokumentace
●
Slouží vývojářům při práci, podobně jako unit
testy
17 / 19
Integrační testy
Karate framework
18 / 19
Integrační testy
Karate framework
19 / 19
A pak taky ještě ….
●
… je toho hodně, ale prozatím děkuji za
pozornost :-)

More Related Content

Similar to Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices

Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
Pavel Růžička
 

Similar to Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices (20)

ASP.NET MVC a TDD
ASP.NET MVC a TDDASP.NET MVC a TDD
ASP.NET MVC a TDD
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Webinář: Oracle DBA - RAC - Úvod do problematiky
Webinář: Oracle DBA - RAC - Úvod do problematikyWebinář: Oracle DBA - RAC - Úvod do problematiky
Webinář: Oracle DBA - RAC - Úvod do problematiky
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
 
Čtvrtkon #98 - Sentry micro talk
Čtvrtkon #98 - Sentry micro talkČtvrtkon #98 - Sentry micro talk
Čtvrtkon #98 - Sentry micro talk
 
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featury
 
.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL Serveru
 
Proč (ne)chceš použít Vaadin pro vývoj webové aplikace
Proč (ne)chceš použít Vaadin pro vývoj webové aplikaceProč (ne)chceš použít Vaadin pro vývoj webové aplikace
Proč (ne)chceš použít Vaadin pro vývoj webové aplikace
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 
AWS spot instances
AWS spot instancesAWS spot instances
AWS spot instances
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
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
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 

More from Ctvrtkoncz

More from Ctvrtkoncz (16)

DEV Čtvrtkon #107 - Štefan Földesi
DEV Čtvrtkon #107 - Štefan FöldesiDEV Čtvrtkon #107 - Štefan Földesi
DEV Čtvrtkon #107 - Štefan Földesi
 
#85 Čtvrtkon - Obsahové UX - Milan Pichlík
#85 Čtvrtkon - Obsahové UX - Milan Pichlík#85 Čtvrtkon - Obsahové UX - Milan Pichlík
#85 Čtvrtkon - Obsahové UX - Milan Pichlík
 
DEV Čtvrtkon #76 - Open API
DEV Čtvrtkon #76 - Open APIDEV Čtvrtkon #76 - Open API
DEV Čtvrtkon #76 - Open API
 
DEV Čtvrtkon #76 - Makefile
DEV Čtvrtkon #76 - MakefileDEV Čtvrtkon #76 - Makefile
DEV Čtvrtkon #76 - Makefile
 
DEV Čtvrtkon #76 - nopCommerce
DEV Čtvrtkon #76 - nopCommerceDEV Čtvrtkon #76 - nopCommerce
DEV Čtvrtkon #76 - nopCommerce
 
DEV Čtvrtkon #76 - Fluent Interface
DEV Čtvrtkon #76 - Fluent InterfaceDEV Čtvrtkon #76 - Fluent Interface
DEV Čtvrtkon #76 - Fluent Interface
 
DEV Čtvrtkon #76 - Nachytřená domácnost
DEV Čtvrtkon #76 - Nachytřená domácnostDEV Čtvrtkon #76 - Nachytřená domácnost
DEV Čtvrtkon #76 - Nachytřená domácnost
 
DEV Čtvrtkon #76 - How to build an evil-free social network: Behind the wheels
DEV Čtvrtkon #76 - How to build an evil-free social network: Behind the wheelsDEV Čtvrtkon #76 - How to build an evil-free social network: Behind the wheels
DEV Čtvrtkon #76 - How to build an evil-free social network: Behind the wheels
 
Čtvrtkon: Podle jakých kritérií vybrat e-shopové řešení
Čtvrtkon: Podle jakých kritérií vybrat e-shopové řešeníČtvrtkon: Podle jakých kritérií vybrat e-shopové řešení
Čtvrtkon: Podle jakých kritérií vybrat e-shopové řešení
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Čtvrtkon #64 - AWS Serverless - Michal Haták
Čtvrtkon #64 - AWS Serverless - Michal HatákČtvrtkon #64 - AWS Serverless - Michal Haták
Čtvrtkon #64 - AWS Serverless - Michal Haták
 
Jak nakrmit Facebook firemní stránku a Instagram obsahem, co její fanoušci do...
Jak nakrmit Facebook firemní stránku a Instagram obsahem, co její fanoušci do...Jak nakrmit Facebook firemní stránku a Instagram obsahem, co její fanoušci do...
Jak nakrmit Facebook firemní stránku a Instagram obsahem, co její fanoušci do...
 
Pravdy a lži o reklamě na Facebooku - Lukáš Chládek
Pravdy a lži o reklamě na Facebooku - Lukáš ChládekPravdy a lži o reklamě na Facebooku - Lukáš Chládek
Pravdy a lži o reklamě na Facebooku - Lukáš Chládek
 
Vilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycleVilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycle
 
Jan Kaštánek - Od webových aplikací k Androidu
Jan Kaštánek - Od webových aplikací k AndroiduJan Kaštánek - Od webových aplikací k Androidu
Jan Kaštánek - Od webových aplikací k Androidu
 
Propagace eshopu v praxi - Čtvrtkon
Propagace eshopu v praxi - ČtvrtkonPropagace eshopu v praxi - Čtvrtkon
Propagace eshopu v praxi - Čtvrtkon
 

Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices

  • 2. 2 / 19 Proč Microservices ● Oproti monolitu? To je dobrá otázka. ● Snažší deployment. ● Menší nutný kontext pro vývojáře. Může se více soustředit na samotnou úlohu, než řešit hodně věcí okolo.
  • 3. 3 / 19 Aplikační stack ● React JS + Cypress ● GraphQL ● Spring Boot + Apache Camel ● ActiveMQ (JMS) ● Obsidian Scheduler ● PostgreSQL, Redis ● ELK (Elasticsearch, Logstash, Kibana) ● Docker Swarm
  • 5. 5 / 19 Synchronizace dat ● Každá služba má vlastní databázi a vzájemně si nelezou do zelí ● To prospívá izolaci datových struktur a dat samotných ● Entity, které hrají roli ve více databázích, mají své tabulky v každé z nich. Jsou propojeny referencí a atributy odpovídají kontextu
  • 7. 7 / 19 Uživatelská session ● Držení uživatelské session v systému → trochu overkill ● Řešením může být samonosná session cookie ● JWT – specifkace pro přenos autorizačního tokenu ● JWT putuje s každým požadavkem napříč službami a nese sebou informaci o volajícím, což může být uživatel, nebo microservice
  • 8. 8 / 19 Uživatelská session eyJraWQiOiJkZWZhdWx0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwOi8vYXV0aC91c2VyLzE4MjI0MyIsImlzcyI6ImdvcGF5LmNvbSIsInNjb3BlcyI6WyJyb2xlLmNsaWVudC5 vd25lciIsImh0dHA6Ly9jbGllbnQvY2xpZW50LXByb2ZpbGUvMTI42MjQ1MzUsImp0aSI6ImQ5MGVmMDc1LWU0YzgtNGExMC1hZjFjLWY4MDU4YzQ2MTM4MyIsInRhZ3MiOlsiZmN0OlBFUy JdfQ.iwBbEzPsbXosa1ltzYfFNki-6-GJAiZoJEhwhdsWmPAorxaY6EWmucTDOm-mdPyeu38mH9VORUWYgNpXbiVWbKn- r5W_eBgogU_NmuzTYi1sojUABJoXo0ubMIbLZbKke4QM5deJwCjMI6JOlv7HXTAH_sV4- N4aElmzExp0ZwJoPehZnFu8sK80dY7YQL1Mt3Z_KqWQKClj6WNmmGZ3jQMy59oBV6M2MVlydEXDJemxqvT4ims7oYp21WoN-SIQiBFIZ-A6bQyf-NwgbYv6fAw JWT:
  • 9. 9 / 19 Periodicky spouštěné úlohy ● Nutnost zajistit provedení úlohy pouze jednou instancí ● Nutnost zajistit sekvenční provedení úloh ● Bez nutnosti vlastní Quartz komponenty v každé službě ● Bez nutnosti nastavovat všechny CRONy pro každou službu zvlášť
  • 10. 10 / 19 Periodicky spouštěné úlohy
  • 11. 11 / 19 Cluster ● Docker Swarm – nativní nástroj pro clusterizaci docker instancí aneb jak si udělat jednu velkou docker instanci ● Umožňuje replikování služeb ● Umožňuje bezvýpadkový release ● Umožňuje auto restart ● Je snadný na použití
  • 12. 12 / 19 Cluster – software pro monitorování: Portainer
  • 13. 13 / 19 Unit testy – TDD ve Springu ● V první fázi vývoje. Testuje se kód. ● Cílem je co nejlepší code coverage. ● Umožňuje nahodit celý container jako HTTP server a přímo testovat REST endpointy. ● Spring profl ofine“ znamená, že nahozená služba neprovolává nic směrem ven. ● Umožňuje Dependency injection a testování bean.
  • 14. 14 / 19 Unit testy - příklad
  • 15. 15 / 19 Unit testy – ofine režim
  • 16. 16 / 19 Integrační testy ● Testy nad celou běžící aplikací. ● Behaviorální testy – lidsky čitelný zápis ● Slouží k otestování celé funkcionality ● Slouží jako dokumentace ● Slouží vývojářům při práci, podobně jako unit testy
  • 17. 17 / 19 Integrační testy Karate framework
  • 18. 18 / 19 Integrační testy Karate framework
  • 19. 19 / 19 A pak taky ještě …. ● … je toho hodně, ale prozatím děkuji za pozornost :-)