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.
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.
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.
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.
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.
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.
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.
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.