Bagikan melalui


Mulai cepat: Menyebarkan aplikasi Java Native Image pertama Anda ke Azure Spring Apps

Catatan

Paket Basic, Standard, dan Enterprise memasuki periode pensiun pada 17 Maret 2025. Untuk informasi selengkapnya, lihat pengumuman penghentian Azure Spring Apps.

Artikel ini berlaku untuk: ❎ Basic/Standard ✅ Enterprise

Mulai cepat ini menunjukkan cara menyebarkan aplikasi Spring Boot ke Azure Spring Apps sebagai Gambar Asli.

Kemampuan Gambar Asli memungkinkan Anda mengkompilasi aplikasi Java ke executable mandiri, yang dikenal sebagai Gambar Asli. Executable ini dapat memberikan manfaat signifikan, termasuk waktu startup yang lebih cepat dan overhead memori runtime yang lebih rendah dibandingkan dengan JVM tradisional (Java Virtual Machine).

Proyek sampel adalah aplikasi Spring Petclinic. Cuplikan layar berikut menunjukkan aplikasi:

Cuplikan layar aplikasi Spring Petclinic di Azure Spring Apps.

1. Prasyarat

  • Langganan Azure. Jika Anda tidak memiliki langganan, buat akun gratis sebelum memulai.
  • Git.
  • Java Development Kit (JDK), versi 17.
  • Azure CLI versi 2.45.0 atau yang lebih tinggi. Gunakan perintah berikut untuk menginstal ekstensi Azure Spring Apps: az extension add --name spring

2. Siapkan proyek Spring Petclinic

Gunakan langkah-langkah berikut untuk mengkloning dan menjalankan aplikasi secara lokal.

  1. Gunakan perintah berikut untuk mengkloning proyek Spring Petclinic dari GitHub:

    git clone https://github.com/Azure-Samples/spring-petclinic.git
    
  2. Gunakan perintah berikut untuk membangun proyek Spring Petclinic:

    cd spring-petclinic
    ./mvnw clean package -DskipTests -Pnative package
    
  3. Gunakan perintah berikut untuk menjalankan aplikasi Spring Petclinic dengan menggunakan Maven:

    java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jar
    
  4. http://localhost:8080 Buka di browser Anda untuk mengakses aplikasi Spring Petclinic.

3. Siapkan lingkungan cloud

Sumber daya utama yang diperlukan untuk menjalankan aplikasi Spring Petclinic adalah instans Azure Spring Apps. Bagian ini menyediakan langkah-langkah untuk membuat sumber daya.

3.1. Berikan nama untuk setiap sumber daya

Buat variabel untuk menahan nama sumber daya dengan menggunakan perintah berikut. Pastikan untuk mengganti placeholder dengan nilai Anda sendiri.

export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
export AZURE_SPRING_APPS_NAME=<Azure-Spring-Apps-service-instance-name>
export NATIVE_BUILDER=native-builder
export JAR_APP_NAME=jar-app
export NATIVE_APP_NAME=native-app
export JAR_PATH=target/spring-petclinic-3.1.0-SNAPSHOT.jar

3.2. Membuat grup sumber daya baru

Gunakan langkah-langkah berikut untuk membuat grup sumber daya baru:

  1. Gunakan perintah berikut untuk masuk ke Azure CLI:

    az login
    
  2. Gunakan perintah berikut untuk mengatur lokasi default:

    az configure --defaults location=${LOCATION}
    
  3. Gunakan perintah berikut untuk mencantumkan semua langganan yang tersedia untuk menentukan ID langganan yang akan digunakan:

    az account list --output table
    
  4. Gunakan perintah berikut untuk mengatur langganan default:

    az account set --subscription <subscription-ID>
    
  5. Gunakan perintah berikut ini untuk membuat grup sumber daya:

    az group create --resource-group ${RESOURCE_GROUP}
    
  6. Gunakan perintah berikut untuk mengatur grup sumber daya yang baru dibuat sebagai grup sumber daya default:

    az configure --defaults group=${RESOURCE_GROUP}
    

3.3. Membuat instans Azure Spring Apps

Azure Spring Apps digunakan untuk menghosting aplikasi Spring Petclinic. Gunakan langkah-langkah berikut untuk membuat instans Azure Spring Apps dan dua aplikasi di dalamnya:

  1. Gunakan perintah berikut untuk membuat instans layanan Azure Spring Apps. Build gambar asli memerlukan memori 16 Gi selama build gambar, jadi konfigurasikan ukuran kumpulan build sebagai S7.

    az spring create \
        --name ${AZURE_SPRING_APPS_NAME} \
        --sku enterprise \
        --build-pool-size S7
    
  2. Buat file builder-native.json di direktori saat ini lalu tambahkan konten berikut:

    {
       "stack": {
         "id": "io.buildpacks.stacks.jammy",
         "version": "tiny"
       },
       "buildpackGroups": [
         {
           "name": "default",
           "buildpacks": [
             {
               "id": "tanzu-buildpacks/java-native-image"
             }
           ]
         }
       ]
     }  
    
  3. Gunakan perintah berikut untuk membuat penyusun kustom untuk membangun aplikasi Gambar Asli:

    az spring build-service builder create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_BUILDER} \
        --builder-file builder-native.json
    
  4. Gunakan perintah berikut untuk membuat aplikasi di instans Azure Spring Apps untuk menyebarkan aplikasi Spring Petclinic sebagai file JAR. Konfigurasikan batas memori hingga 1 Gi.

    az spring app create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${JAR_APP_NAME} \
        --cpu 1 \
        --memory 1Gi \
        --assign-endpoint true
    
  5. Gunakan perintah berikut untuk membuat aplikasi di instans Azure Spring Apps untuk menyebarkan aplikasi Spring Petclinic sebagai Gambar Asli:

    az spring app create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_APP_NAME} \
        --cpu 1 \
        --memory 1Gi \
        --assign-endpoint true
    

