Migrar aplicativos Spring Cloud para Aplicativos de Contêiner do Azure

Este guia descreve as informações das quais você deve estar ciente quando deseja migrar um aplicativo Spring Cloud existente para execução nos Aplicativos de Contêiner do Azure.

Pré-migração

Antes de tudo, para garantir uma migração bem-sucedida, conclua as etapas de avaliação e de inventário descritas nas seções a seguir.

Se você não puder atender a nenhum desses requisitos de pré-migração, confira os seguintes guias de migração complementares:

  • Migrar aplicativos JAR executáveis para contêineres no Serviço de Kubernetes do Azure (diretrizes planejadas)
  • Migrar aplicativos JAR executáveis para Máquinas Virtuais do Azure (diretrizes planejadas)

Inspecionar os componentes de aplicativo

Determinar se e como o sistema de arquivos é usado

Localize instâncias nas quais os serviços gravem e/ou leiam do sistema de arquivos local. Identifique onde os arquivos de curto prazo/temporários são gravados e lidos e onde os arquivos de longa duração são gravados e lidos.

Os Aplicativos de Contêiner do Azure oferecem vários tipos de armazenamento. O armazenamento temporário pode ler e gravar dados temporários e estar disponível para um contêiner ou réplica em execução. O Arquivo do Azure fornece armazenamento permanente e pode ser compartilhado entre vários contêineres. Para obter mais informações, confira Usar montagens de armazenamento nos Aplicativos de Contêiner do Azure.

Conteúdo estático somente leitura

Se seu aplicativo estiver servindo conteúdo estático no momento, você precisará de um local alternativo para ele. Talvez você queira considerar a movimentação de conteúdo estático para o Armazenamento de Blobs do Azure e a adição da CDN do Azure para downloads extremamente rápidos, globalmente. Para obter mais informações, confira Hospedagem de site estático no Armazenamento do Microsoft Azure e Início rápido: Integrar uma conta de armazenamento do Azure à CDN do Azure.

Conteúdo estático publicado dinamicamente

Se o aplicativo oferecer suporte a conteúdo estático, seja carregado ou gerado pelo próprio aplicativo, que permanece inalterado após sua criação, você poderá integrar o Armazenamento de Blobs do Azure e a CDN do Azure. Você também pode usar o Azure Function para gerenciar uploads e disparar atualizações de CDN quando necessário. Fornecemos uma implementação de exemplo para seu uso em Carregar conteúdo estático e fazer o pré-carregamento desse conteúdo pela CDN com o Azure Functions.

Determinar se algum dos serviços contém o código específico do SO

Se seu aplicativo contiver qualquer código com dependências do sistema operacional do host, você precisará refatorá-lo para remover essas dependências. Por exemplo, talvez seja necessário substituir qualquer uso de / ou \ em caminhos do sistema de arquivos com File.Separator ou Paths.get se o aplicativo estiver em execução no Windows.

Alternar para uma plataforma compatível

Se você criar seu Dockerfile manualmente e implantar o aplicativo conteinerizado em Aplicativos de Contêiner do Azure, terá controle total sobre sua implantação, incluindo as versões JRE/JDK.

Para implantação de artefatos, os Aplicativos de Contêiner do Azure também oferecem versões específicas do Java (8, 11, 17 e 21) e versões específicas dos componentes Spring Boot e Spring Cloud. Para garantir a compatibilidade, primeiro migre o aplicativo para uma das versões com suporte do Java no ambiente atual e depois continue com as etapas de migração restantes. É necessário testar completamente a configuração resultante. Use a versão estável mais recente da sua distribuição do Linux nesses testes.

Observação

Essa validação é especialmente importante se o servidor atual estiver sendo executado em um JDK não compatível (como Oracle JDK ou IBM OpenJ9).

Para determinar a sua versão atual do Java, entre no servidor de produção e execute o seguinte comando:

java -version

Para obter versões compatíveis do Java, Spring Boot e Spring Cloud, bem como instruções para atualização, confira Visão geral do Java nos Aplicativos de Contêiner do Azure.

Identificar as versões do Spring Boot

