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.

Capture d’écran du rapport sous forme de résumé appcat.

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.

Capture d’écran du rapport d’incident dans le résumé AppCAT.

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.

Capture d’écran du rapport de découverte 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.

Capture d’écran du rapport d’évaluation AppCAT.

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.

Capture d’écran du rapport des détails d’un problème AppCAT.

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.

Capture d’écran du rapport des problèmes de code AppCAT.

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.

Capture d’écran de l’outil appcat avec une règle en cours d’exécution.

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.

Étapes suivantes