SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Mikroservisna Arhitektura
Dropwizard Vs Spring Boot
Nenad Pečanac
Serengeti
Sadržaj
1) Definicija
2) Monolitna arhitektura
3) Mikroservisna arhitektura
4) Prednosti i mane mikroservisa
5) Dropwizard Vs Spring Boot
6) Reference
1) Definicija
Mikroservisna Arhitektura
“Mikroservisna arhitektura je princip razvoja
aplikacija u obliku malih, izdvojenih servisa,
pri čemu svaki servis ima svoj proces i ostvaruje
komunikaciju putem jednostavnih mehanizama
kao što je HTTP API”.
Martin Fowler, ThoughtWorks
2) Monolitna arhitektura
Monolitna arhihetktura
Monolitna arhihetktura (1)
Klasičan oblik arhitekture.
Aplikacija je izgrađena kao jedna cjelina.
Tipična troslojna Enteprise aplikacija:
- Klijentski UI (Browser, HTML + JS)
- Baza podataka (RDBMS, NoSql ..)
- Serverska aplikacija
(Java, .NET, Ruby, Python, PHP ..)
Monolitna arhihetktura (2)
Serverska aplikacija:
- obrađuje HTTP zahtjeve
- izvršava poslovnu logiku
- čita i ažurira podatke iz baze
- generira HTML i šalje ga klijentu.
Serverska aplikacija je Monolit -
jedinstvena logička izvršna cjelina.
Monolitna arhihetktura (3)
Monolitni server – prirodan način razvoja.
Sva logika obrade zahtjeva se izvršava u jednom
procesu, razdijeljenom i organiziranom u
klase, metode i pakete.
Aplikaciju je moguće razvijati i testirati na laptopu
nakon čega slijedi postavljanje na testnu
i produkcijsku okolinu.
Monolit se horizontalno skalira izvršavanjem više
instanci aplikacije iza load-balancera.
Monolitna arhihetktura (4)
Promjene bilo kojeg dijela aplikacije zahtjevaju
ponovno prevođenje i postavljanje nove verzije
aplikacije na testnu i produkcijsku okolinu.
Promjene zahtjevaju dobro planiranje i koordinaciju.
Promjene su skupe.
Dobru modularnu strukturu je teško postići.
Skaliranje se provodi skaliranjem cijele aplikacije,
umjesto skaliranjem dijelova koji zahtjevaju više
resursa.
Monolitna arhihetktura
Primjer
3) Mikroservisna arhitektura
Mikroservisna arhitektura
Mikroservisna arhitektura (1)
Aplikacije se počinju razvijati kao Monoliti,
po potrebi se skaliraju i s vremenom prelaze
na Mikroservisnu arhitekturu.
Dijelovi aplikacije se izdvajanju iz Monolita zbog
boljeg upravljanja resursima.
Aplikacije se rastavljanju na Komponente
- manje, nezavisne servisne aplikacije.
Mikroservisna arhitektura (2)
Komponente se grade nad poslovnim cjelinama.
Svaka komponenta se izvršava kao zasebna
aplikacija u potrebnom broju instanci na klasteru.
Mikroservisna arhitektura (3)
Decentralizirano upravljanje podacima.
Mikroservisna arhitektura (4)
Komponente trebaju biti nezavisne i vrlo
učinkovito povezane.
Komponente najčešće komuniciaju preko REST-a.
Ponekad se koristi jednostavna asinkrona
komunikacija (RabbitMQ, Zero MQ).
Ne koristi se ESB ili neki drugi centralni
komunikacijski mehanizam.
Mikroservisna arhitektura (5)
Decentralizirana komunikacija:
Mikroservisna arhitektura (6)
Komponente prema dizajnu moraju biti otporne na
poteškoće i kvarove.
Svaka komponenta se može pokvariti ili postati
nedostupna, u bilo kojem trenutnku.
Pravovremena detekcija grešaka i automatski
oporavak, ukoliko je moguć, su vrlo važni.
Mikroservisne aplikacije pridaju puno važnosti
nadgledanju rada komponenti i sustava u cijelosti.
Mikroservisna arhitektura (7)
Netflixov Chaos Monkey svakodnevno izaziva
kvarove komponenti kako bi se testirala
otpornost sustava na greške.
Mikroservisi i SOA
SOA
XML
Complex to integrate
Heavy
Requires tooling
HTTP/SOAP
Mikroservisi
JSON
Easy to integrate
Lightweight
Light tooling
HTTP/REST
Mikroservisna arhitektura
Tko koristi Mikroservise u produkcijskim sustavima?
Mikroservisna arhitektura
Primjer
Mikroservisna arhitektura
API Gateway
4) Prednosti i mane mikroservisa
Prednosti (1)
Razvojni timovi mogu razvijati i isporučivati aplikacije
relativno neovisno jedni o drugima.
Komponente mogu biti implementirane sa različitim
tehnologijama i pisane u različitim
programskim jezicima.
Različiti timovi mogu razvijati komponente.
Moguće je korištenje različitih baza podataka.
Centralizirano upravljanje je minimalno.
Prednosti (2)
Komponente se mogu nezvisno isporučivati i
automatski postavljati na servere.
Mikroservisna arhitektura dobro funkcionira uz
Continuous Integration i Continuous Delivery.
Moguće je često izdavanje i ažuriranje verzija
komponenti uz održavanje stabilnosti
ostatka sustava.
Mane (1)
Složenost distribuiranih sustava.
Složenost međuservisne komunikacije.
Nepostojanje distribuiranih transakcija.
Složenost operativnih procesa.
Otežano testiranje zbog interakcija komponenti.
Potreba za robusnim upravljanjem greškama
i automatskim oporavkom.
Potreba za sofisticiranim nadgledanjem rada.
5) Dropwizard Vs Spring Boot
Dropwizard Vs Spring Boot (1)
Mikroservisni kontejneri i razvojni okviri za ubrzanu
izradu mikroservisnih aplikacija.
Konvencija umjesto konfiguracije.
Aplikacije se pakiraju u izvšne JAR datoteke
sa ugrađenim serverima (Jetty, Tomcat, Undertow).
Podrška za nadgledanje, logiranje i provjeravanje.
Podrška za korištenje standardnih biblioteka.
Dropwizard Vs Spring Boot (2)
Dropwizard Vs Spring Boot (3)
Dropwizard podržava Jetty.
Spring Boot se fokusira na Spring aplikacije, a
podržava Tomcat, Jetty i Undertow.
Dropwizard imlementira REST preko Jersey-a.
Spring Boot implementira REST kroz standardnu
podršku iz Spring Framework-a.
Dropwizard koristi Logback, Spring podržava
Logback, log4j I log4j2.
Dropwizard Vs Spring Boot (4)
Glavna razlika među kontejnerima je podrška za
Dependency Injection.
Spring ima ugrađenu podršku dok Dropwizard
ostavlja mogućnost integracije sa okvirom po izboru.
Oba kontejnera sadrže posebne module za testiranje
koji uključuju JUnit i Mockito.
Razlike:
1) Spring Boot je dio Spring-ovog ekosustava i
najprimjereniji je korišenju u Spring projektima.
2) Spring pruža široku listu podržanih tehnologija:
REST, JMS, Messaging …
3) Dependency Injection – Dropwizard omogućava
integraciju sa okvirima kao Guice, CDI, Pico …
4) Dropwizard sadrži popularnu Metrics biblioteku za
nadgledanje rada aplikacija.
6) Reference
Reference
Martin Fowler: Microservices
Craig Richardson: Microservice Architecture Pattern
Craig Richardson: Decomposing Applications
Stefan Borsje: How we built microservcies at Karma
Benjamin Wootton: Microservices - Not a free lunch
Dropwizard: http://www.dropwizard.io/
Spring Boot: http://projects.spring.io/spring-boot/
Alex Zhitnitsky: Dropwizard Vs Spring Boot
Rizvan Ulah: Dropwizard Vs Spring Boot