Examine as dependências de cada aplicativo que está sendo migrado para determinar a versão do Spring Boot.

Maven

Em projetos Maven, a versão do Spring Boot normalmente se encontra no elemento <parent> do arquivo POM:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

Em projetos Gradle, a versão do Spring Boot normalmente se encontrará na seção plugins, como a versão do plug-in org.springframework.boot:

plugins {
  id 'org.springframework.boot' version '3.3.3'
  id 'io.spring.dependency-management' version '1.1.6'
  id 'java'
}

Para todos os aplicativos que usam versões do Spring Boot anteriores à 3.x, siga o Guia de migração do Spring Boot 2.0 ou o Guia de migração do Spring Boot 3.0 para atualizá-los para uma versão compatível do Spring Boot. Para versões compatíveis, confira a documentação do Spring Cloud.

Identificar as versões do Spring Cloud

Examine as dependências de cada aplicativo que você está migrando para determinar a versão dos componentes do Spring Cloud usados.

Maven

Em projetos Maven, a versão do Spring Cloud é normalmente definida na propriedade spring-cloud.version:

  <properties>
    <spring-cloud.version>2023.0.2</spring-cloud.version>
  </properties>
Gradle

Em projetos Gradle, a versão do Spring Cloud é normalmente definida no bloco “propriedades extras”:

ext {
  set('springCloudVersion', "2023.0.2")
}

Você precisa atualizar todos os aplicativos para usar as versões com suporte do Spring Cloud. Para versões compatíveis, confira a documentação do Spring Cloud.

Identificar as soluções de agregação de log

Identifique as soluções de agregação de log em uso pelos aplicativos que você está migrando. Você precisa definir as configurações de diagnóstico na migração para disponibilizar eventos registrados para consumo. Para obter mais informações, confira a seção Verificar o registro em log de console e definir as configurações de diagnóstico.

Identificar os agentes de APM (gerenciamento de desempenho de aplicativo)

Identifique os agentes de gerenciamento de desempenho de aplicativos usados por seus aplicativos. Os Aplicativos de Contêiner do Azure não oferecem suporte interno para integração do APM. Você precisa preparar sua imagem de contêiner ou integrar a ferramenta APM diretamente ao seu código. Se você quiser medir o desempenho do seu aplicativo, mas ainda não tiver integrado nenhum APM, considere usar o Azure Application Insights. Para obter mais informações, confira a seção Migração.

Recursos externos de inventário

Identifique recursos externos, como fontes de dados, agentes de mensagens JMS e URLs de outros serviços. Em aplicativos Spring Cloud, normalmente é possível encontrar a configuração desses recursos em uma das seguintes localizações:

  • Na pasta src/main/resources, em um arquivo geralmente chamado de application.properties ou de application.yml.
  • No repositório do Spring Cloud Config Server que você identificou na etapa anterior.

Bancos de dados

Para um aplicativo Spring Boot, as cadeias de conexão geralmente aparecem em arquivos de configuração quando dependem de um banco de dados externo. Este é um exemplo de um arquivo application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Este é um exemplo de um arquivo application.yaml:

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

Confira a documentação do Spring Data para obter mais cenários de configuração possíveis:

Agentes de mensagem JMS

Identifique os agentes em uso examinando o manifesto de build (normalmente, um arquivo pom.xml ou um build.gradle) para as dependências relevantes.

Por exemplo, um aplicativo Spring Boot que usa o ActiveMQ normalmente conteria essa dependência no arquivo pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

Os aplicativos Spring Boot que usam agentes comerciais normalmente contêm dependências diretamente nas bibliotecas de driver JMS dos agentes. Este é um exemplo de um arquivo build.gradle:

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.4.0.5")
      ...
    }

Depois de identificar os agentes em uso, localize as configurações correspondentes. Em aplicativos Spring Cloud, normalmente é possível encontrá-las nos arquivos application.properties e application.yml no diretório de aplicativo ou no repositório do Spring Cloud Config Server.

Aqui está um exemplo do ActiveMQ em um arquivo application.properties:

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=tryandguess

Para obter mais informações sobre o ActiveMQ, confira a Documentação de mensagens do Spring Boot.

