Applicazione e valutazione del codice di Azure Migrate per Java

Questa guida descrive come usare l'applicazione Azure Migrate e lo strumento di valutazione del codice per Java per valutare e riformare qualsiasi tipo di applicazione Java. Lo strumento consente di valutare l'idoneità delle applicazioni per la ripiattaforma e la migrazione ad Azure.

appcat è uno strumento da riga di comando di Azure Migrate per valutare i file binari dell'applicazione Java e il codice sorgente per identificare le opportunità di ripiattaformazione e migrazione per Azure. Consente di modernizzare e riformare applicazioni Java su larga scala identificando i casi d'uso e i modelli di codice comuni e proponendo le modifiche consigliate.

appcat individua l'utilizzo della tecnologia delle applicazioni tramite l'analisi statica del codice, supporta la stima del lavoro e accelera la ripiattaforma del codice, consentendo di spostare le applicazioni Java in Azure. Con un set di motori e regole, può individuare e valutare tecnologie diverse, ad esempio Java 11, Java 17, Jakarta edizione Enterprise 10, Quarkus, Spring e così via. Consente quindi di riformformare l'applicazione Java in destinazioni di Azure diverse (servizio app Azure, servizio Azure Kubernetes, app Azure Container e Azure Spring Apps) con regole di riplatforming di Azure specifiche.

appcat è open source ed è basato su WindUp, un progetto creato da Red Hat e pubblicato con la licenza pubblica eclipse.

Quando è consigliabile usare l'applicazione e la valutazione del codice di Azure Migrate?

appcat è progettato per aiutare le organizzazioni a modernizzare le proprie applicazioni Java in modo da ridurre i costi e consentire un'innovazione più rapida. Lo strumento usa tecniche di analisi avanzate per comprendere la struttura e le dipendenze di qualsiasi applicazione Java e fornisce indicazioni su come effettuare il refactoring e la migrazione delle applicazioni ad Azure.

Con appcatè possibile eseguire le attività seguenti:

  • Individuare l'utilizzo della tecnologia: vedere rapidamente quali tecnologie usano un'applicazione. L'individuazione è utile se si dispone di applicazioni legacy senza molta documentazione e si vuole sapere quali tecnologie usano.
  • Valutare il codice in una destinazione specifica: valutare un'applicazione per una destinazione di Azure specifica. Controllare lo sforzo e le modifiche da apportare per riformulare le applicazioni in Azure.

Destinazioni di Azure supportate

Lo strumento contiene regole che consentono di riformare le applicazioni in modo da poter distribuire e usare i servizi di Azure seguenti.

È possibile usare i servizi seguenti come destinazioni di distribuzione:

  • Servizio app di Azure
  • Azure Spring Apps
  • Servizio Azure Kubernetes
  • App contenitore di Azure
  • idoneità al cloud
  • individuazione
  • linux
  • openjdk11
  • openjdk17
  • openjdk21

È possibile usare i servizi seguenti come servizi delle risorse:

  • Database di Azure
  • Bus di servizio di Azure
  • Archiviazione di Azure
  • Rete CDN di Azure
  • Hub eventi di Azure
  • Azure Key Vault

Usare l'applicazione e la valutazione del codice di Azure Migrate per Java

Per usare appcat, è necessario scaricare il file ZIP descritto nella sezione successiva e avere un'installazione compatibile di JDK 11+ nel computer. appcat viene eseguito in Windows, Linux o Mac, entrambi per hardware Intel, Arm e Apple Silicon. È possibile usare Microsoft Build di OpenJDK per eseguire appcat.

Scarica

L'interfaccia della appcat riga di comando è disponibile per il download come file ZIP da aka.ms/appcat/azure-appcat-cli-latest.zip.

Eseguire appcat

Decomprimere il file ZIP in una cartella di propria scelta. Si ottiene quindi la struttura di directory seguente:

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: questa directory contiene la documentazione di appcat.
  • bin: questa directory contiene i file eseguibili dell'interfaccia della appcat riga di comando (per Windows/Linux/Mac).
  • esempi: questa directory contiene un'applicazione di esempio e diversi script da eseguire appcat nell'applicazione di esempio.

Per eseguire lo strumento, aprire una sessione del terminale e digitare il comando seguente dalla directory $APPCAT_HOME/bin :

./appcat --help

