Azure Migrate-Anwendungs- und Codebewertung für Java

In diesem Leitfaden wird beschrieben, wie Sie das Azure Migrate-Tool zur Anwendungs- und Codebewertung für Java verwenden, um einen beliebigen Java-Anwendungstyp zu bewerten und auf eine neue Plattform zu verlagern. Mit dem Tool können Sie die Anwendungsbereitschaft für die Verlagerung auf eine neue Plattform und die Migration zu Azure bewerten.

appcat ist ein Befehlszeilentool von Azure Migrate, um Java-Anwendungsbinärdateien und Quellcode zu bewerten, um Replatforming- und Migrationsmöglichkeiten für Azure zu identifizieren. Es hilft Ihnen, große Java-Anwendungen zu modernisieren und auf eine neue Plattform zu verlagern, indem es häufige Anwendungsfälle und Codemuster identifiziert und empfohlene Änderungen vorschlägt.

appcat ermittelt die Nutzung der Anwendungstechnologie durch statische Codeanalyse, unterstützt die Leistungsschätzung und beschleunigt die Codeumformung und hilft Ihnen dabei, Java-Anwendungen nach Azure zu verschieben. Mit einer Reihe von Engines und Regeln kann es verschiedene Technologien wie Java 11, Java 17, Jakarta EE 10, Quarkus, Spring usw. entdecken und bewerten. Anschließend können Sie die Java-Anwendung auf verschiedene Azure-Ziele (Azure App Service, Azure Kubernetes Service, Azure Container Apps und Azure Spring Apps) mit bestimmten Azure-Replatforming-Regeln verlagern.

appcat ist Open Source und basiert auf WindUp, einem Projekt, das von Red Hat erstellt und unter der Eclipse Public License veröffentlicht wurde.

Wann sollte ich die Azure Migrate-Anwendungs- und Codebewertung verwenden?

appcat soll Organisationen dabei helfen, ihre Java-Anwendungen auf eine Weise zu modernisieren, die Kosten reduziert und schnellere Innovationen ermöglicht. Das Tool verwendet erweiterte Analysetechniken, um die Struktur und Abhängigkeiten jeder Java-Anwendung zu verstehen, und bietet Anleitungen zum Umgestalten und Migrieren der Anwendungen zu Azure.

Mit appcat können Sie die folgenden Aufgaben ausführen:

  • Ermitteln der Technologienutzung: Sehen Sie schnell, welche Technologien von einer Anwendung verwendet werden. Die Ermittlung ist nützlich, wenn Sie über ältere Anwendungen mit nicht viel Dokumentation verfügen und wissen möchten, welche Technologien sie verwenden.
  • Bewerten des Codes für ein bestimmtes Ziel: Bewerten Sie eine Anwendung für ein bestimmtes Azure-Ziel. Überprüfen Sie den Aufwand und die Änderungen, die Sie ausführen müssen, um Ihre Anwendungen zu Azure zu verlagern.

Unterstützte Azure-Ziele

Das Tool enthält Regeln zum Verlagern Ihrer Anwendungen auf eine neue Plattform, damit Sie die folgenden Azure-Dienste bereitstellen und verwenden können.

Sie können die folgenden Dienste als Bereitstellungsziele verwenden:

  • Azure App Service
  • Azure Spring Apps
  • Azure Kubernetes Service
  • Azure Container Apps
  • cloud-readiness
  • Ermittlung
  • linux
  • openjdk11
  • openjdk17
  • openjdk21

Sie können die folgenden Dienste als Ressourcendienste verwenden:

  • Azure-Datenbanken
  • Azure Service Bus
  • Azure Storage
  • Azure CDN
  • Azure Event Hubs
  • Azure Key Vault

Verwenden der Azure Migrate-Anwendungs- und Codebewertung für Java

Um appcat zu verwenden, müssen Sie die im nächsten Abschnitt beschriebene ZIP-Datei herunterladen und eine kompatible JDK 11+-Installation auf Ihrem Computer installieren. appcat läuft unter Windows, Linux oder Mac, sowohl mit Intel-, Arm- und Apple Silicon-Hardware. Sie können den Microsoft-Build von OpenJDK verwenden, um appcat auszuführen.