4. Menyebarkan aplikasi ke Azure Spring Apps

Sekarang setelah lingkungan cloud disiapkan, aplikasi siap untuk disebarkan.

Gunakan perintah berikut untuk menyebarkan aplikasi Spring Petclinic sebagai file JAR:

az spring app deploy \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${JAR_APP_NAME} \
    --artifact-path ${JAR_PATH} \
    --build-env BP_JVM_VERSION=17

Gunakan perintah berikut untuk menyebarkan aplikasi Spring Petclinic sebagai Gambar Asli:

az spring app deploy \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${NATIVE_APP_NAME} \
    --builder ${NATIVE_BUILDER} \
    --build-cpu 8 \
    --build-memory 16Gi \
    --artifact-path ${JAR_PATH} \
    --build-env BP_JVM_VERSION=17 BP_NATIVE_IMAGE=true

5. Memvalidasi Aplikasi Gambar Asli

Sekarang Anda dapat mengakses aplikasi Gambar Asli yang disebarkan untuk melihat apakah aplikasi tersebut berfungsi. Gunakan langkah-langkah berikut untuk memvalidasi:

  1. Setelah penyebaran selesai, Anda dapat menjalankan perintah berikut untuk mendapatkan URL aplikasi:

    az spring app show \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_APP_NAME} \
        --output table
    

    Anda dapat mengakses aplikasi dengan URL yang ditampilkan dalam output sebagai Public Url. Halaman akan muncul saat Anda melihatnya di localhost.

  2. Gunakan perintah berikut untuk memeriksa log aplikasi untuk menyelidiki masalah penyebaran apa pun:

    az spring app logs \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_APP_NAME}
    

6. Bandingkan performa untuk JAR dan Gambar Asli

Bagian berikut menjelaskan cara membandingkan performa antara penyebaran JAR dan Gambar Asli.

Waktu mulai server

Gunakan perintah berikut untuk memeriksa log Started PetClinicApplication in XXX seconds aplikasi untuk mendapatkan waktu mulai server untuk aplikasi JAR:

az spring app logs \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${JAR_APP_NAME}

Waktu mulai server sekitar 25 d untuk aplikasi JAR.

Gunakan perintah berikut untuk memeriksa log aplikasi untuk mendapatkan waktu mulai server untuk aplikasi Gambar Asli:

az spring app logs \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${NATIVE_APP_NAME}

Waktu mulai server kurang dari 0,5 d untuk aplikasi Gambar Asli.

Penggunaan memori

Gunakan perintah berikut untuk menurunkan skala ukuran memori menjadi 512 Mi untuk aplikasi Gambar Asli:

az spring app scale \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${NATIVE_APP_NAME} \
    --memory 512Mi

Output perintah harus menunjukkan bahwa aplikasi Gambar Asli berhasil dimulai.

Gunakan perintah berikut untuk menurunkan skala ukuran memori menjadi 512 Mi untuk aplikasi JAR:

az spring app scale \
    --service ${AZURE_SPRING_APPS_NAME} \
    --name ${JAR_APP_NAME} \
    --memory 512Mi

Output perintah harus menunjukkan bahwa aplikasi JAR gagal dimulai karena memori yang tidak mencukup. Pesan output harus mirip dengan contoh berikut: Terminating due to java.lang.OutOfMemoryError: Java heap space.

Gambar berikut menunjukkan penggunaan memori yang dioptimalkan untuk penyebaran Gambar Asli untuk beban kerja konstan 400 permintaan per detik ke dalam aplikasi Petclinic. Penggunaan memori adalah sekitar 1/5 dari memori yang dikonsumsi oleh penyebaran JAR yang setara.

Cuplikan layar penggunaan memori yang dioptimalkan dari penyebaran Gambar Asli di Azure Spring Apps.

Gambar Asli menawarkan waktu mulai yang lebih cepat dan mengurangi overhead memori runtime jika dibandingkan dengan Java Virtual Machine (JVM) konvensional.

7. Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, biarkan sumber daya ini tetap di tempatnya. Saat Anda tidak lagi memerlukan sumber daya, hapus dengan menghapus grup sumber daya. Gunakan perintah berikut untuk menghapus grup sumber daya:

az group delete --name ${RESOURCE_GROUP}

8. Langkah selanjutnya

Untuk informasi lebih lanjut, baca artikel berikut: