Bagikan melalui


Penilaian aplikasi dan kode Azure Migrate untuk Java

Catatan

Kami telah merilis versi baru aplikasi Azure Migrate dan penilaian kode untuk Java, versi 7.x di bawah pratinjau, berdasarkan mesin penganalisis baru. Untuk mengunduh dan bereksperimen dengan mesin baru, tersedia untuk Windows, Linux, dan macOS, lihat Penilaian aplikasi dan kode Azure Migrate untuk Java versi 7

Panduan ini menjelaskan cara menggunakan aplikasi Azure Migrate dan alat penilaian kode untuk Java untuk menilai dan mereplatformasi semua jenis aplikasi Java. Alat ini memungkinkan Anda mengevaluasi kesiapan aplikasi untuk mereplatformasi dan migrasi ke Azure. Alat ini ditawarkan sebagai CLI (antarmuka baris perintah) dan menilai biner aplikasi Java dan kode sumber untuk mengidentifikasi peluang replatforming dan migrasi untuk Azure. Ini membantu Anda memodernisasi dan mereplatformasi aplikasi Java skala besar dengan mengidentifikasi kasus penggunaan umum dan pola kode dan mengusulkan perubahan yang direkomendasikan.

Alat ini menemukan penggunaan teknologi aplikasi melalui analisis kode statis, memberikan estimasi upaya, dan mempercepat replatforming kode, membantu Anda memprioritaskan dan memindahkan aplikasi Java ke Azure. Dengan seperangkat mesin dan aturan, ia dapat menemukan dan menilai berbagai teknologi seperti Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS), dan banyak lagi. Kemudian membantu Anda mereplatformasi aplikasi Java ke target Azure yang berbeda (Azure App Service, Azure Kubernetes Service, dan Azure Container Apps) dengan aturan replatformasi Azure tertentu.

Alat ini sumber terbuka dan didasarkan pada WindUp, proyek yang dibuat oleh Red Hat dan diterbitkan di bawah Lisensi Publik Eclipse.

Gambaran Umum

Alat ini dirancang untuk membantu organisasi memodernisasi aplikasi Java mereka dengan cara yang mengurangi biaya dan memungkinkan inovasi yang lebih cepat. Alat ini menggunakan teknik analisis tingkat lanjut untuk memahami struktur dan dependensi aplikasi Java apa pun, dan memberikan panduan tentang cara merefaktor dan memigrasikan aplikasi ke Azure.

Dengan itu, Anda dapat melakukan tugas-tugas berikut:

  • Temukan penggunaan teknologi: Lihat teknologi mana yang digunakan aplikasi dengan cepat. Penemuan berguna jika Anda memiliki aplikasi warisan dengan dokumentasi yang tidak banyak dan ingin mengetahui teknologi mana yang mereka gunakan.
  • Menilai kode ke target tertentu: Menilai aplikasi untuk target Azure tertentu. Periksa upaya dan modifikasi yang harus Anda lakukan untuk mereplatformasi aplikasi Anda ke Azure.

Target yang didukung

Alat ini berisi aturan untuk membantu Anda mereplatformasi aplikasi sehingga Anda dapat menyebarkan, dan menggunakan layanan Azure yang berbeda.

Aturan yang digunakan oleh aplikasi Azure Migrate dan penilaian kode dikelompokkan berdasarkan target. Target adalah tempat atau bagaimana aplikasi berjalan, dan kebutuhan dan harapan umum. Saat menilai aplikasi, Anda dapat memilih beberapa target. Tabel berikut ini menjelaskan target yang tersedia:

Target Deskripsi ID
Azure App Service Praktik terbaik untuk menyebarkan aplikasi ke Azure App Service. azure-appservice
Azure Kubernetes Service Praktik terbaik untuk menyebarkan aplikasi ke Azure Kubernetes Service. azure-aks
Azure Container Apps Praktik terbaik untuk menyebarkan aplikasi ke Azure Container Apps. azure-container-apps
Kesiapan Cloud Praktik terbaik umum untuk membuat aplikasi Cloud (Azure) siap. cloud-readiness
Penemuan Mengidentifikasi penggunaan teknologi seperti pustaka dan kerangka kerja. discovery
Linux Praktik terbaik umum untuk membuat aplikasi linux siap. linux
OpenJDK 11 Praktik terbaik umum untuk menjalankan aplikasi Java 8 dengan Java 11. openjdk11
OpenJDK 17 Praktik terbaik umum untuk menjalankan aplikasi Java 11 dengan Java 17. openjdk17
OpenJDK 21 Praktik terbaik umum untuk menjalankan aplikasi Java 17 dengan Java 21. openjdk21

