Share via


Azure Migrate aplicativo e avaliação de código para Java

Este guia descreve como usar o aplicativo Azure Migrate e a ferramenta de avaliação de código para Java para avaliar e reformular qualquer tipo de aplicativo Java. A ferramenta permite avaliar a preparação do aplicativo para replataforma e migração para o Azure.

appcat é uma ferramenta de linha de comando do Azure Migrate para avaliar binários de aplicativos Java e código-fonte para identificar oportunidades de replataforma e migração para o Azure. Ele ajuda a modernizar e reformular aplicativos Java de grande escala, identificando casos de uso comuns e padrões de código e propondo alterações recomendadas.

appcat descobre o uso da tecnologia de aplicativos por meio da análise estática de código, dá suporte à estimativa de esforço e acelera a replataforma de código, ajudando você a mover aplicativos Java para o Azure. Com um conjunto de mecanismos e regras, ele pode descobrir e avaliar diferentes tecnologias, como Java 11, Java 17, Jakarta EE 10, Quarkus, Spring e assim por diante. Em seguida, ele ajuda você a reformular o aplicativo Java para diferentes destinos do Azure (Serviço de Aplicativo do Azure, Serviço Kubernetes do Azure, Aplicativos de Contêiner do Azure e Aplicativos Azure Spring) com regras específicas de replataforma do Azure.

appcat é de código aberto e é baseado no WindUp, um projeto criado pela Red Hat e publicado sob a Eclipse Public License.

Quando devo usar o aplicativo Azure Migrate e a avaliação de código?

appcat foi concebido para ajudar as organizações a modernizar as suas aplicações Java de uma forma que reduza os custos e permita uma inovação mais rápida. A ferramenta usa técnicas avançadas de análise para entender a estrutura e as dependências de qualquer aplicativo Java e fornece orientação sobre como refatorar e migrar os aplicativos para o Azure.

Com appcato , você pode executar as seguintes tarefas:

  • Descubra o uso da tecnologia: veja rapidamente quais tecnologias um aplicativo usa. A descoberta é útil se você tiver aplicativos herdados com pouca documentação e quiser saber quais tecnologias eles usam.
  • Avaliar o código para um destino específico: avalie um aplicativo para um destino específico do Azure. Verifique o esforço e as modificações que você precisa fazer para reformular seus aplicativos para o Azure.

Destinos do Azure suportados

A ferramenta contém regras para ajudá-lo a reformular seus aplicativos para que você possa implantar e usar os seguintes serviços do Azure.

Você pode usar os seguintes serviços como destinos de implantação:

  • Serviço de Aplicações do Azure
  • Azure Spring Apps
  • Azure Kubernetes Service
  • Azure Container Apps
  • Preparação para a nuvem
  • deteção
  • linux
  • OpenJDK11
  • OpenJDK17
  • OpenJDK21

Você pode usar os seguintes serviços como serviços de recursos:

  • Bases de Dados do Azure
  • Azure Service Bus
  • Armazenamento do Azure
  • CDN do Azure
  • Hubs de Eventos do Azure
  • Azure Key Vault

Usar o aplicativo Azure Migrate e a avaliação de código para Java

Para usar appcato , você deve baixar o arquivo ZIP descrito na próxima seção e ter uma instalação compatível do JDK 11+ no seu computador. appcat roda em Windows, Linux ou Mac, ambos para hardware Intel, Arm e Apple Silicon. Você pode usar o Microsoft Build do OpenJDK para executar appcato .

Download

A appcat CLI está disponível para download como um arquivo ZIP do aka.ms/appcat/azure-appcat-cli-latest.zip.

Executar appcat

Descompacte o arquivo zip em uma pasta de sua escolha. Em seguida, você obtém a seguinte estrutura de diretórios:

appcat-cli-<version>    # APPCAT_HOME
  ├── README.md
  ├── bin
  │   ├── appcat
  │   └── appcat.bat
  ├── docs
  │   └── appcat-guide.html
  └── samples
      ├── airsonic.war
      ├── run-assessment
      ├── run-assessment-custom-rules
      ├── run-assessment-exclude-packages
      ├── run-assessment-no-code-report
      ├── run-assessment-openjdk21
      ├── run-assessment-zip-report
      └── run-discovery
        
  • docs: Este diretório contém a documentação do appcat.
  • bin: Este diretório contém os executáveis da appcat CLI (para Windows/Linux/Mac).
  • exemplos: Este diretório contém um aplicativo de exemplo e vários scripts para executar appcat no aplicativo de exemplo.

Para executar a ferramenta, abra uma sessão de terminal e digite o seguinte comando no diretório $APPCAT_HOME/bin :

./appcat --help

Para executar a ferramenta de qualquer lugar no computador, configure o diretório $APPCAT_HOME/bin na PATH variável de ambiente e reinicie a sessão do terminal.