Download

Die appcat-CLI steht als ZIP-Datei zum Download von aka.ms/appcat/azure-appcat-cli-latest.zip zur Verfügung.

Ausführen von appcat

Entzippen Sie die ZIP-Datei in einen Ordner Ihrer Wahl. Sie erhalten dann die folgende Verzeichnisstruktur:

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: Dieses Verzeichnis enthält die Dokumentation von appcat.
  • bin: Dieses Verzeichnis enthält die ausführbaren appcat-CLI-Dateien (für Windows/Linux/Mac).
  • samples: Dieses Verzeichnis enthält eine Beispielanwendung und mehrere Skripts zum Ausführen von appcat für die Beispielanwendung.

Um das Tool auszuführen, öffnen Sie eine Terminalsitzung, und geben Sie den folgenden Befehl aus dem Verzeichnis $APPCAT_HOME/bin ein:

./appcat --help

Um das Tool von überall auf Ihrem Computer auszuführen, konfigurieren Sie das Verzeichnis $APPCAT_HOME/bin in Ihrer PATH-Umgebungsvariable, und starten Sie dann die Terminalsitzung neu.

Dokumentation

Die folgenden Leitfäden enthalten die Hauptdokumentation für appcat für Java:

Ermitteln der Technologienutzung ohne Azure-Ziel

Die Ermittlung von Technologien ist die erste Phase des Replatformings und der Modernisierung von Anwendungen. Während der Ermittlungsphase überprüft appcat die Anwendung und ihre Komponenten, um ein umfassendes Verständnis der Struktur, Architektur und Abhängigkeiten zu erhalten. Diese Informationen werden verwendet, um eine detaillierte Bestandsaufnahme der Anwendung und ihrer Komponenten zu erstellen (siehe den Abschnitt Ermittlungsbericht), die als Grundlage für weitere Analysen und Planung dient.

Verwenden Sie folgenden Befehl, um die Ermittlung zu starten:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target discovery

Die Ermittlungsphase ist nützlich, wenn Sie kein bestimmtes Azure-Ziel im Blick haben. Andernfalls führt appcat die Ermittlung für jedes Azure-Ziel implizit aus.

Bewerten einer Java-Anwendung für ein bestimmtes Ziel

In der Bewertungsphase analysiert appcat die Anwendung und ihre Komponenten, um die Eignung für das Verlagern auf einen neue Plattform zu bestimmen und potenzielle Herausforderungen oder Einschränkungen zu identifizieren. In dieser Phase wird der Anwendungscode analysiert und die Einhaltung des ausgewählten Azure-Ziels oder des OpenJDK-Ziels überprüft.

Führen Sie den folgenden Befehl aus, um die verfügbaren Ziele zu überprüfen:

./appcat --listTargetTechnologies

Dieser Befehl erzeugt eine Ausgabe ähnlich wie im folgenden Beispiel:

Available target technologies:
    azure-aks
    azure-appservice
    azure-container-apps
    azure-spring-apps
    cloud-readiness
    discovery
    linux
    openjdk11
    openjdk17
    openjdk21

Anschließend können Sie appcat mit einem der verfügbaren Azure-Ziele ausführen, wie im folgenden Beispiel gezeigt:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target azure-appservice

Sie können appcat mit einem der verfügbaren OpenJDK-Ziele ausführen, wie im folgenden Beispiel gezeigt:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target openjdk11

Abrufen von Ergebnissen aus appcat

Das Ergebnis der Ermittlungs- und Bewertungsphasen ist ein detaillierter Bericht, der eine Roadmap für das Replatforming und die Modernisierung der Java-Anwendung bereitstellt, einschließlich Empfehlungen für den Azure-Dienst und den Replatform-Ansatz. Der Bericht dient als Grundlage für die nächsten Phasen des Replatforming-Prozesses. Er hilft Organisationen dabei, sich über die für eine solche Transformation erforderlichen Anstrengungen zu informieren und Entscheidungen darüber zu treffen, wie sie ihre Anwendungen für maximale Vorteile modernisieren.