Saat alat menilai kesiapan Cloud dan layanan Azure terkait, alat ini juga dapat melaporkan informasi yang berguna untuk potensi penggunaan layanan Azure yang berbeda. Daftar berikut ini memperlihatkan beberapa layanan yang tercakup:

  • Azure Databases
  • Azure Service Bus
  • Azure Storage
  • Jaringan Pengiriman Konten Azure
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Unduh

Untuk menggunakan appcat CLI, Anda harus mengunduh file ZIP yang dijelaskan di bagian berikutnya, dan memiliki penginstalan JDK 11 atau JDK 17 yang kompatibel di komputer Anda. appcat CLI berjalan pada lingkungan apa pun yang kompatibel dengan Java seperti Windows, Linux, atau Mac, baik untuk perangkat keras Intel, Arm, dan Apple Silicon. Kami sarankan Anda menggunakan Microsoft Build of OpenJDK.

Untuk informasi selengkapnya, lihat bagian Catatan rilis .

Masalah umum

Aturan tertentu mungkin tidak dipicu saat mengurai ekspresi Lambda tertentu. Untuk informasi selengkapnya, lihat masalah GitHub.

Berjalan appcat di lingkungan non-unicode dengan karakter byte ganda yang kompleks akan menyebabkan kerusakan. Untuk solusinya, lihat masalah GitHub.

Rilis sebelumnya

Rilis sebelumnya berikut ini juga tersedia untuk diunduh:

Memulai

Untuk menjalankan appcat, pastikan Anda telah menginstal JDK yang didukung. Alat ini mendukung JDK berikut:

  • Microsoft Build of OpenJDK 11
  • Microsoft Build of OpenJDK 17
  • Eclipse Temurin™ JDK 11
  • Eclipse Temurin™ JDK 17

Setelah Anda menginstal JDK yang valid, pastikan direktori penginstalannya dikonfigurasi dengan benar dalam JAVA_HOME variabel lingkungan.

Untuk melanjutkan, unduh dan unzip paket dalam folder pilihan Anda. Anda kemudian mendapatkan struktur direktori berikut:

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
  • dokumen: Direktori ini berisi dokumentasi appcat.
  • bin: Direktori ini berisi appcat executable CLI (untuk Windows/Linux/Mac).
  • sampel: Direktori ini berisi aplikasi sampel dan beberapa skrip untuk dijalankan appcat terhadap aplikasi sampel.

Untuk menjalankan alat, buka sesi terminal dan ketik perintah berikut dari direktori $APPCAT_HOME/bin :

./appcat --help

Untuk menjalankan alat dari mana saja di komputer Anda, konfigurasikan direktori $APPCAT_HOME/bin ke variabel lingkungan Anda PATH lalu mulai ulang sesi terminal Anda.

Dokumentasi

Panduan berikut menyediakan dokumentasi utama untuk appcat Java:

Menemukan penggunaan teknologi dan Kesiapan cloud tanpa mengingat layanan Azure

Penemuan teknologi dan target kesiapan Cloud memberikan wawasan besar tentang replatform aplikasi dan modernisasi ke Cloud. Alat ini memindai aplikasi dan komponennya untuk mendapatkan pemahaman komprehensif tentang struktur, arsitektur, dan dependensinya. Ini juga menemukan potensi masalah yang mungkin menantang di lingkungan Cloud. discovery Target khususnya digunakan untuk membuat inventaris terperinci aplikasi dan komponennya. Persediaan ini berfungsi sebagai dasar untuk analisis dan perencanaan lebih lanjut. Untuk informasi selengkapnya, lihat bagian Laporan penemuan.

Gunakan perintah berikut untuk memulai penemuan dan kesiapan cloud:

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

Jenis laporan ini berguna saat Anda tidak memiliki layanan Azure tertentu untuk menyebarkan aplikasi Anda.