Aqui está um exemplo do IBM MQ em um arquivo application.yaml:

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: big$ecr3t

Para obter mais informações sobre a configuração do IBM MQ, confira a Documentação dos componentes do Spring IBM MQ.

Identificar os caches externos

Identifique os caches externos em uso. Frequentemente, o Redis é usado por meio do Spring Data Redis. Para obter informações de configuração, confira a Documentação do Spring Data Redis.

Determine se os dados de sessão estão sendo armazenados em cache por meio do Spring Session pesquisando a respectiva configuração (no Java ou no XML).

Provedores de identidade

Identifique todos os provedores de identidade e todos os aplicativos Spring Cloud que requerem autenticação e/ou autorização. Para obter informações sobre como configurar provedores de identidade, veja os seguintes recursos:

Recursos configurados por meio do VMware TAS (Tanzu Application Service) (antigo Pivotal Cloud Foundry)

Para os aplicativos gerenciados com o TAS, os recursos externos, incluindo aqueles descritos anteriormente, são geralmente configurados por meio de associações de serviço do TAS. Para examinar a configuração desses recursos, use a CLI do TAS (Cloud Foundry) para exibir a variável VCAP_SERVICES do aplicativo.

# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>

# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>

# Display variables for the application
cf env <Application Name>

Examine a variável VCAP_SERVICES para obter as definições de configuração de serviços externos associados ao aplicativo. Para obter mais informações, confira a documentação do TAS (Cloud Foundry).

Todos os outros recursos externos

É inviável que este guia documente todas as dependências externas possíveis. Após a migração, é sua responsabilidade verificar se você pode satisfazer todas as dependência externas do aplicativo.

Inventariar as fontes e os segredos de configuração

Inventariar as senhas e proteger as cadeia de caracteres

Verifique todas as propriedades e os arquivos de configuração, assim como as variáveis de ambiente, nas implantações de produção em busca de senhas e cadeias de caracteres secretas. Em um aplicativo Spring Cloud, normalmente é possível encontrar essas cadeias de caracteres no arquivo application.properties ou no application.yml em serviços individuais ou no repositório do Spring Cloud Config Server.

Inventariar os certificados

Documente todos os certificados usados para pontos de extremidade SSL públicos ou comunicação com bancos de dados de back-end e outros sistemas. Você pode exibir todos os certificados nos servidores de produção executando o seguinte comando:

keytool -list -v -keystore <path to keystore>

Determinar se o Spring Cloud Vault é usado

Se você usar o Spring Cloud Vault para armazenar e acessar segredos, identifique o repositório de segredos de backup (por exemplo, HashiCorp Vault ou CredHub). Em seguida, identifique todos os segredos usados pelo código de aplicativo.

Localize a origem do servidor de configuração

Se o aplicativo usar um Spring Cloud Config Server, identifique onde a configuração está armazenada. Normalmente é possível encontrar essa configuração no arquivo bootstrap.yml ou no bootstrap.properties ou, às vezes, no arquivo application.yml ou application.properties. A configuração será semelhante ao exemplo a seguir:

spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo

Embora o Git seja usado com mais frequência como o armazenamento de dados de backup do Spring Cloud Config Server, como mostrado anteriormente, um dos outros back-ends possíveis pode estar em uso. Confira a Documentação do Spring Cloud Config Server para obter informações sobre outros back-ends, como o JDBC (banco de dados relacional), o SVN e o sistema de arquivos local.

Inspecionar a arquitetura de implantação

Documentar os requisitos de hardware para cada serviço

Para cada um dos serviços do Spring Cloud (não incluindo o servidor de configuração, o registro nem o gateway), documente as seguintes informações:

  • O número de instâncias em execução.
  • O número de CPUs alocadas para cada instância.
  • A quantidade de RAM alocada para cada instância.

Documentar a replicação geográfica/distribuição

Determine se os aplicativos Spring Cloud estão atualmente distribuídos entre várias regiões ou datacenters. Documente os requisitos de tempo de atividade/SLA (Contrato de Nível de Serviço) para os aplicativos que você está migrando.

Identificar os clientes que ignoram o registro de serviço

