Guia da Migração - Cloudsupport

A seguir estão os passos para atualização de versão da biblioteca nos microsserviços.

Para versão 1.18.0

  • Remover em application.properties a linha spring.profiles.include=cloudsupport,cloudsupport-defaults, pois as propriedades padrões são aplicadas automaticamente.
  • Remover nos profiles a linha logging.level.org.springdoc.core.events=error, não mais necessária.
  • Ajustar método SecurityUtils.getSemanticLogginInCoreAttrs() para getLoggedInCoreAttrs().
  • Para um log limpo em produção, sugere-se configurar o nível root como WARN e o pacote cloudsupport como INFO:

    logging.level.root=warn
    logging.level.cloudsupport=info
    

Para versão 1.16.0

  • Conferir documentação do Spring Boot devido ao upgrade 3.3 para 3.5:
    Ref: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4-Release-Notes
    Ref: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes
  • Caso utilize o lookup Log4j k8s:, verifique a documentação do projeto fabric8io, pois a implementação do lookup agora é fornecida por esta extensão.
    Ref: https://github.com/fabric8io/kubernetes-client/blob/main/doc/KubernetesLog4j.md

Para versão 1.15.0

  • Por segurança, os endpoints de OpenAPI e Swagger agora são inativos por padrão. Para habilitá-los, inclua nos profiles:

    # Documentation
    springdoc.swagger-ui.enabled=true
    springdoc.api-docs.enabled=true
    
  • Os endpoints Actuator agora seguem o padrão do Spring Boot, que expõe somente /actuator/health sem details.
  • Os endpoints de gerenciamento do módulo Cloudsupport Jobs são providos via extensão do Actuator, sob a identificação cloudsupportjobs. Evite publicá-los na porta padrão do container, por motivo de segurança. Exemplo:

    # Actuator
    management.server.port=38080
    management.endpoints.web.exposure.include=cloudsupportjobs[,...]
    
  • Esta versão configura os probes Actuator de liveness e de readiness para Kubernetes nos caminhos /livez e /readyz respectivamente, ativados automaticamente pelo Spring Boot caso o ambiente K8s seja detectado. A ativação pode ser forçada via management.endpoint.health.probes.enabled=true.

Para versão 1.10.0

  • Substituir:
    • Propriedade cloudsupport.security.jwt.matches porcloudsupport.security.jwt.paths
    • Propriedade cloudsupport.security.jwt.unsigned por cloudsupport.security.jwt.always-trust
    • Propriedades abaixo, se declaradas, por cloudsupport.error.conventions.enabled:

      cloudsupport.error.include-message-on-http-4xx
      cloudsupport.error.include-message-on-business-exception
      cloudsupport.error.hide-message-on-http-5xx
      cloudsupport.error.shorten-validation-errors
      cloudsupport.error.enable-web-tracking
      cloudsupport.jobs.save-stack-trace:false
      

Para versão 1.9.0

  • Utilizar Java 17 ou superior
  • Ajustar import de classes Javax conforme:
    • De javax.persistence para jakarta.persistence
    • De javax.annotation para jakarta.annotation
    • De javax.servlet para jakarta.servlet
    • De javax.inject para jakarta.inject
    • De javax.xml para jakarta.xml
  • Ajustar import de classes Cloudsupport conforme:
    • De cloudsupport.util para cloudsupport.utils
    • De cloudsupport.services.web.Uid para cloudsupport.services.Uid
  • Ajustar import de classes Swagger/Springdoc conforme:
    • De org.springdoc.api.annotations para org.springdoc.core.annotations
  • Remover anotação @EnableDefaultConfig
  • Remover referências à classe EnumItem
  • Refatorar conforme as mudanças na biblioteca Cloudsupport:
    • Classe ResourceUtil renomeada para ResourceUtils
    • Classe ExceptionHelper renomeada para ExceptionUtils
    • Removido método getRootSummary(throwable, lines) de ExceptionUtils
    • Método UidGenerator.get().next() movido para UidGenerator.nextLong()
  • Migrar banco de dados do módulo de Jobs (rotinas) conforme:
    • Coluna key renomeada para paramKey na tabela jobParams
    • Coluna value renomeada para paramValue na tabela jobParams
  • Conferir se há impacto devido ao novo conjunto de configurações do profile cloudsupport-defaults.properties (foi simplificado), vide Changelog
  • Sugere-se remover o arquivo local logging.xml e adotar o exemplo do arquétipo (vide application-local.properties)
  • Sugere-se considerar a nova versão do arquétipo que contém exemplos de controle de acesso com OIDC, melhor utilização do Swagger, com CommonMark, e uso do @Valid

Para versão 1.8.0

  • Ajustar os arquivos de profile application*.properties e/ou application*.yml conforme:
    • Renomear propriedade cloudsupport.jobs.repositoryJdbc.tablePrefix para cloudsupport.jobs.repository.jdbc.tablePrefix (padrão é "")
    • Remover demais propriedades cloudsupport.jobs.repositoryJdbc.*
    • Adicionar propriedade cloudsupport.jobs.repository=memory|jdbc (padrão é memory)
    • Adicionar propriedade cloudsupport.jobs.scheduling.enabled=true|false (padrão é false)
  • Alterar referências de jobManager.listJobNames() para listRegistryEntries()
  • Referências de jobExecution.get<CampoStatus> retoram String em vez de enum
  • Referências de jobExecution.get<CampoData> retoram java.util.Date em vez de OffsetDateTime

Para versão 1.7.0

  • Alterar referências de jobExecution.<operacao>() para jobManager.<operacao>(jobExecution)
  • Alterar referências de jobManager.getRunningJobs() para listRunningJobs()
  • Ajustar Jobs que herdam de BaseBatchProducerConsumerJob e BaseContinuousProducerConsumerJob:
    • Herdar da nova classe BaseProducerConsumerJob
    • Implementar shouldProduceMore() se desejar ativar a produção periódica
    • Implementar queueThreshold() para configurar o limiar do buffer que dispara nova produção
    • Implementar productionRetryDelay() para configurar o atraso (não blocante) entre produções
  • Remover referências a BaseJob.sleep() e BaseJob.elapsed()
  • Alterar referências de /healthReadiness para /healthreadiness em implantações Kubernetes

Para versão 1.6.0

  • Remover parâmetro jobName na ocorrências de BaseSchedule.runJob()

Para versão 1.4.0

  • Ajustar os arquivos de profile application*.properties e/ou application*.yml conforme:
    • Renomear propriedades cloudsupport.remote.* para cloudsupport.remotes.*
    • Renomear propriedades cloudsupport.job.* para cloudsupport.jobs.*
  • Ajustar import de classes Cloudsupport conforme:
    • De cloudsupport.business para cloudsupport.services
    • De cloudsupport.business.job para cloudsupport.services.jobs
    • De cloudsupport.business.ws para cloudsupport.services.web
    • De cloudsupport.remote para cloudsupport.remotes
  • Refatorar estrutura de pacotes da aplicação conforme:
    • De [...].business para [...].services
    • De [...].business.job para [...].services.jobs
    • De [...].business.ws para [...].services.web
    • De [...].remote para [...].remotes
    • De [...].persistence.entity para [...].persistence.entities
    • De [...].persistence.converter para [...].persistence.converters

Para versão 1.3.0

  • Ajustar os arquivos de profile application*.properties e/ou application*.yml conforme:
    • Renomear propriedades app.remote.route.* para cloudsupport.remote.route.*
    • Renomear propriedades app.job.repositoryJdbc.* para cloudsupport.job.repositoryJdbc.*