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 appcat
o , 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 appcat
o , 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 appcat
o .
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.
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.
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.
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.
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.
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.
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 appcat
do , 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.
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 appcat
do , 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.