Identifique aplicativos cliente que invoquem qualquer um dos serviços a serem migrados sem usar o Spring Cloud Service Registry. Após a migração, essas invocações não serão mais possíveis. Atualize esses clientes para usar o Spring Cloud OpenFeign antes da migração.

Migração

Remover configurações restritas

O ambiente dos Aplicativos de Contêiner do Azure oferece o Eureka Server, o Spring Cloud Config Server e o Admin gerenciados. Quando um aplicativo é associado ao componente Java, os Aplicativos de Contêiner do Azure injetam propriedades relacionadas como variáveis de ambiente do sistema. De acordo com o design de Configuração externalizada do Spring Boot, as propriedades do aplicativo definidas em seu código ou empacotadas em artefatos são substituídas por variáveis de ambiente do sistema.

Se você configurar uma das seguintes propriedades por meio de um argumento de linha de comando, uma propriedade do sistema Java ou uma variável de ambiente do contêiner, deverá removê-la para evitar conflitos e comportamento inesperado:

  • SPRING_CLOUD_CONFIG_COMPONENT_URI
  • SPRING_CLOUD_CONFIG_URI
  • SPRING_CONFIG_IMPORT
  • eureka.client.fetch-registry
  • eureka.client.service-url.defaultZone
  • eureka.instance.prefer-ip-address
  • eureka.client.register-with-eureka
  • SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP
  • SPRING_BOOT_ADMIN_CLIENT_URL

Criar um ambiente e aplicativos gerenciados de Aplicativos de Contêiner do Azure

Provisione um aplicativo de Aplicativos de Contêiner do Azure em sua assinatura do Azure em um ambiente gerenciado existente ou crie um novo para cada serviço que você está migrando. Você não precisa criar aplicativos que sejam executados como servidores de configuração e registro do Spring Cloud. Para obter mais informações, confira Guia de Início Rápido: implantar seu primeiro aplicativo de contêiner usando o portal do Azure.

Preparar o Spring Cloud Config Server

Configure o Config Server em seus Aplicativos de Contêiner do Azure para o componente Spring. Para obter mais informações, confira Definir configurações para o componente Config Server for Spring nos Aplicativos de Contêiner do Azure.

Observação

Se o repositório Spring Cloud Config atual estiver no local ou no sistema de arquivos local, você precisará replicar os arquivos de configuração e migrá-los para um repositório baseado na nuvem, como o GitHub, o Azure Repos ou o BitBucket.

Verificar o registro em log de console e definir as configurações de diagnóstico

Configure o log para garantir que toda a saída seja roteada para o console e não para arquivos.

Depois que um aplicativo é implantado nos Aplicativos de Contêiner do Azure, você pode configurar as opções de log no ambiente de Aplicativos de Contêiner para definir um ou mais destinos dos logs. Esses destinos podem incluir o Log Analytics do Azure Monitor, o Hub de Eventos do Azure ou até mesmo outras soluções de monitoramento de terceiros. Você também tem a opção de desabilitar dados de log e exibir os logs somente em runtime. Para obter instruções de configuração detalhadas, confira Opções de armazenamento e monitoramento de log nos Aplicativos de Contêiner do Azure.

Configurar um armazenamento persistente

Se qualquer parte do aplicativo ler ou gravar no sistema de arquivos local, você precisará configurar o armazenamento persistente para substituir o sistema de arquivos local. Você pode especificar o caminho para montar no contêiner por meio das configurações do aplicativo e alinhá-lo com o caminho que seu aplicativo está usando. Para obter mais informações, confira Usar montagens de armazenamento nos Aplicativos de Contêiner do Azure.

Migrar segredos do Spring Cloud Vault para o Azure Key Vault

Você pode injetar segredos diretamente em aplicativos por meio do Spring usando o iniciador do Spring Boot para o Azure Key Vault. Para obter mais informações, confira Como usar o iniciador do Spring Boot para o Azure Key Vault.

Observação

A migração pode requerer que você renomeie alguns segredos. Atualize o código de aplicativo de acordo.

Migrar todos os certificados para o Key Vault

