Migrar aplicativos Java para Aplicativos de Contêiner do Azure usando a modernização do aplicativo GitHub Copilot

Neste artigo, você aprenderá a usar a modernização do aplicativo GitHub Copilot para avaliar, corrigir, colocar em contêiner e implantar aplicativos Java nos Aplicativos de Contêiner do Azure. A modernização do aplicativo GitHub Copilot é um assistente movido por IA que combina o GitHub Copilot com ferramentas de software livre, como OpenRewrite, para automatizar etapas complexas de atualização e migração.

A ferramenta dá suporte a projetos Maven e Gradle, direciona atualizações entre as versões 8, 11, 17 e 21 do Java e se concentra na modernização de aplicativos Spring Boot. Ele fornece tarefas predefinidas para cenários comuns de migração e incorpora práticas recomendadas para executar aplicativos em Aplicativos de Contêiner do Azure.

Pré-requisitos

Observação

Se você estiver usando o Gradle, somente o wrapper Gradle versão 5 ou posterior terá suporte. Não há suporte para a DSL (Linguagem Específica do Domínio Kotlin). A função My Tasks ainda não tem suporte para IntelliJ IDEA.

Atualizar o JDK e as versões da estrutura

Antes de migrar para os Aplicativos de Contêiner do Azure, verifique se seu aplicativo Java é executado em uma versão do JDK suportada e atualizada. A atualização do JDK e dos frameworks primeiro garante que as etapas subsequentes de migração visem uma base de código moderna.

Há duas maneiras de atualizar sua versão do JDK. As duas maneiras usam o painel de modernização do aplicativo GitHub Copilot, que você pode acessar na barra lateral no Visual Studio Code.

  1. Selecione Atualizar Runtime &Frameworks na seção INÍCIO RÁPIDO .
  2. Como alternativa, execute a tarefa Java Runtime atualizado na seção TAREFAS – Tarefas de Atualização.

Captura de tela do Visual Studio Code que mostra o painel de modernização do aplicativo GitHub Copilot com as opções de atualização realçadas.

Para atualizar o Spring Framework ou uma dependência que não seja da Microsoft, execute a tarefa Atualizar o Java Framework na seção TAREFAS – Tarefas de Atualização .

Captura de tela do Visual Studio Code que mostra o painel de modernização do aplicativo GitHub Copilot com a tarefa Atualizar Estrutura Java realçada.

Avaliar a preparação da nuvem para aplicativos de contêiner do Azure

A avaliação identifica os desafios de preparação da nuvem em sua base de código e classifica seu impacto. Ele fornece recomendações específicas para Aplicativos de Contêiner do Azure.

Configurar a avaliação

Antes de executar a avaliação, configure-a selecionando Configurar Avaliação no painel avaliação de modernização do aplicativo GitHub Copilot.

Captura de tela do Visual Studio Code que mostra o painel Avaliação de modernização do aplicativo GitHub Copilot com o botão Configurar Avaliação realçado.

Para aplicativos de contêiner do Azure, use a seguinte configuração:

appcat:
- target:
    - azure-container-apps
  os:
    - linux
  mode: source-only

Executar a avaliação

Use as seguintes etapas para executar a avaliação:

  1. Na barra lateral, selecione o painel de modernização do aplicativo GitHub Copilot e selecione Migrar para o Azure ou Executar Avaliação na seção AVALIAÇÃO .

    Captura de tela do Visual Studio Code que mostra o painel de modernização do aplicativo GitHub Copilot com os botões Migrar para o Azure e Executar Avaliação realçados.

  2. A janela de chat do GitHub Copilot com o modo de agente é aberta para chamar o assessor de modernização. Selecione Continuar para confirmar.

  3. O assessor de modernização verifica primeiro seu ambiente local. Se o AppCAT e suas dependências não estiverem instalados, o agente ajudará você a instalá-las. Após a instalação, o agente chama AppCAT para avaliar seu projeto. Essa etapa pode levar vários minutos para ser concluída.

  4. Quando a avaliação é concluída, o assessor de modernização produz uma exibição categorizada dos problemas de preparação da nuvem no Relatório de Avaliação.

    Captura de tela do painel do Visual Studio Code que mostra o relatório de avaliação.

Interpretar o relatório de avaliação