Mais conteúdo relacionado

Destaque

Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)
Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)
Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)SKOLKOVO
 
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...Alan McSweeney
 
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewEnterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewWinton Winton
 
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...Enterprise Architecture Governance for an Enterprise Transformation Journey: ...
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...Marcelo Sávio
 
Introduction to Enterprise Architecture
Introduction to Enterprise ArchitectureIntroduction to Enterprise Architecture
Introduction to Enterprise ArchitectureMohammed Omar
 
Enterprise Architecture Frameworks
Enterprise Architecture FrameworksEnterprise Architecture Frameworks
Enterprise Architecture FrameworksStephen Lahanas
 
Introduction to Enterprise Architecture
Introduction to Enterprise Architecture Introduction to Enterprise Architecture
Introduction to Enterprise Architecture Leo Shuster
 
Implementing Effective Enterprise Architecture
Implementing Effective Enterprise ArchitectureImplementing Effective Enterprise Architecture
Implementing Effective Enterprise ArchitectureLeo Shuster
 
Architecture Governance in Brief
Architecture Governance in BriefArchitecture Governance in Brief
Architecture Governance in BriefAnthony Dehnashi
 
Enterprise Architecture Governance: A Framework for Successful Business
Enterprise Architecture Governance: A Framework for Successful BusinessEnterprise Architecture Governance: A Framework for Successful Business
Enterprise Architecture Governance: A Framework for Successful BusinessNathaniel Palmer
 