Os Aplicativos de Contêiner do Azure têm suporte para comunicação segura entre aplicativos. Seu aplicativo não precisa gerenciar o processo de estabelecer comunicação segura. Você pode carregar o certificado privado nos Aplicativos de Contêiner do Azure ou usar um certificado gerenciado gratuito fornecido pelos Aplicativos de Contêiner do Azure. Usar o Azure Key Vault para gerenciar certificados é uma abordagem recomendada. Para obter mais informações, confira Certificados nos Aplicativos de Contêiner do Azure.

Configurar as integrações de APM (gerenciamento de desempenho de aplicativos)

Se você já configurou variáveis relacionadas ao APM no contêiner, tudo o que você precisa fazer é garantir que seja possível estabelecer a conexão com a plataforma APM de destino. Se a configuração do APM fizer referência a variáveis de ambiente do contêiner, você precisará definir as variáveis de ambiente de runtime adequadamente em Aplicativos de Contêiner do Azure. Informações confidenciais, como a cadeia de conexão, devem ser tratadas com segurança. Você pode especificá-las como um segredo ou fazer referência a um segredo armazenado no Azure Key Vault.

Configurar os segredos por serviço e definir as configurações externas

Você pode injetar as definições de configuração em cada contêiner como variáveis de ambiente. Qualquer alteração nas variáveis cria uma nova revisão para o aplicativo existente. Os segredos são pares chave-valor e permanecem válidos em todas as revisões.

Migrar e habilitar o provedor de identidade

Se qualquer um dos aplicativos Spring Cloud requerer autenticação ou autorização, use as diretrizes a seguir para garantir que os aplicativos foram configurados para acessar o provedor de identidade:

  • Se o provedor de identidade for o Microsoft Entra ID, nenhuma alteração deve ser necessária.
  • Se o provedor de identidade for uma floresta local do Active Directory, considere implementar uma solução de identidade híbrida com o Microsoft Entra ID. Para obter diretrizes, confira a Documentação de identidade híbrida.
  • Se o provedor de identidade for outra solução local, como o PingFederate, confira o tópico Instalação personalizada do Microsoft Entra Connect para configurar a federação com o Microsoft Entra ID. Como alternativa, considere o Spring Security para o uso do provedor de identidade por meio do OAuth2/OpenID Connect ou do SAML.

Atualizar aplicativos cliente

Atualize a configuração de todos os aplicativos cliente para usar os pontos de extremidade publicados dos Aplicativos de Contêiner do Azure para aplicativos migrados.

Após a migração