O relatório de avaliação fornece resultados de análise abrangentes. O relatório consiste em várias seções principais:

  • Informações do aplicativo: informações básicas, incluindo versão java, estruturas, ferramentas de build, estrutura de projeto e serviço do Azure de destino.
  • Resumo do Problema: Visão geral dos problemas de migração categorizados pelo domínio com percentuais de criticidade.
  • Análise Detalhada organizada em quatro abas:
    • Problemas: uma lista categorizada de problemas de preparação para a nuvem e atualização do Java que você precisa resolver.
    • Dependências: todas as dependências empacotadas em Java encontradas no aplicativo.
    • Tecnologias: tecnologias agrupadas por função encontradas no aplicativo analisado.
    • Insights: Detalhes do arquivo e informações para ajudá-lo a entender as tecnologias detectadas.

Captura de tela do Visual Studio Code que mostra o painel do relatório de avaliação de modernização do aplicativo GitHub Copilot.

O relatório categoriza os problemas pelos seguintes níveis de criticidade:

Severidade Descrição
Obrigatório Problemas que você deve corrigir para migração para Aplicativos de Contêiner do Azure.
Potencial Problemas que podem afetar a migração e precisam de revisão.
Opcional Problemas de baixo impacto. Corrigi-los é recomendado, mas opcional.

Captura de tela do Visual Studio Code que mostra a lista de problemas do relatório de avaliação de modernização de aplicativos do GitHub Copilot.

Você pode expandir cada problema relatado para ver uma lista de arquivos afetados e uma descrição detalhada, incluindo o problema, soluções conhecidas e documentação de suporte.

Captura de tela do Visual Studio Code que mostra os detalhes do problema do relatório de avaliação de modernização de aplicativos do GitHub Copilot.

Gerenciar relatórios de avaliação

A extensão dá suporte à importação, exportação e exclusão de relatórios de avaliação para que você possa compartilhar descobertas com sua equipe ou manter seu workspace organizado.

  • Importação: selecione Importar na seção de avaliação para importar relatórios dos resultados da CLI do AppCAT , um relatório exportado ou um arquivo de contexto do aplicativo.
  • Exportar: clique com o botão direito do mouse no Relatório de Avaliação e selecione Exportar para compartilhar relatórios com outras pessoas.
  • Excluir: clique com o botão direito do mouse no Relatório de Avaliação e selecione Excluir para remover um relatório.

Corrigir problemas de migração

Depois de concluir a avaliação, corrija os problemas identificados usando tarefas predefinidas ou personalizadas. A modernização do aplicativo GitHub Copilot fornece duas abordagens: tarefas predefinidas que abordam padrões comuns de migração e tarefas personalizadas que você define para as necessidades específicas da sua organização.

Selecione o agente AppModernization

O agente AppModernization fornece a melhor experiência para tarefas de migração e modernização de aplicativos Java. Para selecioná-lo:

  1. Abra a janela de chat do Copilot selecionando o ícone de chat na Barra de Atividades.
  2. Na janela de chat, localize o menu suspenso do seletor de agente na parte superior da caixa de entrada do chat e selecione AppModernization na lista.

Captura de tela do Visual Studio Code que mostra a lista suspensa do seletor de agente na janela de chat.

Observação

No Visual Studio Code, a modernização de aplicativos usa o AppModernization agente personalizado com o modelo recomendado selecionado por padrão para obter melhores resultados. Você pode alterar o modelo selecionando Configurar Agentes Personalizados no menu Agente.

Com o agente AppModernization selecionado, use prompts de linguagem simples e natural para executar tarefas de migração.

  • Migração de banco de dados: migrate to Managed Identity for Azure SQL Database
  • Migração de armazenamento: migrate from AWS S3 to Azure Storage Blob
  • Migração de mensagens: migrate from RabbitMQ to Azure Service Bus
  • Gerenciamento de segredos: migrate secrets to Azure Key Vault
  • Migração de autenticação: migrate to Microsoft Entra ID authentication

Executar tarefas de migração predefinidas

O recurso de modernização do aplicativo GitHub Copilot dá suporte às seguintes tarefas predefinidas para migrações de Aplicativos de Contêiner do Azure:

