SlideShare uma empresa Scribd logo
1 de 24
Globalcode – Open4education
Microprofile
Facilitando o desenvolvimento de Microserviços
Ivan Junckes Filho
Daniel Cunha
Globalcode – Open4education
O que vamos abordar?
● Overview Microserviços
● História do Microprofile
● Desafios de uma arquitetura de microserviços
● Como resolver esses desafios
○ Configuration
○ Health
○ Open Tracing
○ Fault Tolerance
○ OpenAPI / Swagger UI
○ Metrics
○ Json Web Token (JWT)
○ Rest Client
● Deploy utilizando Docker / Apache TomEE
Globalcode – Open4education
Por que Microserviços?
• Evitar grande arquitetura monolítica
• Partes reutilizáveis
• Nenhum deployment de grande impacto
• Escalar serviços independentemente
• Sistemas autocontidos
• Cloud Native
• Entregar novas funcionalidades mais rapidamente
• Times pequenos, ágeis e desenvolvimento paralelo
Globalcode – Open4education
Desafios
• Escalabilidade
• Redução de Custos
• Resiliência
• Monitoramento
• Segurança
Globalcode – Open4education
Falando de forma mais específica...
1. Gerenciamento de configuração baseado em cada container (MP Config)
2. Avaliar disponibilidade das aplicações (MP Health)
3. Avaliar desempenho das aplicações (MP Metrics)
4. Autenticação e Autorização (MP JWT)
5. Documentação (MP OpenAPI)
6. Avaliar logs em ambientes distribuídos (MP Open Tracing)
7. Microserviço está fora, e agora? (MP Fault Tolerance)
8. API Discovery de forma eficiente (MP Rest Client)
Globalcode – Open4education
Como resolver esses desafios em
utilizando Java?
Globalcode – Open4education
O que é Microprofile?
• https://microprofile.io/
• Enterprise Java for Microservices
• Open Source
• Hosted at Eclipse Foundation
Globalcode – Open4education
O que é Microprofile?
• Versão 1.0 com CDI, JAX-RS e JSON-P
• Portabilidade entre os diferentes servidores
Globalcode – Open4education
O que é Microprofile?
Globalcode – Open4education
Último release Fev. 2019
MicroProfile 2.2
JAX-RS 2.1JSON-P 1.1CDI 2.0
Config 1.3
Fault
Tolerance
2.0
JWT
Propagation
1.1
Health
Check 1.0
Metrics 1.1
Open
Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 2.1)
= New
Rest Client
1.2
JSON-B 1.0
Globalcode – Open4education
Implementações
Globalcode – Open4education
Arquitetura
Book-API Number-API
Globalcode – Open4education
Configuration
• Aplicações precisam de configurações diferentes de
acordo com o ambiente
• Trocar configuração sem ter que empacotar novamente o
projeto
• Baseado no DeltaSpike Config, Apache Tamaya e Sabot
Globalcode – Open4education
Configuration
• META-INF/microprofile-config.properties
• Environment properties
• System properties
• Fontes de configuração customizáveis
Globalcode – Open4education
Health
• Avaliar o estado de um node
• Processos automatizados para manter o estado dos nodes
• API simples para especificar o estado de um node
• /health JAX-RS endpoint
• Resposta indica se o servidor está saudável
• Payload pode incluir mais detalhes
Globalcode – Open4education
Open Tracing
• Rastrear o fluxo das requisições entre os serviços
• OpenTracing é um padrão de rastreamento
distríbuido para aplicações
• @Traced
Globalcode – Open4education
Fault Tolerance
• Inspirado no Hystrix e Failsafe
• Diferentes estratégias para guiar a execução e
resultado de uma lógica
• TimeOut, RetryPolicy, Fallback, Bulkhead and
Circuit Breaker
Globalcode – Open4education
Circuit Breaker
Globalcode – Open4education
OpenAPI
• Java API para a especificação OpenAPI v3
• OpenAPI v3 foi originada do Swagger v2
• Anotações devem ser similares
Globalcode – Open4education
Rest Client
• Microservices falam normalmente REST com outros
serviços
• Consistente e fácil de reutilizar
• Type Safe
• Extends JAX-RS 2.0 API’s
• Uma forma mais natural de implementar os serviços
• Similar ao framework Feign
Globalcode – Open4education
Metrics
• Monitorar parâmetros essenciais do sistema
• Garantir estabilidade do sistema
• Monitorar endpoints e coletar dados
• Acessível via interface REST
• GET /metrics/base
• GET /metrics/application
• GET /metrics/vendor
• JSON ou Prometheus
• OPTIONS provém metadados como a unidade de medida
Globalcode – Open4education
Metrics
• Counted
• Gauge
• Metered
• Timed
• Histogram
Globalcode – Open4education
JWT Propagation
• Tokens de segurança
• Utilizações mais comuns: OAuth2, OpenID
Connect JWT
• Propagar identidades entre serviços de forma
Stateless
Globalcode – Open4education
Getting started
https://start.microprofile.io/

Mais conteúdo relacionado

Semelhante a Microprofile - Facilitando o desenvolvimento de Microserviços

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...Clavis Segurança da Informação
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Paula Santana
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityInael Rodrigues
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumMaximiliano Alves
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1WSO2
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeKamilla Queiroz Xavier
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao HabitatIgor Abade
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...SegInfo
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonGuilherme Vierno
 
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluçõesTDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluçõestdc-globalcode
 