Documentação

Os guias a seguir fornecem a documentação principal para appcat Java:

Descubra o uso da tecnologia sem um destino do Azure em mente

A descoberta de tecnologias é o primeiro estágio da replataforma e modernização de aplicativos. Durante a fase de descoberta , appcat verifica o aplicativo e seus componentes para obter uma compreensão abrangente de sua estrutura, arquitetura e dependências. Essas informações são usadas para criar um inventário detalhado do aplicativo e seus componentes (consulte a seção Relatório de descoberta ), que serve como base para análise e planejamento adicionais.

Use o seguinte comando para iniciar a descoberta:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target discovery

A fase de descoberta é útil quando você não tem um destino específico do Azure em mente. Caso contrário, appcat executa a descoberta implicitamente para qualquer destino do Azure.

Avaliar um aplicativo Java para um destino específico

A fase de avaliação é onde appcat analisa a aplicação e seus componentes para determinar sua adequação para replatorming e identificar quaisquer desafios ou limitações potenciais. Esta fase envolve a análise do código do aplicativo e a verificação de sua conformidade com o destino selecionado do Azure ou do OpenJDK.

Para verificar os destinos disponíveis, execute o seguinte comando:

./appcat --listTargetTechnologies

Este comando produz uma saída semelhante ao exemplo a seguir:

Available target technologies:
    azure-aks
    azure-appservice
    azure-container-apps
    azure-spring-apps
    cloud-readiness
    discovery
    linux
    openjdk11
    openjdk17
    openjdk21

Em seguida, você pode executar appcat usando um dos destinos disponíveis do Azure, conforme mostrado no exemplo a seguir:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target azure-appservice

Você pode executar appcat usando um dos destinos OpenJDK disponíveis, conforme mostrado no exemplo a seguir:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target openjdk11

Obter resultados do appcat

O resultado das fases de descoberta e avaliação é um relatório detalhado que fornece um roteiro para a replataforma e modernização do aplicativo Java, incluindo recomendações para o serviço do Azure e a abordagem de replataforma. O relatório serve de base para as próximas etapas do processo de replataforma. Ele ajuda as organizações a aprender sobre o esforço necessário para essa transformação e tomar decisões sobre como modernizar seus aplicativos para obter o máximo de benefícios.

O relatório gerado por appcat fornece uma visão abrangente do aplicativo e seus componentes. Você pode usar esse relatório para obter informações sobre a estrutura e as dependências do aplicativo e para determinar sua adequação para replataforma e modernização.

As seções a seguir fornecem mais informações sobre o relatório.

Resumo da análise

A página de destino do relatório lista todas as tecnologias usadas no aplicativo. O painel fornece um resumo da análise, incluindo o número de incidentes de transformação, as categorias de incidentes ou os pontos da história.

Captura de tela do relatório de resumo do appcat.

Ao ampliar o gráfico de pizza Incidentes por categoria , você pode ver o número de incidentes por categoria: Obrigatório, Opcional, Potencial e Informações.

O painel também mostra os pontos da história. Os pontos de história são uma métrica abstrata comumente usada no desenvolvimento de software ágil para estimar o nível de esforço necessário para implementar um recurso ou mudança. appcat usa pontos de história para expressar o nível de esforço necessário para migrar um aplicativo específico. Os pontos de história não se traduzem necessariamente em horas de trabalho, mas o valor deve ser consistente em todas as tarefas.

Captura de tela do relatório de incidente resumido do AppCAT.

Relatório de descoberta

O relatório de descoberta é um relatório gerado durante a fase de descoberta. Ele mostra a lista de tecnologias usadas pelo aplicativo na categoria Informações . Este relatório está apenas informando sobre a tecnologia que appcat descobriu.

Captura de tela do relatório de descoberta do appcat.

Relatório de avaliação

O relatório de avaliação fornece uma visão geral dos problemas de transformação que precisariam ser resolvidos para migrar o aplicativo para o Azure.

Esses Problemas, também chamados de Incidentes, têm uma gravidade (Obrigatório, Opcional, Potencial ou Informação), um nível de esforço e um número indicando os pontos da história. Os pontos da história são determinados calculando o número de incidentes vezes o esforço necessário para resolver o problema.

Captura de ecrã do relatório de avaliação AppCAT.

Informações pormenorizadas sobre uma questão específica

Para cada incidente, você pode obter mais informações (o detalhe do problema, o conteúdo da regra e assim por diante) apenas selecionando-o. Você também obtém a lista de todos os arquivos afetados por esse incidente.

Captura de tela do relatório de detalhes do problema do AppCAT.

Em seguida, para cada arquivo ou classe afetada pelo incidente, você pode ir para o código-fonte para destacar a linha de código que criou o problema.

Captura de tela do relatório de código de problema do AppCAT.

Regras personalizadas

