SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
MicroProfile Benefits for Monolithic Applications
Víctor Orozco
29 de Agosto de 2020
@tuxtor
1
Modular monoliths
Todo mundo odeia os monólitos . . . so que não
• Java vem criando sistemas
”legados”desde 1995
• O mundo ainda tenta sair do Java 8
• Banca, governo, telco
• Nem todo mundo é Netflix
2
Java no mundo real
”Como consultor independente é difícil aceitar que muito do trabalho real é
garantir a continuidade para sistemas legados”
Eu, bem triste mas com dinheiro na bolsa
3
2020 o ano da gurmetização do monólito
Figura 1: JRebel
4
2020 o ano da gurmetização do monólito
Figura 2: InfoQ
5
Microserviços
Vantagens: Elasticidade, tolerância à falhas, responsividade
Figura 3: Microservicios
Desvantagens: Complexidade de desenvolvimento, integração é gestão
6
Modular monolith
O objetivo nunca foi criar um exercito de
mini aplicativos. O objetivo sempre foi
criar ”reactive apps”ou seja aplicativos
responsivos e escaláveis.
Modular monolith = Monólito criado de
forma modular
1. Módulos intercambiáveis
2. Funcionalidade autônoma para cada
modulo
3. Encapsulação garantida por
contratos/interfaces
https://www.kamilgrzybek.com/design/modular-monolith-primer/
7
Modular monolith
Modular monolith = SOA modular sem XML
8
Eclipse MicroProfile
Jakarta EE
Figura 4: Credito: Reza Rahman 9
Eclipse MicroProfile
10
Eclipse MicroProfile
Bibliotecas
1. SmallRye
2. Apache Geronimo
3. Fujitsu Launcher
JEAS - FatJar, UberJar
1. DropWizard
2. KumuluzEE
3. Helidon (Oracle)
4. WebSphere/Open Liberty (IBM)
5. Quarkus (Red Hat)
6. Payara Micro
7. Apache TomEE
11
Eclipse MicroProfile
Micro server
1. Payara Micro
2. Apache TomEE
Full server (Jakarta EE/Java EE)
1. Payara
2. JBoss / Wildfly
3. WebSphere/Open Liberty
4. Apache TomEE
12
Eclipse MicroProfile para ”modular monolith”
• Integração = CDI
• APIs Micro em servers tradicionais
• Aproveitar os princípios de
arquitetura micro em entornos
tradicionais
13
Eclipse MicroProfile para ”modular monolith”
Use cases comuns
• Externalização da configuração (módulos intercambiáveis)
• Documentação de APIs para integradores e clientes (contratos e interfaces)
• Criação de comunicação Typesafe entre módulos via HTTP-Rest (contratos e
interfaces)
• Tolerância à falhas sem complicações (funcionalidade autônoma)
• Gestão de métricas e observabilidade (funcionalidade autônoma)
14
MP Use cases
Configuração
• MP Config
• Alternativas: Apache Tamaya, DeltaSpike Config
• Bom para: Docker, K8s, Maven Profiles + Filtering
• Monólito: Configuração no deployment, alternativa
simples ao JNDI, evita a necessidade de
recompilação
15
Documentação
• MP OpenAPI
• Alternativas: Swagger Java
• Bom para: Documentação REST
• Monólito: Definição de integrações, documentações on-line
16
Comunicação REST TypeSafe
• MP TypeSafe REST Client
• Alternativas: Jersey, Hoodie
• Bom para: Integrações via HTTP
• Monólito: Separação de responsabilidade, eventual
possibilidade de levar os módulos para
microserviçõs
17
Tolerância â falhas
• MP Fault Tolerance
• Alternativas: Hystrix, ResilenceJ
• Bom para: Cotas, SLAs, Tolerância à falhas
• Monólito: APIs mais resilientes, independência na
cadeia de confiança entre serviços
18
Métricas
• MP Metrics
• Alternativas: Metrics CDI
• Bom para: Docker, K8s
• Monólito: Evitar complexidade do JMX, MBeans,
monitoramento via http
19
Demo time!
• Payara
• Docker
• Oracle cloud
Objetivo: Olá mundo, modular, autônomo e intercambiável
Java 11, JAX-RS, CDI, MicroProfile
https://github.com/tuxtor/MP-Workshop
20
Víctor Orozco
• me@vorozco.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under a
Creative Commons
Attribution-ShareAlike 3.0.
21

Mais conteúdo relacionado

Mais procurados

Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Renato Groff
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)Wellington Silva
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerStefan Teixeira
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Docker - Um capitulo à parte
Docker - Um capitulo à parteDocker - Um capitulo à parte
Docker - Um capitulo à parteMaurício Harley
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 

Mais procurados (20)

Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Vagrant sti
Vagrant stiVagrant sti
Vagrant sti
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Docker - Um capitulo à parte
Docker - Um capitulo à parteDocker - Um capitulo à parte
Docker - Um capitulo à parte
 
GUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EEGUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EE
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
.Net Core + Docker
.Net Core +  Docker.Net Core +  Docker
.Net Core + Docker
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 

Semelhante a MicroProfile Benefits for Modular Monoliths

Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida realCriciúma Dev
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuWagner Souza
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesPotiLivre Sobrenome
 
Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Alessandro Binhara
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com IstioJonh Wendell
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsAlessandro Binhara
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvcJhordam Siqueira
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Luiz Costa
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...tdc-globalcode
 
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não WindowsPalestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não WindowsAlessandro Binhara
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservicesDanilo Iurovski
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Filipe Portes
 