Der von appcat generierte Bericht bietet einen umfassenden Überblick über die Anwendung und deren Komponenten. Sie können diesen Bericht verwenden, um Einblicke in die Struktur und Abhängigkeiten der Anwendung zu erhalten und die Eignung für das Replatforming und die Modernisierung zu bestimmen.

Die folgenden Abschnitte enthalten weitere Informationen zum Bericht.

Zusammenfassung der Analyse

Auf der Startseite des Berichts werden alle Technologien aufgelistet, die in der Anwendung verwendet werden. Das Dashboard bietet eine Zusammenfassung der Analyse, einschließlich der Anzahl der Transformationsvorfälle, der Vorfallkategorien oder der Story Points.

Screenshot des appcat-Zusammenfassungsberichts.

Wenn Sie das Kreisdiagramm Vorfälle nach Kategorie vergrößern, können Sie die Anzahl der Vorfälle nach Kategorie anzeigen: Obligatorisch, Optional, Potenziell und Informationen.

Das Dashboard zeigt auch die Story Points. Die Story Points sind eine abstrakte Metrik, die häufig in der Agile-Softwareentwicklung verwendet wird, um den Aufwand zu schätzen, der erforderlich ist, um ein Feature oder eine Änderung zu implementieren. appcat verwendet Story Points, um den Aufwand für die Migration einer bestimmten Anwendung auszudrücken. Story Points werden nicht unbedingt in Arbeitszeiten übersetzt, aber der Wert sollte für alle Aufgaben konsistent sein.

Screenshot des zusammenfassenden AppCAT-Vorfallberichts.

Ermittlungsbericht

Der Ermittlungsbericht ist ein Bericht, der während der Ermittlungsphase generiert wird. Er zeigt die Liste der von der Anwendung verwendeten Technologien in der Kategorie Informationen. Dieser Bericht informiert Sie lediglich über die Technologie, die appcat entdeckt hat.

Screenshot des appcat-Ermittlungsberichts.

Bewertungsbericht

Der Bewertungsbericht gibt einen Überblick über die Transformationsprobleme, die gelöst werden müssen, um die Anwendung zu Azure zu migrieren.

Diese Probleme, auch als Vorfälle bezeichnet, weisen einen Schweregrad auf (Obligatorisch, Optional, Potenziell oder Informationen), einen Aufwand und eine Zahl, die die Story Points angibt. Die Story Points werden ermittelt, indem die Anzahl der Vorfälle mit dem Aufwand für die Behebung des Problems multipliziert werden.

Screenshot des AppCAT-Bewertungsberichts.

Detaillierte Informationen zu einem bestimmten Problem

Für jeden Vorfall können Sie weitere Informationen (Problemdetails, den Inhalt der Regel usw.) abrufen, indem Sie ihn auswählen. Außerdem erhalten Sie die Liste aller Dateien, die von diesem Vorfall betroffen sind.

Screenshot des AppCAT-Problemdetailsberichts.

Anschließend können Sie für jede Datei oder Klasse, die vom Vorfall betroffen ist, in den Quellcode springen, um die Codezeile hervorzuheben, die das Problem erzeugt hat.

Screenshot des AppCAT-Problemcodeberichts.

Benutzerdefinierte Regeln

Sie können sich appcat als Regelmodul vorstellen. Es verwendet Regeln, um Dateien aus Java-Archiven zu extrahieren, Java-Klassen zu dekompilieren, Dateitypen zu scannen und zu klassifizieren, diese Dateien zu analysieren und die Berichte zu erstellen. In appcat werden die Regeln in Form eines Regelsatzes definiert. Ein Regelsatz ist eine Sammlung einzelner Regeln, die bestimmte Probleme oder Muster definieren, die appcat während der Analyse erkennen kann.

Diese Regeln werden in XML definiert und verwenden das folgende Regelmuster:

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

