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. Dieses Tool wird als CLI (Befehlszeilenschnittstelle) angeboten und bewertet Java-Anwendungs-Binärdateien und -Quellcode, 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.
Das Tool ermittelt durch eine statische Codeanalyse die Nutzung der Anwendungstechnologie, es bietet eine Schätzung des Aufwands und beschleunigt die Verlagerung des Codes auf eine neue Plattform. Zudem unterstützt es Sie dabei, Java-Anwendungen zu priorisieren und diese in Azure zu verschieben. Mit einer Reihe von Engines und Regeln kann es verschiedene Technologien wie Java 11, Java 17, Jakarta EE, Spring, Hibernate und Java Message Service (JMS) ermitteln und bewerten. Anschließend können Sie die Java-Anwendung auf verschiedene Azure-Ziele (Azure App Service, Azure Kubernetes Service und Azure Container Apps) mit bestimmten Azure-Replatforming-Regeln verlagern.
Hierbei handelt es sich um ein Open-Source-Tool, das auf WindUp basiert, einem Projekt, das von Red Hat erstellt und unter der Eclipse Public License veröffentlicht wurde.
Übersicht
Das Tool soll Organisationen dabei unterstützen, ihre Java-Anwendungen so zu modernisieren, dass dabei die Kosten gesenkt und schnellere Innovationen ermöglicht werden. 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 dem Tool 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 vornehmen müssen, um Ihre Anwendungen zu Azure zu verlagern.
Unterstützte Ziele
Das Tool enthält Regeln, mit denen Sie Ihre Anwendungen auf eine neue Plattform verlagern können, damit Sie verschiedene Azure-Dienste bereitstellen und verwenden können.
Die Regeln, die durch die Anwendungs- und Codebewertung von Azure Migrate verwendeten werden, sind auf der Grundlage eines Ziels gruppiert. Ein Ziel beschreibt, wo oder wie die Anwendung ausgeführt wird, und enthält allgemeine Anforderungen und Erwartungen. Beim Bewerten einer Anwendung können Sie mehrere Ziele auswählen. In der folgenden Tabelle werden die verfügbaren Ziele beschrieben:
Target | Beschreibung | Kennung |
---|---|---|
Azure App Service | Best Practices für die Bereitstellung einer App in Azure App Service | azure-appservice |
Azure Kubernetes Service | Best Practices für die Bereitstellung einer App in Azure Kubernetes Service | azure-aks |
Azure Container Apps | Best Practices für die Bereitstellung einer App in Azure Container Apps | azure-container-apps |
Cloudbereitschaft | Allgemeine Best Practices zum Vorbereiten einer Anwendung für Cloud (Azure) | cloud-readiness |
Ermittlung | Identifiziert die Nutzung von Technologie wie Bibliotheken und Frameworks | discovery |
Linux | Allgemeine Best Practices zum Vorbereiten einer Anwendung für Linux | linux |
OpenJDK 11 | Allgemeine Best Practices zum Ausführen einer Java 8-Anwendung mit Java 11 | openjdk11 |
OpenJDK 17 | Allgemeine Best Practices zum Ausführen einer Java 11-Anwendung mit Java 17 | openjdk17 |
OpenJDK 21 | Allgemeine Best Practices zum Ausführen einer Java 17-Anwendung mit Java 21 | openjdk21 |
Bei der Bewertung von Cloudbereitschaft und der zugehörigen Azure-Dienste kann das Tool außerdem nützliche Informationen für die potenzielle Nutzung verschiedener Azure-Dienste melden. In der folgenden Liste werden einige der behandelten Dienste aufgeführt:
- Azure-Datenbanken
- Azure Service Bus
- Azure Storage
- Übersicht über das Azure Content Delivery Network (CDN)
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Download
Um die appcat
-CLI zu verwenden, müssen Sie die im nächsten Abschnitt beschriebene ZIP-Datei herunterladen und auf Ihrem Computer über eine kompatible Installation von JDK 11 oder JDK 17 verfügen. Die appcat
-CLI wird auf jeder Java-kompatiblen Umgebung wie Windows, Linux oder Mac mit Intel-, ARM- und Apple Silicon-Hardware ausgeführt. Es wird empfohlen, den Microsoft-Build von OpenJDK zu verwenden.
Herunterladen der Azure Migrate-Anwendungs- und Codebewertung für Java 6.3.0.9. Aktualisiert am: 06.08.2024.
Weitere Informationen finden Sie im Abschnitt Versionshinweise.
Bekannte Probleme
Bestimmte Regeln werden möglicherweise nicht ausgelöst, wenn bestimmte Lambda-Ausdrücke analysiert werden. Weitere Informationen finden Sie unter GitHub-Problem.
Die Ausführung von appcat
in einer Nicht-Unicode-Umgebung mit komplexen Doppelbytezeichen führt zu Datenbeschädigung. Problemumgehungen finden Sie unter GitHub-Problem.
Vorgängerversionen
Die folgenden vorherigen Versionen stehen auch zum Download zur Verfügung:
- Azure Migrate-Anwendungs- und Codebewertung für Java 6.3.0.8. Veröffentlicht im März 2024.
- Azure Migrate-Anwendungs- und Codebewertung für Java 6.3.0.7. Veröffentlicht im November 2023.
Erste Schritte
Stellen Sie zum Ausführen von appcat
sicher, dass Sie ein unterstütztes JDK installiert haben. Das Tool unterstützt die folgenden JDKs:
- Microsoft-Build des OpenJDK 11
- Microsoft-Build des OpenJDK 17
- Eclipse Temurin™ JDK 11
- Eclipse Temurin™ JDK 17
Nachdem Sie ein gültiges JDK installiert haben, stellen Sie sicher, dass das Installationsverzeichnis in der Umgebungsvariable JAVA_HOME
ordnungsgemäß konfiguriert ist.
Um den Vorgang fortzusetzen, laden Sie das Paket herunter, und entpacken Sie es 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 Nutzung von Technologie und der Cloudbereitschaft ohne einen Azure-Dienst
Die Ermittlung von Zielen für Technologien und Cloudbereitschaft bietet umfassende Einblicke in die Verlagerung einer Anwendung auf eine neue Plattform und die Modernisierung der Cloud. Das Tool überprüft die Anwendung und ihre Komponenten, um ein umfassendes Verständnis ihrer Struktur und Architektur sowie ihrer Abhängigkeiten zu erhalten. Außerdem erkennt es potenzielle Probleme, die sich in einer Cloudumgebung als Herausforderung erweisen könnten. Das discovery
-Ziel wird insbesondere dazu verwendet, eine detaillierte Bestandsaufnahme der Anwendung und der zugehörigen Komponenten zu erstellen. Diese Bestandsaufnahme dient als Grundlage für weitere Analysen und weitere Planung. Weitere Informationen finden Sie im Abschnitt Ermittlungsbericht.
Verwenden Sie den folgenden Befehl, um die Ermittlung und Cloudbereitschaft zu initiieren:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Diese Berichtsart ist hilfreich, wenn Sie Ihre Anwendung ohne einen bestimmten Azure-Dienst bereitstellen.
Das Tool führt unabhängig davon, ob Sie den Wert in den --target
-Parameter einschließen, stets discovery
aus.
Bewerten einer Java-Anwendung
In der Bewertungsphase analysiert die appcat
-CLI die Anwendung und ihre Komponenten, um ihre 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 der ausgewählten Ziele überprüft.
Sie können mehrere Ziele auswählen, indem Sie eine durch Leerzeichen getrennte Liste von Werten mit dem --target
-Argument verwenden.
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
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Anschließend können Sie appcat
mit einem Ziel oder einer Kombination aus den verfügbaren Zielen wie im folgenden Beispiel ausführen:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
Sie können appcat
ebenfalls mit einem der verfügbaren OpenJDK-Ziele wie im folgenden Beispiel ausführen:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
Für OpenJDK-Ziele (Java) wird empfohlen, jeweils lediglich ein Ziel auszuwählen.
Empfehlung von Zielen für die Azure-Bewertung
Beim Bewerten einer Anwendung für die Azure-Bereitstellung wird empfohlen, mit den folgenden Zielen zu beginnen:
discovery
cloud-readiness
Geben Sie außerdem einen Azure-Dienst wie azure-appservice
oder azure-container-apps
für die Bereitstellung an.
Wenn Sie eine Anwendung aus einer Windows-Umgebung in eine Linux-VM oder einen Container verschieben möchten, wird empfohlen, zudem das linux
-Ziel hinzuzufügen.
Wenn Sie eine Anwendung von einer älteren JDK-Version auf eine neuere Version verschieben möchten, wird empfohlen, die nächste Hauptversion zu wählen, die auf die vorherige durch die Anwendung verwendete Version folgt. Verwenden Sie beispielsweise openjdk11
, wenn Ihre Anwendung derzeit mit Java 8 bereitgestellt wird.
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.
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.
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 Nutzung der Technologie, die von appcat
ermittelt wurde.
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.
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.
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.
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) 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"/>
</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.
Das vollständige Handbuch für die Regelentwicklung ist unter azure.github.io/appcat-docs/rules-development-guide verfügbar.
Versionshinweise
6.3.0.9
Dieses Release enthält die folgenden Korrekturen und eine Reihe neuer Regeln. Weitere Informationen finden Sie unten.
- Ein Problem mit der
localhost-java-00001
-Regel wurde behoben. - Es wurden neue Regeln zur Identifizierung von Technologien wie AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata und Alibaba Rocket MQ eingeführt.
azure-file-system-02000
wurde aktualisiert, um jetzt XML-Dateierweiterungen zu unterstützen.- Es wurde ein Upgrade verschiedener Bibliotheken durchgeführt, um Sicherheitsrisiken zu beheben.
6.3.0.8
Bislang wurde standardmäßig eine Reihe von Zielen aktiviert. Dadurch gestaltet sich das Bewerten großer Anwendungen mit zu vielen Incidents im Zusammenhang mit weniger kritischen Problemen für bestimmte Kunden als schwierig. Um Rauschen in Berichten zu verringern, müssen Benutzer beim Ausführen von appcat
jetzt mehrere Ziele mit dem --target
-Parameter angeben, wodurch sie lediglich die gewünschten Ziele auswählen können.
6.3.0.7
Allgemein verfügbares Release der Anwendungs- und Codebewertung von Azure Migrate.
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.