Destaque (12)

Arhitektura Enterprise Resenja
Arhitektura Enterprise ResenjaArhitektura Enterprise Resenja
Arhitektura Enterprise Resenja
 
Architecture governance
Architecture governanceArchitecture governance
Architecture governance
 
Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)
Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)
Alex Osterwalder: Business Models Reloaded (SKOLKOVO open lecture)
 
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...
Integrating It Frameworks, Methodologies And Best Practices Into It Delivery ...
 
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewEnterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
 
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...Enterprise Architecture Governance for an Enterprise Transformation Journey: ...
Enterprise Architecture Governance for an Enterprise Transformation Journey: ...
 
Introduction to Enterprise Architecture
Introduction to Enterprise ArchitectureIntroduction to Enterprise Architecture
Introduction to Enterprise Architecture
 
Enterprise Architecture Frameworks
Enterprise Architecture FrameworksEnterprise Architecture Frameworks
Enterprise Architecture Frameworks
 
Introduction to Enterprise Architecture
Introduction to Enterprise Architecture Introduction to Enterprise Architecture
Introduction to Enterprise Architecture
 
Implementing Effective Enterprise Architecture
Implementing Effective Enterprise ArchitectureImplementing Effective Enterprise Architecture
Implementing Effective Enterprise Architecture
 
Architecture Governance in Brief
Architecture Governance in BriefArchitecture Governance in Brief
Architecture Governance in Brief
 
Enterprise Architecture Governance: A Framework for Successful Business
Enterprise Architecture Governance: A Framework for Successful BusinessEnterprise Architecture Governance: A Framework for Successful Business
Enterprise Architecture Governance: A Framework for Successful Business
 

Semelhante a JavaCro'15 - Microservice architecture - Nenad Pečanac

Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayNETMedia
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
 
Upravljanje Web Uslugama u IT okruženjima
Upravljanje Web Uslugama u IT okruženjimaUpravljanje Web Uslugama u IT okruženjima
Upravljanje Web Uslugama u IT okruženjimaandrea132961
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeMihovil Rister
 
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platformaWeb::Strategija
 
FSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacijaFSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacijaDinko Korunic
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudDubravko Marak
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)IT Showoff
 
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u AzureuLuka Lovosevic
 
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxPOSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxLarlochLes
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseKristijan Duvnjak
 

Semelhante a JavaCro'15 - Microservice architecture - Nenad Pečanac (20)

Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump Day
 
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)
 
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad PećanacJavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
 