appcat bietet einen umfassenden Satz von Standardmigrationsregeln. Da Anwendungen möglicherweise benutzerdefinierte Bibliotheken oder Komponenten enthalten, können Sie mit appcat eigene Regeln schreiben, um die Verwendung von Komponenten oder Software zu identifizieren, die das vorhandene Regelset möglicherweise abdecken kann.

Zum Schreiben einer benutzerdefinierten Regel verwenden Sie eine domänenspezifische Sprache (DLS), die in XML ausgedrückt wird. Nehmen wir beispielsweise an, Sie möchten eine Regel, die die Verwendung des PostgreSQL JDBC-Treibers in einer Java-Anwendung identifiziert und stattdessen die Verwendung von Azure PostgreSQL – Flexibler Server vorschlägt. Sie benötigen eine Regel, um den in einer Maven pom.xml Datei oder einer Gradle-Datei definierten PostgreSQL JDBC-Treibers zu finden, z. B. die im folgenden Beispiel gezeigte Abhängigkeit:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

Um die Verwendung dieser Abhängigkeit zu erkennen, verwendet die Regel die folgenden XML-Tags:

  • ruleset: Der eindeutige Bezeichner des Regelsatzes. Ein Regelsatz ist eine Sammlung von Regeln, die mit einer bestimmten Technologie zusammenhängen.
  • targetTechnology: Die Technologie, auf die die Regel ausgerichtet ist. In diesem Fall ist die Regel auf Azure App Services, Azure Kubernetes Service (AKS), Azure Spring Apps und Azure Container Apps ausgerichtet.
  • rule: Das Stammelement einer einzelnen Regel.
  • when: Die Bedingung, die erfüllt werden muss, damit die Regel ausgelöst wird.
  • perform: Die auszuführende Aktion, wenn die Regel ausgelöst wird.
  • hint: Die Nachricht, die im Bericht angezeigt werden soll, deren Kategorie (Informationen, Optional oder Obligatorisch) und der Aufwand, der zum Beheben des Problems erforderlich ist, von 1 (einfach) bis 13 (schwierig).

Der folgende XML-Code zeigt die benutzerdefinierte Regeldefinition:

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

Nachdem Sie diese Regel über appcat ausgeführt haben, führen Sie die Analyse erneut aus, um den generierten Bericht zu überprüfen. Wie bei anderen Vorfällen listet der Bewertungsbericht die identifizierten Probleme und betroffenen Dateien im Zusammenhang mit dieser Regel auf.

Screenshot von appcat mit einer Regel, die ausgeführt wird.

Das vollständige Handbuch für die Regelentwicklung ist unter azure.github.io/appcat-docs/rules-development-guide verfügbar.

Lizenz

Azure Migrate-Anwendungs- und Codebewertung für Java ist ein kostenloses Open-Source-Tool und unter der gleichen Lizenz wie das Upstream-WindUp-Projekt lizenziert.

Häufig gestellte Fragen

F: Wo kann ich die neueste Version der Azure Migrate-Anwendungs- und Codebewertung für Java herunterladen?

Sie können appcat von aka.ms/appcat/azure-appcat-cli-latest.zip herunterladen.

F: Wo kann ich weitere Informationen zur Azure Migrate-Anwendungs- und Codebewertung für Java finden?

Wenn Sie appcat herunterladen, erhalten Sie ein docs-Verzeichnis mit allen Informationen, die Sie für die ersten Schritte benötigen.

F: Wo finde ich die spezifischen Azure-Regeln?

Alle Azure-Regeln sind im GitHub-Repository appcat-Regelsätze verfügbar.

F: Wo finde ich weitere Informationen zum Erstellen benutzerdefinierter Regeln?

Lesen Sie den Leitfaden zur Regelentwicklung für die Azure Migrate-Anwendung und Codebewertung für Java.

F: Wo erhalte ich Hilfe beim Erstellen von benutzerdefinierten Regeln?

Die beste Möglichkeit, Hilfe zu erhalten, besteht darin, ein Problem im GitHub-Repository „appcat-rulesets“ zu erstellen.

Nächste Schritte