Per eseguire lo strumento da qualsiasi punto del computer, configurare la directory $APPCAT_HOME/bin nella PATH variabile di ambiente e quindi riavviare la sessione del terminale.

Documentazione

Le guide seguenti forniscono la documentazione principale per appcat Java:

Individuare l'utilizzo della tecnologia senza una destinazione di Azure

L'individuazione delle tecnologie è la prima fase della ripiattaforma e della modernizzazione dell'applicazione. Durante la fase di individuazione , appcat analizza l'applicazione e i relativi componenti per acquisire una comprensione completa della struttura, dell'architettura e delle dipendenze. Queste informazioni vengono usate per creare un inventario dettagliato dell'applicazione e dei relativi componenti (vedere la sezione Report di individuazione), che funge da base per ulteriori analisi e pianificazione.

Usare il comando seguente per avviare l'individuazione:

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

La fase di individuazione è utile quando non si ha una destinazione di Azure specifica. In caso contrario, appcat esegue l'individuazione in modo implicito per qualsiasi destinazione di Azure.

Valutare un'applicazione Java per una destinazione specifica

La fase di valutazione è la posizione in cui appcat analizza l'applicazione e i relativi componenti per determinare l'idoneità per il replatorming e per identificare eventuali potenziali sfide o limitazioni. Questa fase prevede l'analisi del codice dell'applicazione e la verifica della conformità con la destinazione di Azure o la destinazione OpenJDK selezionata.

Per controllare le destinazioni disponibili, eseguire il comando seguente:

./appcat --listTargetTechnologies

Questo comando genera un output simile all'esempio seguente:

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

È quindi possibile eseguire appcat usando una delle destinazioni di Azure disponibili, come illustrato nell'esempio seguente:

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

È possibile eseguire appcat usando una delle destinazioni OpenJDK disponibili, come illustrato nell'esempio seguente:

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

Ottenere risultati da appcat

Il risultato delle fasi di individuazione e valutazione è un report dettagliato che fornisce una roadmap per la ripiattaforma e la modernizzazione dell'applicazione Java, incluse le raccomandazioni per il servizio di Azure e l'approccio replatform. Il report funge da base per le fasi successive del processo di ripiattaformatura. Consente alle organizzazioni di apprendere il lavoro richiesto per tale trasformazione e di prendere decisioni su come modernizzare le applicazioni per ottenere i massimi vantaggi.

Il report generato da appcat fornisce una panoramica completa dell'applicazione e dei relativi componenti. È possibile usare questo report per ottenere informazioni dettagliate sulla struttura e sulle dipendenze dell'applicazione e per determinarne l'idoneità per la ripiattaforma e la modernizzazione.

Le sezioni seguenti forniscono altre informazioni sul report.

Riepilogo dell'analisi

La pagina di destinazione del report elenca tutte le tecnologie usate nell'applicazione. Il dashboard fornisce un riepilogo dell'analisi, tra cui il numero di eventi imprevisti di trasformazione, le categorie di eventi imprevisti o i punti della storia.

Screenshot del report di riepilogo appcat.

Quando si fa zoom avanti sul grafico a torta Eventi imprevisti per categoria , è possibile visualizzare il numero di eventi imprevisti per categoria: Obbligatorio, Facoltativo, Potenziale e Informazioni.

Il dashboard mostra anche i punti della storia. I punti della storia sono una metrica astratta comunemente usata nello sviluppo software Agile per stimare il livello di sforzo necessario per implementare una funzionalità o una modifica. appcat usa story points per esprimere il livello di impegno necessario per eseguire la migrazione di una particolare applicazione. I punti di storia non si traducono necessariamente in ore lavorative, ma il valore deve essere coerente tra le attività.

Screenshot del report di riepilogo degli eventi imprevisti di AppCAT.

Report di individuazione

Il report di individuazione è un report generato durante la fase di individuazione. Mostra l'elenco delle tecnologie usate dall'applicazione nella categoria Informazioni . Questo report informa solo la tecnologia che appcat ha scoperto.

Screenshot del report di individuazione appcat.

Report di valutazione

Il report di valutazione offre una panoramica dei problemi di trasformazione che sarebbe necessario risolvere per eseguire la migrazione dell'applicazione ad Azure.

Questi problemi, detti anche Eventi imprevisti, hanno una gravità (obbligatorio, facoltativo, potenziale o informazioni), un livello di sforzo e un numero che indica i punti della storia. I punti della storia sono determinati calcolando il numero di eventi imprevisti necessari per risolvere il problema.