Tarefa Descrição
Spring RabbitMQ para o Barramento de Serviço do Azure Converte o Spring AMQP/JMS com RabbitMQ no Barramento de Serviço do Azure, preservando os padrões de mensagens e habilitando a autenticação segura.
Identidades gerenciadas para migração de banco de dados Prepara sua base de código para autenticação de Identidade Gerenciada para o SQL Server do Azure, o Banco de Dados do Azure para MySQL, o Banco de Dados do Azure para PostgreSQL, a API do Azure Cosmos DB para Cassandra e o Azure Cosmos DB para MongoDB.
Identidades gerenciadas para migração de credenciais Transforme seus aplicativos Java para usar a autenticação de Identidade Gerenciada do Azure em serviços de mensagens como o Azure Event Hubs e o Azure Service Bus, eliminando cadeias de conexão.
De AWS S3 para Blob de Armazenamento do Azure Converte o código que interage com o AWS S3 em código que opera com o Blob de Armazenamento do Azure, mantendo a mesma semântica.
Gravando em arquivo local Converte o log baseado em arquivo em log baseado em console, tornando-o pronto para integração com o Azure Monitor.
E/S de arquivo local para montagens de compartilhamento de arquivos do Armazenamento do Azure Converte as operações de leitura e gravação de arquivos locais para fins de acesso unificado via caminho de montagem, permitindo as montagens de compartilhamento de arquivos do Armazenamento do Azure nos Aplicativos de Contêiner do Azure. Para obter mais informações, confira Usar montagens de armazenamento nos Aplicativos de Contêiner do Azure.
Email java para o Serviço de Comunicação do Azure Converte aplicativos que enviam emails por SMTP para usar os Serviços de Comunicação do Azure, que são totalmente compatíveis com a hospedagem dos Aplicativos de Contêiner do Azure.
Gerenciamento de segredos e certificados para o Azure Key Vault Migra segredos codificados e certificados TLS/mTLS locais para o Azure Key Vault. Para obter mais informações, confira Gerenciar segredos nos Aplicativos de Contêiner do Azure.
Autenticação do usuário para a ID do Microsoft Entra Faz a transição de mecanismos de autenticação de usuário local (como baseado em LDAP) para Microsoft Entra ID para autenticação. Para obter mais informações, confira Autenticação e autorização nos Aplicativos de Contêiner do Azure.
Dialeto SQL: Oracle para PostgreSQL Converte consultas SQL específicas do Oracle, tipos de dados e funções proprietárias em equivalentes postgreSQL para uso com o Banco de Dados do Azure para PostgreSQL.
Gerenciador de Segredos do AWS para o Azure Key Vault Transforma todos os aspectos do gerenciamento de segredos do Gerenciador de Segredos do AWS para o Azure Key Vault.
ActiveMQ para Azure Service Bus Converte produtores de mensagens ActiveMQ, consumidores, fábricas de conexões e interações de fila/tópico em equivalentes do Barramento de Serviço do Azure.
SQS do AWS para o Barramento de Serviço do Azure Traduz estruturas de código específicas do SQS para equivalentes do Barramento de Serviço do Azure, preservando a semântica de troca de mensagens.

Aplicar uma tarefa predefinida da avaliação

  1. No Relatório de Avaliação, selecione a solução desejada em um problema detectado e selecione Executar Tarefa.
  2. A janela de chat do Copilot é aberta com o Modo do Agente. O agente gera plan.md e progress.md, e você pode examinar o plano antes de prosseguir.
  3. Insira continue manualmente para confirmar e iniciar o processo de migração.
  4. Antes de fazer alterações de código, o agente verifica o status do sistema de controle de versão e cria uma nova ramificação.
  5. Selecione ou insira repetidamente Continuar confirmando o uso da ferramenta e aguarde a conclusão das alterações de código.

Captura de tela do painel Problemas do Visual Studio Code que mostra a opção Migrar para o Banco de Dados SQL do Azure com o botão Executar Tarefa realçado.

Examinar os resultados da validação

Depois de concluir as alterações de código, o agente executará um loop de validação automática que inclui as seguintes verificações:

  1. Validate-CVEs: detecta vulnerabilidades e exposições comuns nas dependências atuais e as corrige.
  2. Build-Project: tenta resolver erros de build.
  3. Consistência-validação: analisa o código para consistência funcional.
  4. Teste de execução: executa testes de unidade e gera automaticamente um plano para corrigir falhas.
  5. Completeness-Validation: captura itens de migração perdidos na migração de código inicial e os corrige.

Depois que todas as verificações terminarem, insira continue para gerar o resumo da migração. Examine as alterações de código e confirme selecionando Manter.

Criar tarefas personalizadas

Além de tarefas predefinidas, você pode criar tarefas personalizadas com base nos padrões de migração específicos da sua organização. As tarefas personalizadas usam referências de confirmações do Git, links externos ou arquivos de texto para orientar o agente de migração.