Alat ini selalu melakukan discovery apakah Anda menyertakan nilai tersebut --target dalam parameter atau tidak.

Menilai aplikasi Java

Fase penilaian adalah tempat appcat CLI menganalisis aplikasi dan komponennya untuk menentukan kesesuaiannya untuk replatorming dan untuk mengidentifikasi potensi tantangan atau batasan. Fase ini melibatkan analisis kode aplikasi dan memeriksa kepatuhannya dengan target yang dipilih.

Anda dapat memilih beberapa target dengan menggunakan daftar nilai yang dibatasi spasi dengan --target argumen .

Untuk memeriksa target yang tersedia, jalankan perintah berikut:

./appcat --listTargetTechnologies

Perintah ini menghasilkan output yang mirip dengan contoh berikut:

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

Kemudian, Anda dapat menjalankan appcat menggunakan satu atau kombinasi target yang tersedia, seperti yang ditunjukkan dalam contoh berikut:

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

Anda juga dapat menjalankan appcat dengan salah satu target OpenJDK yang tersedia, seperti yang ditunjukkan dalam contoh berikut:

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

Untuk target OpenJDK (Java), kami sarankan Anda hanya memilih satu per satu.

Rekomendasi target untuk penilaian Azure

Setiap kali Anda menilai aplikasi untuk penyebaran Azure, kami sarankan Anda memulai dengan target berikut:

  • discovery
  • cloud-readiness

Selain itu, tentukan layanan Azure untuk penyebaran, seperti azure-appservice atau azure-container-apps.

Jika Anda berniat memindahkan aplikasi dari lingkungan Windows ke VM atau kontainer Linux, kami sarankan linux Anda juga menambahkan target.

Jika Anda ingin memindahkan aplikasi dari versi JDK yang lebih lama ke versi yang lebih baru, kami sarankan Anda memilih versi utama berikutnya dibandingkan dengan versi sebelumnya yang digunakan oleh aplikasi. Misalnya, gunakan openjdk11 saat aplikasi Anda saat ini disebarkan dengan Java 8.

Mendapatkan hasil dari appcat

Hasil dari fase penemuan dan penilaian adalah laporan terperinci yang menyediakan peta jalan untuk replatforming dan modernisasi aplikasi Java, termasuk rekomendasi untuk layanan Azure dan pendekatan replatform. Laporan ini berfungsi sebagai fondasi untuk tahap berikutnya dari proses replatforming. Ini membantu organisasi mempelajari tentang upaya yang diperlukan untuk transformasi tersebut, dan membuat keputusan tentang cara memodernisasi aplikasi mereka untuk manfaat maksimum.

Laporan yang dihasilkan oleh appcat memberikan gambaran umum komprehensif tentang aplikasi dan komponennya. Anda dapat menggunakan laporan ini untuk mendapatkan wawasan tentang struktur dan dependensi aplikasi, dan untuk menentukan kesesuaiannya untuk replatform dan modernisasi.

Bagian berikut ini menyediakan informasi selengkapnya tentang laporan.

Ringkasan analisis

Halaman arahan laporan mencantumkan semua teknologi yang digunakan dalam aplikasi. Dasbor menyediakan ringkasan analisis, termasuk jumlah insiden transformasi, kategori insiden, atau poin cerita.

Cuplikan layar laporan ringkasan appcat.

Saat Anda memperbesar pada bagan pai Insiden menurut Kategori, Anda dapat melihat jumlah insiden menurut kategori: Wajib, Opsional, Potensi, dan Informasi.

Dasbor juga menunjukkan titik cerita. Poin cerita adalah metrik abstrak yang umum digunakan dalam pengembangan perangkat lunak Agile untuk memperkirakan tingkat upaya yang diperlukan untuk mengimplementasikan fitur atau perubahan. appcat menggunakan titik cerita untuk mengekspresikan tingkat upaya yang diperlukan untuk memigrasikan aplikasi tertentu. Poin cerita tidak selalu diterjemahkan ke jam kerja, tetapi nilainya harus konsisten di seluruh tugas.

Cuplikan layar laporan insiden ringkasan AppCAT.

Laporan penemuan