Agora que você concluiu a migração, confirme se o aplicativo funciona conforme o esperado. Em seguida, você pode tornar seu aplicativo mais nativo de nuvem usando as recomendações a seguir.

  • Considere a possibilidade de habilitar seu aplicativo para que ele funcione com o Registro do Spring Cloud. Esse componente permite que o aplicativo seja descoberto dinamicamente por outros aplicativos e clientes Spring implantados. Para obter mais informações, confira Definir configurações para o componente Eureka Server for Spring nos Aplicativos de Contêiner do Azure. Em seguida, modifique todos os clientes do aplicativo para que usem o Spring Client Load Balancer. O Spring Client Load Balancer permite que o cliente obtenha endereços de todas as instâncias em execução do aplicativo e encontre uma instância que funcione se outra instância for corrompida ou não responder. Para obter mais informações, confira Dicas do Spring: Spring Cloud Load Balancer no Blog do Spring.

  • Em vez de tornar seu aplicativo público, considere a possibilidade de adicionar uma instância do Spring Cloud Gateway. O Spring Cloud Gateway fornece um único ponto de extremidade para todos os aplicativos implantados em seu ambiente de Aplicativos de Contêiner do Azure. Se um Spring Cloud Gateway já estiver implantado, verifique se uma regra de roteamento está configurada para rotear o tráfego para o aplicativo recém-implantado.

  • Considere a possibilidade de adicionar um Config Server do Spring Cloud para gerenciar de maneira centralizada a configuração e fazer o controle de versão dela para todos os aplicativos do Spring Cloud. Primeiro, crie um repositório Git para hospedar a configuração e configure a instância do aplicativo para usá-la. Para obter mais informações, confira Definir configurações para o componente Config Server for Spring nos Aplicativos de Contêiner do Azure. Em seguida, migre sua configuração usando as seguintes etapas:

    1. Dentro do diretório src/main/resources do aplicativo, crie um arquivo bootstrap.yml com o seguinte conteúdo:

        spring:
          application:
            name: <your-application-name>
      
    2. No repositório do Git de configuração, crie um arquivo <nome-do-aplicativo>.yml, em que your-application-name é o mesmo que na etapa anterior. Mova as configurações do arquivo application.yml em src/main/resources para o novo arquivo que você acabou de criar. Se as configurações estavam antes em um arquivo .properties, elas precisam ser convertidas para YAML primeiro. Você pode encontrar ferramentas online ou plug-ins IntelliJ para realizar essa conversão.

    3. Crie um arquivo application.yml no diretório acima. Você pode usar esse arquivo para definir as configurações e os recursos que serão compartilhados entre todos os aplicativos no ambiente dos Aplicativos de Contêiner do Azure. Essas configurações normalmente incluem fontes de dados, configurações de registro em log, configuração do acionador do Spring Boot, entre outros.

    4. Faça commit dessas alterações e efetue push delas para o repositório Git.

    5. Remova o arquivo application.properties ou application.yml do aplicativo.

  • Considere adicionar o componente gerenciado Admin for Spring para habilitar uma interface administrativa para aplicativos Web Spring Boot que expõem pontos de extremidade do atuador. Para obter mais informações, confira Configurar o componente Spring Boot Admin nos Aplicativos de Contêiner do Azure.

  • Considere adicionar um pipeline de implantação para implantações automáticas e consistentes. As instruções estão disponíveis para o Azure Pipelines e para o GitHub Actions.

  • Considere a possibilidade de usar revisões de aplicativos de contêiner, rótulos de revisão e pesos de tráfego de entrada para habilitar a implantação azul-verde, o que permite testar alterações de código na produção antes que elas sejam disponibilizadas para alguns ou todos os usuários finais. Para obter mais informações, confira Implantação azul-verde nos Aplicativos de Contêiner do Azure.

  • Considere adicionar associações de serviço para conectar o aplicativo a bancos de dados do Azure com suporte. Essas associações de serviço eliminariam a necessidade de fornecer informações de conexão, incluindo credenciais, para os aplicativos Spring Cloud.

  • Considere habilitar a pilha de desenvolvimento Java para coletar métricas principais da JVM para seus aplicativos. Para obter mais informações, confira Métricas para Java de aplicativos Java nos Aplicativos de Contêiner do Azure.

  • Considere adicionar as regras de alerta e os grupos de ações do Azure Monitor para detectar e abordar as condições anormais rapidamente. Para obter mais informações, confira Configurar alertas nos Aplicativos de Contêiner do Azure.

  • Considere replicar seu aplicativo entre as zonas da região, habilitando a redundância de zona dos Aplicativos de Contêiner do Azure. O tráfego tem balanceamento de carga e é roteado automaticamente para réplicas se ocorre uma interrupção de zona. Para obter mais informações sobre configurações redundantes, confira Confiabilidade nos Aplicativos de Contêiner do Azure.

  • Considere proteger os Aplicativos de Contêiner do Azure contra explorações e vulnerabilidades comuns usando o Firewall do Aplicativo Web no Gateway de Aplicativo. Para obter mais informações, confira Proteger Aplicativos de Contêiner do Azure com Firewall do Aplicativo Web no Gateway de Aplicativo.

  • Se os aplicativos usarem componentes herdados do Spring Cloud Netflix, considere substituí-los por alternativas atuais, como mostrado na tabela a seguir:

    Herdada Atual
    Spring Cloud Eureka Spring Cloud Service Registry
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Servidor de Configuração do Spring Cloud
    Spring Cloud Netflix Ribbon Spring Cloud Load Balancer (balanceador de carga do lado do cliente)
    Spring Cloud Hystrix Spring Cloud Circuit Breaker + Resilience4j
    Spring Cloud Netflix Turbine Micrometer + Prometheus