O documento discute como o Microprofile facilita o desenvolvimento de microserviços em Java, abordando os principais desafios como configuração, monitoramento, segurança e resiliência. Ele explica como especificações como Config, Health, OpenTracing, Fault Tolerance e OpenAPI ajudam a resolver esses desafios.
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
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)
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
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
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