Mulai Cepat: Membangun dan menyebarkan aplikasi ke Azure Spring Apps

Catatan

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.

Artikel ini berlaku untuk: ✔️ Basic/Standard ❌ Enterprise

Mulai cepat ini menjelaskan cara membangun dan menyebarkan aplikasi Spring ke Azure Spring Apps menggunakan Azure CLI.

Prasyarat

Mengunduh aplikasi sampel

Gunakan langkah-langkah berikut untuk mengunduh aplikasi sampel. Jika Anda telah menggunakan Azure Cloud Shell, beralihlah ke prompt perintah lokal.

  1. Buat folder baru dan kloning repositori aplikasi sampel.

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/azure-spring-apps-samples
    
  2. Navigasikan ke direktori repositori.

    cd azure-spring-apps-samples
    

Sebarkan PlanetWeatherProvider

Gunakan langkah-langkah berikut untuk menyebarkan proyek PlanetWeatherProvider.

  1. Buat aplikasi untuk PlanetWeatherProvider proyek di instans Azure Spring Apps Anda.

    az spring app create --name planet-weather-provider --runtime-version NetCore_31
    

    Untuk mengaktifkan pendaftaran layanan otomatis, Anda telah memberi aplikasi nama yang sama dengan nilai spring.application.name dalam file appsettings.json proyek:

    "spring": {
      "application": {
        "name": "planet-weather-provider"
      }
    }
    

    Perintah ini mungkin memerlukan waktu beberapa menit untuk dijalankan.

  2. Ubah direktori ke folder proyek PlanetWeatherProvider.

    cd steeltoe-sample/src/planet-weather-provider
    
  3. Buat biner dan file .zip untuk disebarkan.

    dotnet publish -c release -o ./publish
    

    Tip

    File proyek berisi XML berikut untuk mengemas biner dalam file .zip setelah menulisnya ke folder ./publish:

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. Sebarkan proyek ke Azure.

    Pastikan bahwa perintah berada di folder proyek sebelum menjalankan perintah berikut ini.

    az spring app deploy \
        --name planet-weather-provider \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll \
        --artifact-path ./publish-deploy-planet.zip
    

    Opsi --main-entry menentukan jalur relatif dari folder akar file .zip ke file .dll yang berisi titik masuk aplikasi. Setelah layanan mengunggah file .zip, layanan mengekstrak semua file dan folder, lalu mencoba menjalankan titik masuk dalam file .dll yang ditentukan.

    Perintah ini mungkin memerlukan waktu beberapa menit untuk dijalankan.

Menyebarkan SolarSystemWeather

Gunakan langkah-langkah berikut untuk menyebarkan proyek SolarSystemWeather.

  1. Buat aplikasi lain di instans Azure Spring Apps Anda untuk proyek.

    az spring app create --name solar-system-weather --runtime-version NetCore_31
    

    solar-system-weather adalah nama yang ditentukan dalam proyek SolarSystemWeather dari file appsettings.js.

    Perintah ini mungkin memerlukan waktu beberapa menit untuk dijalankan.

  2. Ubah direktori ke proyek SolarSystemWeather.

    cd ../solar-system-weather
    
  3. Buat biner dan file .zip untuk disebarkan.

    dotnet publish -c release -o ./publish
    
  4. Sebarkan proyek ke Azure.

    az spring app deploy \
        --name solar-system-weather \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll \
        --artifact-path ./publish-deploy-solar.zip
    

    Perintah ini mungkin memerlukan waktu beberapa menit untuk dijalankan.

Menetapkan titik akhir publik

Sebelum menguji aplikasi, dapatkan titik akhir publik untuk permintaan HTTP GET ke solar-system-weather aplikasi.

  1. Jalankan perintah berikut untuk menetapkan titik akhir.

    az spring app update --name solar-system-weather --assign-endpoint true
    
  2. Jalankan perintah berikut untuk mendapatkan URL titik akhir.

    Windows:

    az spring app show --name solar-system-weather --output table
    

    Linux:

    az spring app show --name solar-system-weather | grep url
    

Uji aplikasi