Upravljanje Web Uslugama u IT okruženjima
Upravljanje Web Uslugama u IT okruženjimaUpravljanje Web Uslugama u IT okruženjima
Upravljanje Web Uslugama u IT okruženjima
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil RisterJavantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
 
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma
(WS14) Tomislav Tipuric - Cloud kao aplikacijska platforma
 
FSEC2011-Dinko
FSEC2011-DinkoFSEC2011-Dinko
FSEC2011-Dinko
 
FSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacijaFSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacija
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloud
 
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
 
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
 
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxPOSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL database
 

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

JavaCro'15 - Microservice architecture - Nenad Pečanac

  • 1. Mikroservisna Arhitektura Dropwizard Vs Spring Boot Nenad Pečanac Serengeti
  • 2. Sadržaj 1) Definicija 2) Monolitna arhitektura 3) Mikroservisna arhitektura 4) Prednosti i mane mikroservisa 5) Dropwizard Vs Spring Boot 6) Reference
  • 4. Mikroservisna Arhitektura “Mikroservisna arhitektura je princip razvoja aplikacija u obliku malih, izdvojenih servisa, pri čemu svaki servis ima svoj proces i ostvaruje komunikaciju putem jednostavnih mehanizama kao što je HTTP API”. Martin Fowler, ThoughtWorks
  • 7. Monolitna arhihetktura (1) Klasičan oblik arhitekture. Aplikacija je izgrađena kao jedna cjelina. Tipična troslojna Enteprise aplikacija: - Klijentski UI (Browser, HTML + JS) - Baza podataka (RDBMS, NoSql ..) - Serverska aplikacija (Java, .NET, Ruby, Python, PHP ..)
  • 8. Monolitna arhihetktura (2) Serverska aplikacija: - obrađuje HTTP zahtjeve - izvršava poslovnu logiku - čita i ažurira podatke iz baze - generira HTML i šalje ga klijentu. Serverska aplikacija je Monolit - jedinstvena logička izvršna cjelina.
  • 9. Monolitna arhihetktura (3) Monolitni server – prirodan način razvoja. Sva logika obrade zahtjeva se izvršava u jednom procesu, razdijeljenom i organiziranom u klase, metode i pakete. Aplikaciju je moguće razvijati i testirati na laptopu nakon čega slijedi postavljanje na testnu i produkcijsku okolinu. Monolit se horizontalno skalira izvršavanjem više instanci aplikacije iza load-balancera.
  • 10. Monolitna arhihetktura (4) Promjene bilo kojeg dijela aplikacije zahtjevaju ponovno prevođenje i postavljanje nove verzije aplikacije na testnu i produkcijsku okolinu. Promjene zahtjevaju dobro planiranje i koordinaciju. Promjene su skupe. Dobru modularnu strukturu je teško postići. Skaliranje se provodi skaliranjem cijele aplikacije, umjesto skaliranjem dijelova koji zahtjevaju više resursa.
  • 14. Mikroservisna arhitektura (1) Aplikacije se počinju razvijati kao Monoliti, po potrebi se skaliraju i s vremenom prelaze na Mikroservisnu arhitekturu. Dijelovi aplikacije se izdvajanju iz Monolita zbog boljeg upravljanja resursima. Aplikacije se rastavljanju na Komponente - manje, nezavisne servisne aplikacije.
  • 15. Mikroservisna arhitektura (2) Komponente se grade nad poslovnim cjelinama. Svaka komponenta se izvršava kao zasebna aplikacija u potrebnom broju instanci na klasteru.
  • 17. Mikroservisna arhitektura (4) Komponente trebaju biti nezavisne i vrlo učinkovito povezane. Komponente najčešće komuniciaju preko REST-a. Ponekad se koristi jednostavna asinkrona komunikacija (RabbitMQ, Zero MQ). Ne koristi se ESB ili neki drugi centralni komunikacijski mehanizam.
  • 19. Mikroservisna arhitektura (6) Komponente prema dizajnu moraju biti otporne na poteškoće i kvarove. Svaka komponenta se može pokvariti ili postati nedostupna, u bilo kojem trenutnku. Pravovremena detekcija grešaka i automatski oporavak, ukoliko je moguć, su vrlo važni. Mikroservisne aplikacije pridaju puno važnosti nadgledanju rada komponenti i sustava u cijelosti.
  • 20. Mikroservisna arhitektura (7) Netflixov Chaos Monkey svakodnevno izaziva kvarove komponenti kako bi se testirala otpornost sustava na greške.
  • 21. Mikroservisi i SOA SOA XML Complex to integrate Heavy Requires tooling HTTP/SOAP Mikroservisi JSON Easy to integrate Lightweight Light tooling HTTP/REST
  • 22. Mikroservisna arhitektura Tko koristi Mikroservise u produkcijskim sustavima?
  • 25. 4) Prednosti i mane mikroservisa
  • 26. Prednosti (1) Razvojni timovi mogu razvijati i isporučivati aplikacije relativno neovisno jedni o drugima. Komponente mogu biti implementirane sa različitim tehnologijama i pisane u različitim programskim jezicima. Različiti timovi mogu razvijati komponente. Moguće je korištenje različitih baza podataka. Centralizirano upravljanje je minimalno.
  • 27. Prednosti (2) Komponente se mogu nezvisno isporučivati i automatski postavljati na servere. Mikroservisna arhitektura dobro funkcionira uz Continuous Integration i Continuous Delivery. Moguće je često izdavanje i ažuriranje verzija komponenti uz održavanje stabilnosti ostatka sustava.
  • 28. Mane (1) Složenost distribuiranih sustava. Složenost međuservisne komunikacije. Nepostojanje distribuiranih transakcija. Složenost operativnih procesa. Otežano testiranje zbog interakcija komponenti. Potreba za robusnim upravljanjem greškama i automatskim oporavkom. Potreba za sofisticiranim nadgledanjem rada.
  • 29. 5) Dropwizard Vs Spring Boot
  • 30. Dropwizard Vs Spring Boot (1) Mikroservisni kontejneri i razvojni okviri za ubrzanu izradu mikroservisnih aplikacija. Konvencija umjesto konfiguracije. Aplikacije se pakiraju u izvšne JAR datoteke sa ugrađenim serverima (Jetty, Tomcat, Undertow). Podrška za nadgledanje, logiranje i provjeravanje. Podrška za korištenje standardnih biblioteka.
  • 32. Dropwizard Vs Spring Boot (3) Dropwizard podržava Jetty. Spring Boot se fokusira na Spring aplikacije, a podržava Tomcat, Jetty i Undertow. Dropwizard imlementira REST preko Jersey-a. Spring Boot implementira REST kroz standardnu podršku iz Spring Framework-a. Dropwizard koristi Logback, Spring podržava Logback, log4j I log4j2.
  • 33. Dropwizard Vs Spring Boot (4) Glavna razlika među kontejnerima je podrška za Dependency Injection. Spring ima ugrađenu podršku dok Dropwizard ostavlja mogućnost integracije sa okvirom po izboru. Oba kontejnera sadrže posebne module za testiranje koji uključuju JUnit i Mockito.
  • 34. Razlike: 1) Spring Boot je dio Spring-ovog ekosustava i najprimjereniji je korišenju u Spring projektima. 2) Spring pruža široku listu podržanih tehnologija: REST, JMS, Messaging … 3) Dependency Injection – Dropwizard omogućava integraciju sa okvirima kao Guice, CDI, Pico … 4) Dropwizard sadrži popularnu Metrics biblioteku za nadgledanje rada aplikacija.
  • 36. Reference Martin Fowler: Microservices Craig Richardson: Microservice Architecture Pattern Craig Richardson: Decomposing Applications Stefan Borsje: How we built microservcies at Karma Benjamin Wootton: Microservices - Not a free lunch Dropwizard: http://www.dropwizard.io/ Spring Boot: http://projects.spring.io/spring-boot/ Alex Zhitnitsky: Dropwizard Vs Spring Boot Rizvan Ulah: Dropwizard Vs Spring Boot