Avaliação de aplicação e código das Migrações para Azure para Java

Este guia descreve como usar a ferramenta de avaliação de aplicação e código das Migrações para Azure para Java para avaliar e reformular qualquer tipo de aplicativo Java. A ferramenta permite que você avalie a preparação do aplicativo para reformular e migrar para o Azure.

appcat é uma ferramenta de linha de comando das Migrações para Azure para avaliar binários de aplicativos Java e código-fonte para identificar oportunidades de reformulação e migração para o Azure. Ajuda você a modernizar e reformular aplicativos Java em grande escala, identificando casos de uso e padrões de código comuns e propondo alterações recomendadas.

appcat descobre o uso da tecnologia de aplicativos por meio de análise de código estático, oferece suporte à estimativa de esforço e acelera a reformulação de código, ajudando você a migrar 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, ajuda você a reformular aplicativos Java para diferentes alvos do Azure (Serviço de Aplicativo do Azure, Serviço de Kubernetes do Azure, Aplicativos de Contêiner do Azure e Aplicativos Spring do Azure) com regras específicas de reformulação do Azure.

appcat é de código aberto e é baseado no WindUp, um projeto criado pela Red Hat e publicado sob a Licença Pública do Eclipse.

Quando devo usar a avaliação de aplicação e código das Migrações para Azure?

appcat foi projetado para ajudar as organizações a modernizar seus aplicativos Java de forma a reduzir custos e habilitar uma inovação mais rápida. A ferramenta usa técnicas avançadas de análise para entender a estrutura e as dependências dos aplicativos Java e fornece diretrizes sobre como refatorar e migrar os aplicativos para o Azure.

Com o appcat, você pode realizar 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.
  • Avalie 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 no Azure.

Destino do Azure com suporte

A ferramenta contém regras para ajudar você a reformular seus aplicativos para poder implantar e usar os seguintes serviços do Azure.

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

  • Serviço de Aplicativo do Azure
  • Azure Spring Apps
  • Serviço de Kubernetes do Azure
  • Aplicativos de Contêiner do Azure
  • preparação para a nuvem
  • descobrir
  • linux
  • openjdk11
  • openjdk17
  • openjdk21

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

  • Bancos de dados do Azure
  • Barramento de Serviço do Azure
  • Armazenamento do Azure
  • CDN do Azure
  • Hubs de eventos do Azure
  • Cofre de Chave do Azure

Use a avaliação de aplicação e código das Migrações para Azure para Java

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

Download

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

Executar appcat

Descompacte o arquivo zip em uma pasta de sua escolha. Em seguida, você obterá a seguinte estrutura de diretório:

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 de appcat.
  • bin: este diretório contém os executáveis da CLI appcat (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 em sua variável de ambiente PATH e reinicie a sessão do terminal.

Documentação

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

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

A descoberta de tecnologias é o primeiro estágio da reformulação e da modernização do aplicativo. Durante a fase de descoberta, o appcat examina 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 de seus componentes (confira 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, o appcat executará a descoberta implicitamente para qualquer destino do Azure.

Avaliar um aplicativo Java para um destino específico

A fase de avaliação é onde o appcat analisa o aplicativo e seus componentes para determinar sua adequação à reformulação e para identificar possíveis desafios ou limitações. Essa fase envolve analisar o código do aplicativo e verificar sua conformidade com o destino do Azure selecionado ou o destino do OpenJDK.

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

./appcat --listTargetTechnologies

Esse comando produz uma saída semelhante ao seguinte exemplo:

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 do 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 reformulação e modernização do aplicativo Java, incluindo recomendações para o serviço do Azure e a abordagem de reformulação. O relatório serve como base para os próximos estágios do processo de reformulação. 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 pelo appcat fornece uma visão geral abrangente do aplicativo e de seus componentes. Você pode usar esse relatório para obter insights sobre a estrutura e as dependências do aplicativo e determinar sua adequação para a reformulação e modernização.

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

Resumo da análise

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

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

Ao ampliar o gráfico de pizza Incidentes por Categoria, você poderá ver o número de incidentes por categoria: Obrigatório, Opcional, Potencial e Informativo.

O dashboard também mostra os story points. Os story points são uma métrica abstrata comumente usada no desenvolvimento de software Agile para estimar o nível de esforço necessário para implementar um recurso ou alteração. O appcat usa story points para expressar o nível de esforço necessário para migrar um aplicativo específico. Os story points não necessariamente se traduzem em horas de trabalho, mas o valor deve ser consistente entre as tarefas.

Captura de tela do relatório de incidentes de resumo 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 Informativo. Esse relatório está apenas informando sobre a tecnologia que o 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.

Estes Problemas, também chamados Incidentes, têm uma severidade (Obrigatória, Opcional, Potencial ou Informativo), um nível de esforço e um número indicando os story points. Os story points são determinados calculando o número de incidentes vezes multiplicado pelo esforço necessário para resolver o problema.

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

Informações detalhadas sobre um problema específico

Para cada incidente, você pode obter mais informações (os detalhes 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 este incidente.

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

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

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

Regras personalizadas

Você pode usar o appcat como um mecanismo de regra. Ele usa regras para extrair arquivos de arquivos Java, descompilar classes Java, verificar e classificar tipos de arquivos, analisar esses arquivos e criar 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 o appcat pode detectar durante a análise.

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

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

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

Para escrever uma regra customizada, você usa uma linguagem específica de domínio (DLS) expressa em XML. Por exemplo, digamos que você queira uma regra que identifique o uso do driver PostgreSQL JDBC em um aplicativo Java e sugira o uso do Servidor Flexível do Azure para PostgreSQL. Você precisa de uma regra para localizar o driver JDBC do PostgreSQL definido em um arquivo pom.xml do Maven ou em 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 detectar o uso dessa dependência, a regra usa as seguintes marcas XML:

  • ruleset: o identificador exclusivo do conjunto de regras. Um conjunto de regras é uma coleção de regras relacionadas a uma tecnologia específica.
  • targetTechnology: a tecnologia que a regra visa. Nesse caso, a regra tem como alvo os Serviços de Aplicativo do Azure, o Serviço de Kubernetes do Azure (AKS), os Aplicativos Spring do Azure e os Aplicativos de Contêiner do Azure.
  • rule: o elemento raiz de uma única regra.
  • when: a condição que deve ser atendida para que a regra seja disparada.
  • perform: a ação a ser executada quando a regra for disparada.
  • hint: a mensagem a ser exibida no relatório, sua categoria (Informativo, Opcionais ou Obrigatório) 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 esta regra por meio do appcat, execute novamente a análise para revisar o relatório gerado. Assim como acontece com outros incidentes, o relatório de avaliação lista os problemas identificados e os arquivos afetados relacionados a essa regra.

Captura de tela do appcat com uma regra sendo executada.

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

Licença

A avaliação de aplicação e código das Migrações para Azure para Java é uma ferramenta gratuita e de código aberto sem custo e licenciada sob a mesma licença que o projeto do WindUp upstream.

Perguntas frequentes

P: Onde posso baixar a versão mais recente da avaliação de aplicação e código das Migrações para Azure para Java?

Você pode baixar appcat em aka.ms/appcat/azure-appcat-cli-latest.zip.

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

Ao baixar appcat, você obterá 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 de Conjuntos de regras do appcat.

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

Confira o Guia de Desenvolvimento de Regras da avaliação de aplicação e código das Migrações para Azure para Java.

P: Onde posso obter ajuda ao criar regras personalizadas?

A melhor maneira de obter ajuda é criar um problema no repositório GitHub de Conjuntos de regras do appcat.

Próximas etapas