Criar uma tarefa personalizada com base em confirmações do Git

  1. Na barra lateral atividade, abra o painel de extensão de modernização do aplicativo GitHub Copilot, passe o mouse sobre a seção TAREFAS e selecione Criar uma Tarefa Personalizada.

    Captura de tela do Visual Studio Code que mostra o painel Tarefas de modernização do aplicativo GitHub Copilot com o botão Criar uma Tarefa Personalizada realçado.

  2. No arquivo aberto task.md , insira o nome da tarefa e o prompt de tarefa.

    Captura de tela do Visual Studio Code que mostra a tarefa de migrar RabbitMQ com os campos Nome da Tarefa e Prompt de Tarefa destacados.

  3. Selecione Adicionar Referências e selecione Confirmações do Git na caixa de diálogo pop-up.

    Captura de tela do Visual Studio Code que mostra a lista suspensa Selecionar tipo de origem com a opção de confirmações do Git destacada.

  4. Pesquise e selecione a confirmação relevante e selecione OK.

    Captura de tela da caixa de diálogo do Visual Studio Code com o título Selecionar confirmações como fontes.

  5. Clique em Salvar. Sua tarefa personalizada agora aparece na seção TAREFAS – Minhas Tarefas .

    Captura de tela do Visual Studio Code que mostra o arquivo task.md com o botão Salvar realçado.

  1. Abra o task.md arquivo e insira o nome da tarefa e o prompt. Por exemplo:

    • Nome da tarefa: Expose health endpoint via Spring Boot Actuator
    • Prompt de tarefa: You are a Spring Boot developer assistant, follow the Spring Boot Actuator documentation to add basic health endpoints for Azure Container Apps deployment.

    Captura de tela do Visual Studio Code que mostra a tarefa de ponto de extremidade de integridade exposta com os campos Nome da Tarefa e Prompt de Tarefa destacados.

  2. Selecione Adicionar Referências, selecione Links externos e cole a referência de URL. Selecione Adicionar Referências novamente, selecione Arquivos de Texto e adicione um arquivo com instruções extras.

  3. Selecione Salvar para criar a tarefa.

    Captura de tela do Visual Studio Code que mostra o arquivo task.md com as referências adicionadas.

Compartilhar tarefas personalizadas

Você pode compartilhar tarefas personalizadas com outros membros da equipe compartilhando a pasta de tarefas.

Para compartilhar uma tarefa personalizada, copie a pasta .github/appmod/custom-tasks e compartilhe-a com o destinatário pretendido. O destinatário cola a pasta de tarefas no .github/appmod/custom-tasks diretório e seleciona Atualizar Tarefa no painel de extensão.

Executar uma tarefa personalizada

Selecione Executar na parte inferior do arquivo de tarefa ou localize sua tarefa na seção TAREFAS – Minhas Tarefas e selecione Executar Tarefa. A janela de chat do Copilot é aberta no Modo do Agente e executa automaticamente o fluxo de trabalho de migração.

Captura de tela do Visual Studio Code que mostra a seção Tarefas com a tarefa 'Executar tarefa' e o botão 'Executar' realçados.

Se o aplicativo usar um banco de dados Oracle, prossiga para a próxima seção. Caso contrário, pule para Contêinerizar seu aplicativo.

Migrar do Oracle para o PostgreSQL

Observação

Esta seção se aplicará somente se o aplicativo usar um banco de dados Oracle. Se o aplicativo não usar o Oracle, pule para colocar seu aplicativo em contêiner.

A modernização de aplicativos do GitHub Copilot fornece uma tarefa de migração dedicada para o cenário de migração do Oracle para o Azure Database for PostgreSQL, que inclui:

  • Ferramentas de migração de banco de dados habilitadas para IA: para obter mais informações, consulte O que é a extensão PostgreSQL para visualização do Visual Studio Code?.
  • Conversão de SQL inteligente no código do aplicativo: funcionalidade de conversão de SQL interna na modernização do aplicativo GitHub Copilot, integrada perfeitamente como parte de um fluxo de trabalho de tarefa unificado.