Screenshot del report di valutazione appCAT.

Informazioni dettagliate per un problema specifico

Per ogni evento imprevisto, è possibile ottenere altre informazioni (dettagli del problema, il contenuto della regola e così via) semplicemente selezionandolo. Si ottiene anche l'elenco di tutti i file interessati da questo evento imprevisto.

Screenshot del report dettagli del problema di AppCAT.

Quindi, per ogni file o classe interessata dall'evento imprevisto, è possibile passare al codice sorgente per evidenziare la riga di codice che ha creato il problema.

Screenshot del report del codice del problema di AppCAT.

Regole personalizzate

È possibile pensare a appcat come motore di regole. Usa regole per estrarre file da archivi Java, decompila classi Java, analizza e classifica i tipi di file, analizza questi file e compila i report. In appcatle regole vengono definite sotto forma di set di regole. Un set di regole è una raccolta di singole regole che definiscono problemi o modelli specifici che appcat possono essere rilevati durante l'analisi.

Queste regole sono definite in XML e usano il modello di regola seguente:

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

appcat fornisce un set completo di regole di migrazione standard. Poiché le applicazioni possono contenere librerie o componenti personalizzati, appcat consente di scrivere regole personalizzate per identificare l'uso di componenti o software che il set di regole esistente potrebbe coprire.

Per scrivere una regola personalizzata, usare un linguaggio COMPLETO specifico del dominio (DLS) espresso in XML. Si supponga, ad esempio, di volere una regola che identifichi l'uso del driver JDBC PostgreSQL in un'applicazione Java e suggerisca invece l'uso del server flessibile di Azure PostgreSQL. È necessaria una regola per trovare il driver JDBC PostgreSQL definito in un file di pom.xml Maven o in un file Gradle, ad esempio la dipendenza illustrata nell'esempio seguente:

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

Per rilevare l'uso di questa dipendenza, la regola usa i tag XML seguenti:

  • ruleset: identificatore univoco del set di regole. Un set di regole è una raccolta di regole correlate a una tecnologia specifica.
  • targetTechnology: tecnologia di destinazione della regola. In questo caso, la regola è destinata a servizi app Azure, servizio Azure Kubernetes (servizio Azure Kubernetes), App Spring di Azure e App azure Container.
  • rule: elemento radice di una singola regola.
  • when: condizione che deve essere soddisfatta per l'attivazione della regola.
  • perform: azione da eseguire quando viene attivata la regola.
  • hint: il messaggio da visualizzare nel report, la relativa categoria (Informazioni, Facoltativo o Obbligatorio) e lo sforzo necessario per risolvere il problema, compreso tra 1 (facile) e 13 (difficile).

Il codice XML seguente mostra la definizione della regola personalizzata:

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

Dopo aver eseguito questa regola tramite appcat, eseguire di nuovo l'analisi per esaminare il report generato. Come per gli altri eventi imprevisti, il report di valutazione elenca i problemi identificati e i file interessati correlati a questa regola.

Screenshot dell'appcat con una regola da eseguire.

La guida completa per lo sviluppo di regole è disponibile in azure.github.io/appcat-docs/rules-development-guide.

Licenza

L'applicazione e la valutazione del codice di Azure Migrate per Java sono uno strumento open source gratuito senza costi e concesso in licenza con la stessa licenza del progetto WindUp upstream.

Domande frequenti

D: Dove è possibile scaricare la versione più recente dell'applicazione e della valutazione del codice di Azure Migrate per Java?

È possibile scaricare appcat da aka.ms/appcat/azure-appcat-cli-latest.zip.

D: Dove è possibile trovare altre informazioni sull'applicazione e la valutazione del codice di Azure Migrate per Java?

Quando si scarica appcat, si ottiene una directory docs con tutte le informazioni necessarie per iniziare.

D: Dove è possibile trovare le regole di Azure specifiche?

Tutte le regole di Azure sono disponibili nel repository GitHub appcat Rulesets.

D: Dove è possibile trovare altre informazioni sulla creazione di regole personalizzate?

Vedere la Guida allo sviluppo di regole per l'applicazione e la valutazione del codice di Azure Migrate per Java.

D: Dove è possibile ottenere assistenza durante la creazione di regole personalizzate?

Il modo migliore per ottenere assistenza consiste nel creare un problema nel repository GitHub appcat-rulesets.

Passaggi successivi