Untuk menguji aplikasi, kirim permintaan GET ke solar-system-weather aplikasi. Di browser, navigasikan ke URL publik dengan /weatherforecast ditambahkan ke url tersebut. Misalnya: https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

Outputnya adalah JSON:

[{"Key":"Mercury","Value":"very warm"},{"Key":"Venus","Value":"quite unpleasant"},{"Key":"Mars","Value":"very cool"},{"Key":"Saturn","Value":"a little bit sandy"}]

Respons ini menunjukkan bahwa kedua aplikasi Spring berfungsi. Aplikasi SolarSystemWeather mengembalikan data yang diambil dari aplikasi PlanetWeatherProvider.

Artikel ini menjelaskan cara membangun dan menyebarkan aplikasi Spring ke Azure Spring Apps. Anda dapat menggunakan Azure CLI, plugin Maven, atau Intellij. Artikel ini menjelaskan setiap alternatif.

Prasyarat

Membangun aplikasi Spring secara lokal

Gunakan perintah berikut untuk mengkloning repositori sampel, menavigasi ke folder sampel, lalu buat proyek.

git clone https://github.com/azure-samples/spring-petclinic-microservices
cd spring-petclinic-microservices
mvn clean package -DskipTests -Denv=cloud

Kompilasi proyek membutuhkan waktu 5-10 menit. Ketika proyek dikompilasi, Anda harus memiliki file JAR individual untuk setiap layanan di folder masing-masing.

Membuat dan menyebarkan aplikasi di Azure Spring Apps

Gunakan langkah-langkah berikut untuk membuat dan menyebarkan aplikasi di Azure Spring Apps menggunakan CLI.

  1. Jika Anda tidak menjalankan perintah berikut di mulai cepat sebelumnya, jalankan sekarang untuk mengatur default CLI.

    az configure --defaults group=<resource-group-name> spring=<service-name>
    
  2. Buat dua aplikasi Spring inti untuk PetClinic: api-gateway dan customers-service.

    az spring app create \
        --name api-gateway \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi \
        --assign-endpoint
    az spring app create \
        --name customers-service \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi
    
  3. Sebarkan file JAR yang dibangun di langkah sebelumnya.

    az spring app deploy \
        --name api-gateway \
        --artifact-path spring-petclinic-api-gateway/target/api-gateway-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    az spring app deploy \
        --name customers-service \
        --artifact-path spring-petclinic-customers-service/target/customers-service-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    
  4. Kueri status aplikasi setelah penyebaran dengan perintah berikut.

    az spring app list --output table
    

    Perintah ini menghasilkan output yang mirip dengan contoh berikut:

    Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    api-gateway        eastus      xxxxxx-sp         default                  https://<service name>-api-gateway.azuremicroservices.io   Succeeded              1      2         1/1                 1/1                    -
    customers-service  eastus      <service name>         default                                                                       Succeeded              1      2         1/1                 1/1                    -
    

Verifikasi layanan

Akses api-gateway dan customers-service dari browser dengan Url Publik yang diperlihatkan sebelumnya, dalam format https://<service name>-api-gateway.azuremicroservices.io.

Cuplikan layar aplikasi sampel PetClinic yang memperlihatkan halaman Pemilik.

Tip

Untuk memecahkan masalah penyebaran, Anda dapat menggunakan perintah berikut untuk mendapatkan streaming log secara real time setiap kali aplikasi berjalan az spring app logs --name <app name> --follow.

Menyebarkan aplikasi tambahan

Untuk membuat aplikasi PetClinic berfungsi dengan semua fitur seperti Admin Server, Visits, dan Veterinarians, sebarkan aplikasi lain dengan perintah berikut:

az spring app create \
    --name admin-server \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi \
    --assign-endpoint
az spring app create \
    --name vets-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app create \
    --name visits-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app deploy \
    --name admin-server \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-admin-server/target/admin-server-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name vets-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-vets-service/target/vets-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name visits-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-visits-service/target/visits-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"

Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, biarkan sumber daya ini tetap di tempatnya. Jika tidak lagi diperlukan, hapus grup sumber daya yang juga akan menghapus sumber daya di grup sumber daya. Untuk menghapus grup sumber daya dengan menggunakan Azure CLI, gunakan perintah berikut:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Langkah berikutnya