Semelhante a Microprofile - Facilitando o desenvolvimento de Microserviços (20)

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...
V SEGINFO: “Utilizando padrões abertos para Coleta de informações e Assessmen...
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appium
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao Habitat
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em Python
 
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluçõesTDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 

Microprofile - Facilitando o desenvolvimento de Microserviços

  • 1. Globalcode – Open4education Microprofile Facilitando o desenvolvimento de Microserviços Ivan Junckes Filho Daniel Cunha
  • 2. Globalcode – Open4education O que vamos abordar? ● Overview Microserviços ● História do Microprofile ● Desafios de uma arquitetura de microserviços ● Como resolver esses desafios ○ Configuration ○ Health ○ Open Tracing ○ Fault Tolerance ○ OpenAPI / Swagger UI ○ Metrics ○ Json Web Token (JWT) ○ Rest Client ● Deploy utilizando Docker / Apache TomEE
  • 3. Globalcode – Open4education Por que Microserviços? • Evitar grande arquitetura monolítica • Partes reutilizáveis • Nenhum deployment de grande impacto • Escalar serviços independentemente • Sistemas autocontidos • Cloud Native • Entregar novas funcionalidades mais rapidamente • Times pequenos, ágeis e desenvolvimento paralelo
  • 4. Globalcode – Open4education Desafios • Escalabilidade • Redução de Custos • Resiliência • Monitoramento • Segurança
  • 5. Globalcode – Open4education Falando de forma mais específica... 1. Gerenciamento de configuração baseado em cada container (MP Config) 2. Avaliar disponibilidade das aplicações (MP Health) 3. Avaliar desempenho das aplicações (MP Metrics) 4. Autenticação e Autorização (MP JWT) 5. Documentação (MP OpenAPI) 6. Avaliar logs em ambientes distribuídos (MP Open Tracing) 7. Microserviço está fora, e agora? (MP Fault Tolerance) 8. API Discovery de forma eficiente (MP Rest Client)
  • 6. Globalcode – Open4education Como resolver esses desafios em utilizando Java?
  • 7. Globalcode – Open4education O que é Microprofile? • https://microprofile.io/ • Enterprise Java for Microservices • Open Source • Hosted at Eclipse Foundation
  • 8. Globalcode – Open4education O que é Microprofile? • Versão 1.0 com CDI, JAX-RS e JSON-P • Portabilidade entre os diferentes servidores
  • 9. Globalcode – Open4education O que é Microprofile?
  • 10. Globalcode – Open4education Último release Fev. 2019 MicroProfile 2.2 JAX-RS 2.1JSON-P 1.1CDI 2.0 Config 1.3 Fault Tolerance 2.0 JWT Propagation 1.1 Health Check 1.0 Metrics 1.1 Open Tracing 1.3 Open API 1.1 = Updated = No change from last release (MicroProfile 2.1) = New Rest Client 1.2 JSON-B 1.0
  • 13. Globalcode – Open4education Configuration • Aplicações precisam de configurações diferentes de acordo com o ambiente • Trocar configuração sem ter que empacotar novamente o projeto • Baseado no DeltaSpike Config, Apache Tamaya e Sabot
  • 14. Globalcode – Open4education Configuration • META-INF/microprofile-config.properties • Environment properties • System properties • Fontes de configuração customizáveis
  • 15. Globalcode – Open4education Health • Avaliar o estado de um node • Processos automatizados para manter o estado dos nodes • API simples para especificar o estado de um node • /health JAX-RS endpoint • Resposta indica se o servidor está saudável • Payload pode incluir mais detalhes
  • 16. Globalcode – Open4education Open Tracing • Rastrear o fluxo das requisições entre os serviços • OpenTracing é um padrão de rastreamento distríbuido para aplicações • @Traced
  • 17. Globalcode – Open4education Fault Tolerance • Inspirado no Hystrix e Failsafe • Diferentes estratégias para guiar a execução e resultado de uma lógica • TimeOut, RetryPolicy, Fallback, Bulkhead and Circuit Breaker
  • 19. Globalcode – Open4education OpenAPI • Java API para a especificação OpenAPI v3 • OpenAPI v3 foi originada do Swagger v2 • Anotações devem ser similares
  • 20. Globalcode – Open4education Rest Client • Microservices falam normalmente REST com outros serviços • Consistente e fácil de reutilizar • Type Safe • Extends JAX-RS 2.0 API’s • Uma forma mais natural de implementar os serviços • Similar ao framework Feign
  • 21. Globalcode – Open4education Metrics • Monitorar parâmetros essenciais do sistema • Garantir estabilidade do sistema • Monitorar endpoints e coletar dados • Acessível via interface REST • GET /metrics/base • GET /metrics/application • GET /metrics/vendor • JSON ou Prometheus • OPTIONS provém metadados como a unidade de medida
  • 22. Globalcode – Open4education Metrics • Counted • Gauge • Metered • Timed • Histogram
  • 23. Globalcode – Open4education JWT Propagation • Tokens de segurança • Utilizações mais comuns: OAuth2, OpenID Connect JWT • Propagar identidades entre serviços de forma Stateless
  • 24. Globalcode – Open4education Getting started https://start.microprofile.io/