Semelhante a MicroProfile Benefits for Modular Monoliths (20)

Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viu
 
Introducao a Microservices
Introducao a MicroservicesIntroducao a Microservices
Introducao a Microservices
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
 
Ruby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e ondeRuby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e onde
 
O projeto Mono
O projeto MonoO projeto Mono
O projeto Mono
 
Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com Istio
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não Windows
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
 
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não WindowsPalestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservices
 
Micro serviços ppt
Micro serviços pptMicro serviços ppt
Micro serviços ppt
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 

Mais de Víctor Leonel Orozco López

Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosVíctor Leonel Orozco López
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Víctor Leonel Orozco López
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudVíctor Leonel Orozco López
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMVíctor Leonel Orozco López
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfileVíctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareVíctor Leonel Orozco López
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Víctor Leonel Orozco López
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesVíctor Leonel Orozco López
 

Mais de Víctor Leonel Orozco López (20)

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
 
De Java 8 a Java 17
De Java 8 a Java 17De Java 8 a Java 17
De Java 8 a Java 17
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Tolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassisTolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassis
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfile
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
 

MicroProfile Benefits for Modular Monoliths

  • 1. MicroProfile Benefits for Monolithic Applications Víctor Orozco 29 de Agosto de 2020 @tuxtor 1
  • 3. Todo mundo odeia os monólitos . . . so que não • Java vem criando sistemas ”legados”desde 1995 • O mundo ainda tenta sair do Java 8 • Banca, governo, telco • Nem todo mundo é Netflix 2
  • 4. Java no mundo real ”Como consultor independente é difícil aceitar que muito do trabalho real é garantir a continuidade para sistemas legados” Eu, bem triste mas com dinheiro na bolsa 3
  • 5. 2020 o ano da gurmetização do monólito Figura 1: JRebel 4
  • 6. 2020 o ano da gurmetização do monólito Figura 2: InfoQ 5
  • 7. Microserviços Vantagens: Elasticidade, tolerância à falhas, responsividade Figura 3: Microservicios Desvantagens: Complexidade de desenvolvimento, integração é gestão 6
  • 8. Modular monolith O objetivo nunca foi criar um exercito de mini aplicativos. O objetivo sempre foi criar ”reactive apps”ou seja aplicativos responsivos e escaláveis. Modular monolith = Monólito criado de forma modular 1. Módulos intercambiáveis 2. Funcionalidade autônoma para cada modulo 3. Encapsulação garantida por contratos/interfaces https://www.kamilgrzybek.com/design/modular-monolith-primer/ 7
  • 9. Modular monolith Modular monolith = SOA modular sem XML 8
  • 11. Jakarta EE Figura 4: Credito: Reza Rahman 9
  • 13. Eclipse MicroProfile Bibliotecas 1. SmallRye 2. Apache Geronimo 3. Fujitsu Launcher JEAS - FatJar, UberJar 1. DropWizard 2. KumuluzEE 3. Helidon (Oracle) 4. WebSphere/Open Liberty (IBM) 5. Quarkus (Red Hat) 6. Payara Micro 7. Apache TomEE 11
  • 14. Eclipse MicroProfile Micro server 1. Payara Micro 2. Apache TomEE Full server (Jakarta EE/Java EE) 1. Payara 2. JBoss / Wildfly 3. WebSphere/Open Liberty 4. Apache TomEE 12
  • 15. Eclipse MicroProfile para ”modular monolith” • Integração = CDI • APIs Micro em servers tradicionais • Aproveitar os princípios de arquitetura micro em entornos tradicionais 13
  • 16. Eclipse MicroProfile para ”modular monolith” Use cases comuns • Externalização da configuração (módulos intercambiáveis) • Documentação de APIs para integradores e clientes (contratos e interfaces) • Criação de comunicação Typesafe entre módulos via HTTP-Rest (contratos e interfaces) • Tolerância à falhas sem complicações (funcionalidade autônoma) • Gestão de métricas e observabilidade (funcionalidade autônoma) 14
  • 18. Configuração • MP Config • Alternativas: Apache Tamaya, DeltaSpike Config • Bom para: Docker, K8s, Maven Profiles + Filtering • Monólito: Configuração no deployment, alternativa simples ao JNDI, evita a necessidade de recompilação 15
  • 19. Documentação • MP OpenAPI • Alternativas: Swagger Java • Bom para: Documentação REST • Monólito: Definição de integrações, documentações on-line 16
  • 20. Comunicação REST TypeSafe • MP TypeSafe REST Client • Alternativas: Jersey, Hoodie • Bom para: Integrações via HTTP • Monólito: Separação de responsabilidade, eventual possibilidade de levar os módulos para microserviçõs 17
  • 21. Tolerância â falhas • MP Fault Tolerance • Alternativas: Hystrix, ResilenceJ • Bom para: Cotas, SLAs, Tolerância à falhas • Monólito: APIs mais resilientes, independência na cadeia de confiança entre serviços 18
  • 22. Métricas • MP Metrics • Alternativas: Metrics CDI • Bom para: Docker, K8s • Monólito: Evitar complexidade do JMX, MBeans, monitoramento via http 19
  • 23. Demo time! • Payara • Docker • Oracle cloud Objetivo: Olá mundo, modular, autônomo e intercambiável Java 11, JAX-RS, CDI, MicroProfile https://github.com/tuxtor/MP-Workshop 20
  • 24. Víctor Orozco • me@vorozco.com • @tuxtor • http://vorozco.com • http://tuxtor.shekalug.org This work is licensed under a Creative Commons Attribution-ShareAlike 3.0. 21