Outil Azure Migrate d’évaluation des applications et du code pour Java
Ce guide explique comment utiliser l’outil Azure Migrate d’évaluation des applications et du code pour Java afin d’évaluer et de déplacer n’importe quel type d’application Java vers une autre plateforme. L’outil vous permet d’évaluer si l’application est prête à un changement de plateforme, et à une migration vers Azure.
appcat
est un outil en ligne de commande d’Azure Migrate, qui permet d’évaluer les fichiers binaires et le code source des applications Java pour déterminer s’il est possible de déplacer celles-ci vers une autre plateforme, et de les migrer vers Azure. Il vous aide à moderniser et à déplacer vers une autre plateforme les applications Java, à grande échelle, en identifiant les cas d’usage et les modèles de code courants ainsi qu’en préconisant des changements.
appcat
découvre quelles sont les technologies utilisées par les applications via l’analyse du code statique. De plus, l’outil prend en charge l’estimation du niveau d’effort nécessaire, et accélère le déplacement du code vers une autre plateforme, ce qui vous aide à migrer les applications Java vers Azure. À l’aide d’un ensemble de moteurs et de règles, il peut découvrir et évaluer différentes technologies telles que Java 11, Java 17, Jakarta EE 10, Quarkus, Spring, etc. Il vous aide ensuite à déplacer l’application Java vers une autre plateforme selon différentes cibles Azure (Azure App Service, Azure Kubernetes Service, Azure Container Apps et Azure Spring Apps) en suivant les règles de changement de plateforme spécifiques à Azure.
appcat
est open source et est basé sur WindUp, un projet créé par Red Hat et publié sous la licence Eclipse Public License.
Quand dois-je utiliser l’outil Azure Migrate d’évaluation des applications et du code ?
appcat
est conçu pour aider les organisations à moderniser leurs applications Java de manière à réduire les coûts et à accélérer l’innovation. L’outil utilise des techniques d’analyse avancées pour comprendre la structure et les dépendances des applications Java. Il fournit des conseils d’aide sur la refactorisation et la migration des applications vers Azure.
Avec appcat
, vous pouvez effectuer les tâches suivantes :
- Découvrir les technologies utilisées : évaluez rapidement les technologies utilisées par une application. Cette découverte est utile si vous avez des applications héritées avec peu de documentation, et si vous souhaitez savoir quelles sont les technologies qu’elles utilisent.
- Évaluer le code en fonction d’une cible spécifique : évaluez une application en fonction d’une cible Azure spécifique. Déterminez quels sont les efforts nécessaires et les modifications à effectuer pour déplacer vos applications vers une autre plateforme, notamment Azure.
Cibles Azure pris en charge
L’outil contient des règles qui vous aident à effectuer le changement de plateforme de vos applications pour pouvoir déployer et utiliser les services Azure suivants.
Vous pouvez utiliser les services suivants en tant que cibles de déploiement :
- Azure App Service
- Azure Spring Apps
- Azure Kubernetes Service
- Azure Container Apps
- préparation au cloud
- découverte
- linux
- openjdk11
- openjdk17
- openjdk21
Vous pouvez utiliser les services suivants en tant que services de ressources :
- Bases de données Azure
- Azure Service Bus
- Stockage Azure
- Azure CDN
- Hubs d'événements Azure
- Azure Key Vault
Utiliser l’outil Azure Migrate d’évaluation des applications et du code pour Java
Pour utiliser appcat
, vous devez télécharger le fichier ZIP décrit dans la section suivante et disposer d’une installation de JDK 11+ compatible sur votre ordinateur. appcat
s’exécute sur Windows, Linux ou Mac, à la fois pour le matériel Intel, Arm et Apple Silicon. Vous pouvez utiliser la build Microsoft d’OpenJDK pour exécuter appcat
.
Télécharger
Vous pouvez télécharger l’interface CLI d’appcat
sous forme de fichier ZIP à partir de aka.ms/appcat/azure-appcat-cli-latest.zip.
Exécuter appcat
Décompressez le fichier zip dans le dossier de votre choix. Vous obtenez ensuite la structure de répertoires suivante :
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 : ce répertoire contient la documentation de
appcat
. - bin : ce répertoire contient les exécutables CLI d’
appcat
(pour Windows/Linux/Mac). - samples : ce répertoire contient un exemple d’application ainsi que plusieurs scripts permettant d’exécuter
appcat
sur l’exemple d’application.
Pour exécuter l’outil, ouvrez une session de terminal, puis tapez la commande suivante à partir du répertoire $APPCAT_HOME/bin :
./appcat --help
Pour exécuter l’outil depuis n’importe quel emplacement de votre ordinateur, configurez le répertoire $APPCAT_HOME/bin dans votre variable d’environnement PATH
, puis redémarrez votre session de terminal.
Documentation
Les guides suivants fournissent la documentation principale de appcat
pour Java :
Découvrir les technologies utilisées sans cible Azure particulière à l’esprit
La découverte des technologies est la première phase du changement de plateforme et de la modernisation des applications. Durant la phase de découverte, appcat
analyse l’application et ses composants pour acquérir une compréhension complète de sa structure, de son architecture et de ses dépendances. Ces informations permettent de créer un inventaire détaillé de l’application et de ses composants (consultez la section Rapport de découverte), qui sert de base à une analyse et une planification plus approfondies.
Utilisez la commande suivante pour lancer la découverte :
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery
La phase de découverte est utile quand vous n’avez pas de cible Azure spécifique à l’esprit. Sinon, appcat
exécute implicitement la découverte pour toutes les cibles Azure.
Évaluer une application Java pour une cible spécifique
La phase d’évaluation est celle où appcat
analyse l’application et ses composants pour déterminer si un changement de plateforme est approprié ainsi que pour identifier les problèmes ou les limitations potentiels. Cette phase implique l’analyse du code de l’application et la vérification de sa conformité avec la cible Azure ou la cible OpenJDK sélectionnée.
Pour vérifier quelles sont les cibles disponibles, exécutez la commande suivante :
./appcat --listTargetTechnologies
Cette commande produit une sortie semblable à celle de l’exemple suivant :
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Vous pouvez ensuite exécuter appcat
en utilisant l’une des cibles Azure disponibles, comme le montre l’exemple suivant :
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target azure-appservice
Vous pouvez exécuter appcat
en utilisant l’une des cibles OpenJDK disponibles, comme le montre l’exemple suivant :
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
Obtenir des résultats à partir d’appcat
Le résultat des phases de découverte et d’évaluation est un rapport détaillé qui fournit une feuille de route sur le changement de plateforme et la modernisation de l’application Java ainsi que des recommandations relatives au service Azure et à l’approche du changement de plateforme. Le rapport sert de base aux phases suivantes du processus de changement de plateforme. Il permet aux organisations d’en savoir plus sur les efforts nécessaires à fournir pour une telle transformation, et de prendre des décisions sur la façon de moderniser leurs applications afin d’en tirer le maximum d’avantages.
Le rapport généré par appcat
fournit une vue d’ensemble complète de l’application et de ses composants. Vous pouvez utiliser ce rapport afin d’obtenir des insights sur la structure et les dépendances de l’application ainsi que pour déterminer la pertinence d’un changement de plateforme et d’une modernisation de celle-ci.
Les sections suivantes fournissent plus d’informations sur le rapport.
Résumé de l’analyse
La page d’arrivée du rapport liste toutes les technologies utilisées dans l’application. Le tableau de bord fournit un résumé de l’analyse notamment des informations sur le nombre d’incidents de transformation, les catégories d’incidents ou les story points.
Quand vous effectuez un zoom avant sur le graphique en secteurs Incidents par catégorie, vous pouvez voir le nombre d’incidents par catégorie : Obligatoire, Facultatif, Potentiel et Informations.
Le tableau de bord montre également les story points. Les story points sont une métrique abstraite couramment utilisée en Agile software development afin d’estimer le niveau d’effort nécessaire pour implémenter une fonctionnalité ou un changement. appcat
utilise des story points pour indiquer le niveau d’effort nécessaire à la migration d’une application particulière. Les story points ne se traduisent pas nécessairement en heures de travail, mais la valeur doit être cohérente d’une tâche à l’autre.
Rapport de découverte
Le rapport de découverte est un rapport généré durant la phase de découverte. Il montre la liste des technologies utilisées par l’application dans la catégorie Informations. Ce rapport vous informe simplement sur les technologies découvertes par appcat
.
Rapport d’évaluation
Le rapport d’évaluation fournit une vue d’ensemble des problèmes de transformation à résoudre pour migrer l’application vers Azure.
Ces problèmes, également appelés incidents, sont associés à un niveau de gravité (Obligatoire, Facultatif, Potentiel ou Information), un niveau d’effort et un nombre de story points. Les story points sont déterminés par le calcul du nombre d’incidents multiplié par le niveau d’effort nécessaire à la résolution du problème.
Informations détaillées sur un problème spécifique
Pour chaque incident, vous pouvez obtenir plus d’informations (détails du problème, contenu de la règle, etc.) en le sélectionnant simplement. Vous obtenez également la liste de tous les fichiers affectés par cet incident.
Puis, pour chaque fichier ou classe affectée par l’incident, vous pouvez accéder directement au code source afin de mettre en évidence la ligne de code à l’origine du problème.
Règles personnalisées
Vous pouvez considérer appcat
comme un moteur de règles. Il utilise des règles pour extraire des fichiers à partir d’archives Java, décompile les classes Java, analyse et classifie les types de fichiers, analyse ces fichiers, et génère les rapports. Dans appcat
, les règles sont définies sous la forme d’un ensemble de règles. Un ensemble de règles est une collection de règles individuelles qui définissent des problèmes ou des modèles spécifiques que appcat
peut détecter au cours de l’analyse.
Ces règles sont définies en XML, et utilisent le modèle de règle suivant :
when (condition)
perform (action)
otherwise (action)
appcat
fournit un ensemble complet de règles de migration standard. Dans la mesure où les applications peuvent contenir des bibliothèques ou des composants personnalisés, appcat
vous permet d’écrire vos propres règles pour identifier l’utilisation des composants ou des logiciels couverts par l’ensemble de règles existant.
Pour écrire une règle personnalisée, vous utilisez un langage dédié au format XML. Par exemple, vous souhaitez obtenir une règle qui identifie l’utilisation du pilote JDBC PostgreSQL dans une application Java, et qui suggère l’utilisation d’Azure PostgreSQL - Serveur flexible à la place. Vous avez besoin d’une règle pour rechercher le pilote JDBC PostgreSQL défini dans un fichier pom.xml Maven ou un fichier Gradle, par exemple la dépendance affichée dans l’exemple suivant :
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Pour détecter l’utilisation de cette dépendance, la règle utilise les balises XML suivantes :
ruleset
: identificateur unique de l’ensemble de règles. Un ensemble de règles est une collection de règles liées à une technologie spécifique.targetTechnology
: technologie ciblée par la règle. Dans le cas présent, la règle cible Azure App Service, AKS (Azure Kubernetes Service), Azure Spring Apps et Azure Container Apps.rule
: élément racine d’une seule règle.when
: condition à remplir pour permettre le déclenchement de la règle.perform
: action à effectuer quand la règle se déclenche.hint
: message à afficher dans le rapport, catégorie (Informations, Facultatif ou Obligatoire) et niveau d’effort nécessaire à la résolution du problème, allant de 1 (facile) à 13 (difficile).
Le code XML suivant montre la définition de la règle personnalisée :
<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>
Après avoir exécuté cette règle via appcat
, réexécutez l’analyse pour passer en revue le rapport généré. Comme pour les autres incidents, le rapport d’évaluation liste les problèmes identifiés et les fichiers affectés liés à cette règle.
Le guide complet du développement de règles est disponible sur azure.github.io/appcat-docs/rules-development-guide.
Licence
L’outil Azure Migrate d’évaluation des applications et du code pour Java est un outil open source gratuit, distribué sous licence dans le cadre de la même licence que celle du projet WindUp en amont.
Forum aux questions
Q : Où puis-je télécharger la dernière version de l’outil Azure Migrate d’évaluation des applications et du code pour Java ?
Vous pouvez télécharger appcat
à partir de aka.ms/appcat/azure-appcat-cli-latest.zip.
Q : Où puis-je trouver plus d’informations sur l’outil Azure Migrate d’évaluation des applications et du code pour Java ?
Quand vous téléchargez appcat
, vous obtenez un répertoire docs contenant toutes les informations dont vous avez besoin pour commencer.
Q : Où puis-je trouver les règles spécifiques à Azure ?
Toutes les règles Azure sont disponibles dans le référentiel GitHub des ensembles de règles Appcat.
Q : Où puis-je trouver plus d’informations sur la création de règles personnalisées ?
Consultez le Guide du développement de règles pour plus d’informations sur l’outil Azure Migrate d’évaluation des applications et du code pour Java.
Q : Où puis-je obtenir de l’aide pour créer des règles personnalisées ?
Le meilleur moyen d’obtenir de l’aide consiste à signaler un problème sur le référentiel GitHub appcat-rulesets.