Laporan penemuan adalah laporan yang dihasilkan selama Fase Penemuan. Ini menunjukkan daftar teknologi yang digunakan oleh aplikasi dalam kategori Informasi . Laporan ini hanya memberi tahu Anda tentang penggunaan teknologi yang appcat ditemukan.

Cuplikan layar laporan penemuan appcat.

Laporan penilaian

Laporan penilaian memberikan gambaran umum tentang masalah transformasi yang perlu diselesaikan untuk memigrasikan aplikasi ke Azure.

Masalah-masalah ini, juga disebut Insiden, memiliki tingkat keparahan (Wajib, Opsional, Potensi, atau Informasi), tingkat upaya, dan angka yang menunjukkan titik cerita. Poin cerita ditentukan dengan menghitung jumlah insiden kali upaya yang diperlukan untuk mengatasi masalah.

Cuplikan layar laporan penilaian AppCAT.

Informasi terperinci untuk masalah tertentu

Untuk setiap insiden, Anda bisa mendapatkan informasi lebih lanjut (detail masalah, konten aturan, dan sebagainya) hanya dengan memilihnya. Anda juga mendapatkan daftar semua file yang terpengaruh oleh insiden ini.

Cuplikan layar laporan detail masalah AppCAT.

Kemudian, untuk setiap file atau kelas yang terpengaruh oleh insiden, Anda dapat melompat ke kode sumber untuk menyoroti baris kode yang membuat masalah.

Cuplikan layar laporan kode masalah AppCAT.

Aturan kustom

Anda dapat menganggap appcat sebagai mesin aturan. Ini menggunakan aturan untuk mengekstrak file dari arsip Java, mendekompilasi kelas Java, memindai dan mengklasifikasikan jenis file, menganalisis file-file ini, dan membangun laporan. Dalam appcat, aturan didefinisikan dalam bentuk set aturan. Sekumpulan aturan adalah kumpulan aturan individual yang menentukan masalah atau pola tertentu yang appcat dapat dideteksi selama analisis.

Aturan ini ditentukan dalam XML dan menggunakan pola aturan berikut:

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

appcat menyediakan serangkaian aturan migrasi standar yang komprehensif. Karena aplikasi mungkin berisi pustaka atau komponen kustom, appcat memungkinkan Anda menulis aturan Anda sendiri untuk mengidentifikasi penggunaan komponen atau perangkat lunak yang mungkin dibahas oleh set aturan yang ada.

Untuk menulis aturan kustom, Anda menggunakan bahasa khusus domain (DLS) kaya yang dinyatakan dalam XML. Misalnya, Anda menginginkan aturan yang mengidentifikasi penggunaan driver PostgreSQL JDBC dalam aplikasi Java dan menyarankan penggunaan Server Fleksibel Azure PostgreSQL sebagai gantinya. Anda memerlukan aturan untuk menemukan driver PostgreSQL JDBC yang ditentukan dalam file maven pom.xml atau file Gradle, seperti dependensi yang ditunjukkan dalam contoh berikut:

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

Untuk mendeteksi penggunaan dependensi ini, aturan menggunakan tag XML berikut:

  • ruleset: Pengidentifikasi unik dari set aturan. Set aturan adalah kumpulan aturan yang terkait dengan teknologi tertentu.
  • targetTechnology: Teknologi yang ditargetkan aturan. Dalam hal ini, aturan ini menargetkan Azure App Services, Azure Kubernetes Service (AKS), dan Azure Container Apps.
  • rule: Elemen akar dari satu aturan.
  • when: Kondisi yang harus dipenuhi agar aturan dipicu.
  • perform: Tindakan yang akan dilakukan saat aturan dipicu.
  • hint: Pesan yang akan ditampilkan dalam laporan, kategorinya (Informasi, Opsional, atau Wajib) dan upaya yang diperlukan untuk memperbaiki masalah, mulai dari 1 (mudah) hingga 13 (sulit).

XML berikut ini memperlihatkan definisi aturan kustom:

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

Setelah menjalankan aturan ini melalui appcat, jalankan ulang analisis untuk meninjau laporan yang dihasilkan. Seperti halnya insiden lain, laporan penilaian mencantumkan masalah yang diidentifikasi dan file yang terpengaruh yang terkait dengan aturan ini.