Você pode pensar como um mecanismo de appcat regra. Ele usa regras para extrair arquivos de arquivos Java, descompila classes Java, verifica e classifica tipos de arquivos, analisa esses arquivos e constrói os relatórios. No appcat, as regras são definidas na forma de um conjunto de regras. Um conjunto de regras é uma coleção de regras individuais que definem problemas ou padrões específicos que appcat podem ser detetados durante a análise.

Essas regras são definidas em XML e usam o seguinte padrão de regras:

when (condition)
    perform (action)
    otherwise (action)

appcat fornece um conjunto abrangente de regras de migração padrão. Como os aplicativos podem conter bibliotecas ou componentes personalizados, appcat permite que você escreva suas próprias regras para identificar o uso de componentes ou software que o conjunto de regras existente pode cobrir.

Para escrever uma regra personalizada, use uma linguagem específica de domínio avançado (DLS) expressa em XML. Por exemplo, digamos que você queira uma regra que identifique o uso do driver JDBC PostgreSQL em um aplicativo Java e sugira o uso do Servidor Flexível PostgreSQL do Azure. Você precisa de uma regra para localizar o driver JDBC PostgreSQL definido em um arquivo Maven pom.xml ou um arquivo Gradle, como a dependência mostrada no exemplo a seguir:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

Para detetar o uso dessa dependência, a regra usa as seguintes marcas XML:

  • ruleset: O identificador único do conjunto de regras. Um conjunto de regras é um conjunto de regras relacionadas a uma tecnologia específica.
  • targetTechnology: A tecnologia visada pela regra. Nesse caso, a regra é direcionada aos Serviços de Aplicativo do Azure, ao Serviço Kubernetes do Azure (AKS), aos Aplicativos Azure Spring e aos Aplicativos de Contêiner do Azure.
  • rule: O elemento raiz de uma única regra.
  • when: A condição que deve ser cumprida para que a regra seja acionada.
  • perform: A ação a ser executada quando a regra é acionada.
  • hint: A mensagem a ser exibida no relatório, sua categoria (Informação, Opcional ou Obrigatória) e o esforço necessário para corrigir o problema, variando de 1 (fácil) a 13 (difícil).

O XML a seguir mostra a definição de regra personalizada:

<ruleset id="azure-postgre-flexible-server"
         xmlns="http://windup.jboss.org/schema/jboss-ruleset"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
    <metadata>
        <description>Recommend Azure PostgreSQL Flexible Server.</description>
        <dependencies>
            <addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final"/>
        </dependencies>
        <targetTechnology id="azure-appservice"/>
        <targetTechnology id="azure-aks"/>
        <targetTechnology id="azure-container-apps"/>
        <targetTechnology id="azure-spring-apps"/>
    </metadata>
    <rules>
        <rule id="azure-postgre-flexible-server">
            <when>
                <project>
                    <artifact groupId="org.postgresql" artifactId="postgresql"/>
                </project>
            </when>
            <perform>
                <hint title="Azure PostgreSQL Flexible Server" category-id="mandatory" effort="7">
                    <message>The application uses PostgreSQL. It is recommended to use Azure PostgreSQL Flexible Server instead.</message>
                    <link title="Azure PostgreSQL Flexible Server documentation" href="https://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
                </hint>
            </perform>
        </rule>
    </rules>
</ruleset>

Depois de executar essa regra através appcatdo , execute novamente a análise para revisar o relatório gerado. Tal como acontece com outros incidentes, o relatório de avaliação lista os problemas identificados e os ficheiros afetados relacionados com esta regra.

Captura de tela do appcat com uma regra sendo executada.

O guia completo para o desenvolvimento de regras está disponível em azure.github.io/appcat-docs/rules-development-guide.

Licença

O Azure Migrate application and code assessment for Java é uma ferramenta gratuita de código aberto sem custos e licenciada sob a mesma licença que o projeto WindUp upstream.

Perguntas mais frequentes

P: Onde posso baixar a versão mais recente do aplicativo Azure Migrate e a avaliação de código para Java?

Você pode fazer o download appcat em aka.ms/appcat/azure-appcat-cli-latest.zip.

P: Onde posso encontrar mais informações sobre o aplicativo Azure Migrate e a avaliação de código para Java?

Ao fazer o download appcatdo , você recebe um diretório de documentos com todas as informações necessárias para começar.

P: Onde posso encontrar as regras específicas do Azure?

Todas as regras do Azure estão disponíveis no repositório GitHub do appcat Rulesets.

P: Onde posso encontrar mais informações sobre como criar regras personalizadas?

Consulte o Guia de Desenvolvimento de Regras para Azure Migrate aplicativo e avaliação de código para Java.

P: Onde posso obter ajuda ao criar regras personalizadas?

A melhor maneira de obter ajuda é criar um problema no repositório GitHub appcat-rulesets.

Próximos passos