Use a tarefa de migração Oracle para PostgreSQL

  1. Execute a avaliação do aplicativo conforme descrito em Avaliar a preparação da nuvem para aplicativos de contêiner do Azure.

  2. Após a conclusão da avaliação, examine o relatório. Se o aplicativo usar o Oracle, o relatório revelará um problema relacionado à Migração de Banco de Dados (Oracle) com a solução padrão Migrar do Oracle DB para o PostgreSQL.

    Captura de tela do Visual Studio Code que mostra o relatório de avaliação de modernização de aplicativos do GitHub Copilot para Oracle.

  3. Opcionalmente, verifique se coding_notes.md está presente na .github/postgre-migrations/*/results/application_guidance/ pasta. Se estiver presente, a modernização do aplicativo referencia essas notas para a conversão de SQL de maior qualidade. Caso contrário, entre em contato com sua equipe de banco de dados para gerá-los usando a extensão do Visual Studio Code do PostgreSQL.

  4. Selecione Executar Tarefa para executar a migração.

    Captura de tela do Visual Studio Code que mostra a execução da tarefa de modernização do aplicativo GitHub Copilot para Oracle para PostgreSQL.

Colocar seu aplicativo em contêiner

Depois de concluir a migração de código, conteinerize seu aplicativo Java para prepará-lo para implantação nos Aplicativos de Contêiner do Azure.

  1. Verifique se você tem o Docker instalado e em execução.

  2. No Visual Studio Code, abra o projeto migrado.

  3. Na barra lateral de Atividade, abra o painel de extensão de modernização do aplicativos GitHub Copilot.

  4. Na seção Tarefas , abra o Java e, em seguida, abra Tarefas de Contêiner e selecione Containerize Application.

    Captura de tela do Visual Studio Code que mostra a tarefa Containerize Application com o botão Executar Tarefa realçado.

  5. Confirme cada ação de ferramenta selecionando Continuar quando solicitado.

  6. Copilot passa pelas seguintes etapas:

    • Verifica se o Docker está instalado e em execução.
    • Verifica se o código do aplicativo está pronto para ser executado em um contêiner.
    • Cria um Dockerfile para cada projeto.
    • Cria imagens do Docker para cada projeto.
    • Cria um resumo dos resultados da contêinerização.

Observação

Para obter os melhores resultados, use o modelo recomendado mais recente mostrado nas configurações do agente da extensão. O Copilot pode precisar de algumas iterações para corrigir erros de contêinerização.

Para obter mais informações sobre as ferramentas de contêinerização, consulte o repositório de assistência de contêineres no GitHub.

Implantar nos Aplicativos de Contêiner do Azure

Depois de colocar seu aplicativo em contêiner, implante-o nos Aplicativos de Contêiner do Azure.

  1. No Visual Studio Code, abra o projeto migrado.

  2. Na barra lateral de Atividade, abra o painel da extensão de modernização do aplicativo GitHub Copilot.

  3. Na seção Tarefas , abra Java, abra Tarefas de Implantação e selecione uma das seguintes opções de implantação:

    • Implantar na infraestrutura existente do Azure: o Copilot solicita seu grupo de recursos existente e implanta nos recursos correspondentes.
    • Provisionar infraestrutura e implantar no Azure: o Copilot cria novos recursos do Azure e implanta seu projeto.

    Captura de tela do Visual Studio Code que mostra a tarefa Provisionar Infraestrutura e Implantar no Azure, com o botão Executar Tarefa realçado.

  4. Confirme cada ação de ferramenta selecionando Continuar quando solicitado e forneça as informações necessárias, como assinatura e grupo de recursos.

  5. Copilot passa pelas seguintes etapas:

    • Gera um arquivo markdown de plano de implantação com a meta de implantação, as informações do projeto, a arquitetura de recursos do Azure, os recursos do Azure e as etapas de execução.
    • Siga as etapas previstas de execução no plano.
    • Corrige os erros de implantação.
    • Gera um arquivo de resumo que explica os resultados da implantação.

Observação

Para obter os melhores resultados, use o modelo recomendado mais recente mostrado nas configurações do agente da extensão. Pode levar algumas iterações do Copilot para corrigir os erros de implantação.

Melhores práticas pós-migração

Depois de migrar seu aplicativo Java para os Aplicativos de Contêiner do Azure, considere as seguintes práticas recomendadas:

  • Configurar as investigações de integridade: configure as investigações de integridade para permitir que os Aplicativos de Contêiner do Azure monitorem a integridade do aplicativo.
  • Configurar o registro de logs: configure o log baseado em console para se integrar ao Azure Monitor para agregação e análise centralizadas de logs.
  • Configurar regras de dimensionamento: configureregras de dimensionamento com base no tráfego HTTP, CPU, memória ou métricas personalizadas para lidar com cargas de trabalho variadas.
  • Gerenciar segredos: use o gerenciamento de segredos dos Aplicativos de Contêiner do Azure ou o Azure Key Vault para armazenar e acessar com segurança valores de configuração confidenciais.
  • Configurar os pipelines de CI/CD: automatize sua pipeline de implantação utilizando o GitHub Actions ou o Azure Pipelines para integração e entrega contínuas.
  • Habilitar as implantações azul-verde: use as revisões e a divisão de tráfego para implementar implantações sem tempo de inatividade.
  • Configurar domínios personalizados: configurar domínios e certificados personalizados para tráfego de produção.
  • Monitorar com métricas e alertas: proativamente, use as métricas e os alertas para monitorar a integridade e o desempenho do aplicativo.
  • Habilitar redundância de zona: configure a redundância de zona para alta disponibilidade entre zonas de disponibilidade.