Cuplikan layar appcat dengan aturan yang sedang dijalankan.

Panduan lengkap untuk Pengembangan Aturan tersedia di azure.github.io/appcat-docs/rules-development-guide.

Catatan rilis

6.3.9.0

Rilis ini berisi perbaikan berikut dan menyertakan sekumpulan aturan baru. Untuk informasi selengkapnya, lihat di bawah ini.

Pembaruan Umum

  • Perubahan terintegrasi dari repositori upstream Windup (6.3.9.Rilis Akhir).
  • Mengatasi tautan rusak dalam deskripsi aturan dan teks bantuan.

Aturan

  • Azure Message Queue: memperbarui dan menambahkan aturan baru untuk azure-message-queue-rabbitmq dan azure-message-queue-amqp.
  • Azure Bus Layanan: memperkenalkan aturan deteksi untuk Azure Bus Layanan.
  • MySQL & PostgreSQL: aturan deteksi dependensi yang disempurnakan.
  • Aturan Azure-AWS: aturan yang ditingkatkan dan ditingkatkan yang ada.
  • S3 Spring Starter: menambahkan aturan deteksi untuk S3 Spring Starter.
  • RabbitMQ Spring JMS: menambahkan aturan deteksi untuk RabbitMQ Spring JMS.
  • Aturan Pengelogan: aturan terkait pengelogan yang diperbarui dan disempurnakan.
  • Aturan Penyimpanan Lokal: memperbarui dan menyempurnakan aturan penyimpanan lokal.
  • Aturan Sistem File Azure: memperbarui dan menyempurnakan aturan Azure File System.

Perpustakaan

  • Pustaka yang diperbarui untuk mengatasi kerentanan keamanan.

6.3.0.9

Rilis ini berisi perbaikan berikut dan menyertakan sekumpulan aturan baru. Untuk informasi selengkapnya, lihat di bawah ini.

  • Mengatasi masalah dengan localhost-java-00001 aturan.
  • Memperkenalkan aturan baru untuk mengidentifikasi teknologi seperti AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata, dan Alibaba Rocket MQ.
  • azure-file-system-02000 Memperbarui untuk sekarang mendukung ekstensi file xml.
  • Meningkatkan berbagai pustaka untuk mengatasi kerentanan keamanan.

6.3.0.8

Sebelumnya, serangkaian target diaktifkan secara default, sehingga sulit bagi pelanggan tertentu untuk menilai aplikasi besar dengan terlalu banyak insiden yang terkait dengan masalah yang kurang penting. Untuk mengurangi kebisingan dalam laporan, pengguna sekarang harus menentukan beberapa target, dengan parameter --target, saat mengeksekusi appcat, memberi mereka opsi untuk memilih hanya target yang penting.

6.3.0.7

Rilis GA (Umumnya Tersedia) dari aplikasi Azure Migrate dan penilaian kode.

Lisensi

Penilaian aplikasi dan kode Azure Migrate untuk Java adalah alat gratis, sumber terbuka tanpa biaya, dan dilisensikan di bawah lisensi yang sama dengan proyek WindUp upstream.

Tanya jawab umum

T: Di mana saya dapat mengunduh versi terbaru aplikasi Azure Migrate dan penilaian kode untuk Java?

Anda dapat mengunduh appcat dari aka.ms/appcat/azure-appcat-cli-latest.zip.

T: Di mana saya dapat menemukan informasi selengkapnya tentang aplikasi Azure Migrate dan penilaian kode untuk Java?

Saat mengunduh appcat, Anda mendapatkan direktori dokumen dengan semua informasi yang Anda butuhkan untuk memulai.

T: Di mana saya dapat menemukan aturan Azure tertentu?

Semua aturan Azure tersedia di repositori GitHub Rulesets appcat.

T: Di mana saya dapat menemukan informasi selengkapnya tentang membuat aturan kustom?

Lihat Panduan Pengembangan Aturan untuk aplikasi Azure Migrate dan penilaian kode untuk Java.

T: Di mana saya bisa mendapatkan bantuan saat membuat aturan kustom?

Cara terbaik untuk mendapatkan bantuan adalah dengan membuat masalah pada repositori GitHub appcat-rulesets.