Aracılığıyla paylaş


Hızlı Başlangıç: Azure Spring Apps'e ilk Java Yerel Görüntü uygulamanızı dağıtma

Not

İlk 50 vCPU saati ve 100 GB saat bellek her ay ücretsizdir. Daha fazla bilgi için Azure'da Uygulamalar Blogu'nda Fiyat Azaltma - Azure Spring Apps daha fazlasını yapıyor, maliyetleri daha az! bölümüne bakın.

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir:❌ Temel/Standart ✔️ Kurumsal

Bu hızlı başlangıçta Spring Boot uygulamasının Azure Spring Apps'e Yerel Görüntü olarak nasıl dağıtılacağı gösterilmektedir.

Yerel Görüntü özelliği, Java uygulamalarını Yerel Görüntüler olarak bilinen tek başına yürütülebilir dosyalara derlemenizi sağlar. Bu yürütülebilir dosyalar, geleneksel JVM'ye (Java Sanal Makinesi) kıyasla daha hızlı başlangıç süreleri ve daha düşük çalışma zamanı bellek yükü de dahil olmak üzere önemli avantajlar sağlayabilir.

Örnek proje Spring Petclinic uygulamasıdır. Aşağıdaki ekran görüntüsünde uygulama gösterilmektedir:

Screenshot of a Spring Petclinic application in Azure Spring Apps.

1. Önkoşullar

2. Spring Petclinic projesini hazırlama

Uygulamayı yerel olarak kopyalamak ve çalıştırmak için aşağıdaki adımları kullanın.

  1. GitHub'dan Spring Petclinic projesini kopyalamak için aşağıdaki komutu kullanın:

    git clone https://github.com/Azure-Samples/spring-petclinic.git
    
  2. Spring Petclinic projesini oluşturmak için aşağıdaki komutu kullanın:

    cd spring-petclinic
    ./mvnw clean package -DskipTests -Pnative package
    
  3. Maven kullanarak Spring Petclinic uygulamasını çalıştırmak için aşağıdaki komutu kullanın:

    java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jar
    
  4. http://localhost:8080 Spring Petclinic uygulamasına erişmek için tarayıcınızda adresine gidin.

3. Bulut ortamını hazırlama

Spring Petclinic uygulamasını çalıştırmak için gereken ana kaynak bir Azure Spring Apps örneğidir. Bu bölümde, kaynağı oluşturma adımları sağlanır.

3.1. Her kaynak için ad sağlayın

Aşağıdaki komutları kullanarak kaynak adlarını tutmak için değişkenler oluşturun. Yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın.

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. Yeni bir kaynak grubu oluşturma

Yeni bir kaynak grubu oluşturmak için aşağıdaki adımları kullanın:

  1. Azure CLI'da oturum açmak için aşağıdaki komutu kullanın:

    az login
    
  2. Varsayılan konumu ayarlamak için aşağıdaki komutu kullanın:

    az configure --defaults location=${LOCATION}
    
  3. Kullanılacak abonelik kimliğini belirlemek üzere tüm kullanılabilir abonelikleri listelemek için aşağıdaki komutu kullanın:

    az account list --output table
    
  4. Varsayılan aboneliği ayarlamak için aşağıdaki komutu kullanın:

    az account set --subscription <subscription-ID>
    
  5. Kaynak grubu oluşturmak için aşağıdaki komutu kullanın:

    az group create --resource-group ${RESOURCE_GROUP}
    
  6. Yeni oluşturulan kaynak grubunu varsayılan kaynak grubu olarak ayarlamak için aşağıdaki komutu kullanın:

    az configure --defaults group=${RESOURCE_GROUP}
    

3.3. Azure Spring Apps örneği oluşturma

Azure Spring Apps, Spring Petclinic uygulamasını barındırmak için kullanılır. Bir Azure Spring Apps örneği ve içinde iki uygulama oluşturmak için aşağıdaki adımları kullanın:

  1. Azure Spring Apps hizmet örneği oluşturmak için aşağıdaki komutu kullanın. Yerel görüntü derlemesi, görüntü derlemesi sırasında 16 Gi bellek gerektirir, bu nedenle derleme havuzu boyutunu S7 olarak yapılandırın.

    az spring create \
        --name ${AZURE_SPRING_APPS_NAME} \
        --sku enterprise \
        --build-pool-size S7
    
  2. Geçerli dizinde bir builder-native.json dosyası oluşturun ve aşağıdaki içeriği ekleyin:

    {
       "stack": {
         "id": "io.buildpacks.stacks.jammy",
         "version": "tiny"
       },
       "buildpackGroups": [
         {
           "name": "default",
           "buildpacks": [
             {
               "id": "tanzu-buildpacks/java-native-image"
             }
           ]
         }
       ]
     }  
    
  3. Yerel Görüntü uygulamasını derlemek üzere özel bir oluşturucu oluşturmak için aşağıdaki komutu kullanın:

    az spring build-service builder create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_BUILDER} \
        --builder-file builder-native.json
    
  4. Azure Spring Apps örneğinde Spring Petclinic uygulamasının JAR dosyası olarak dağıtılacağı bir uygulama oluşturmak için aşağıdaki komutu kullanın. Bellek sınırını 1 Gi olarak yapılandırın.

    az spring app create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${JAR_APP_NAME} \
        --cpu 1 \
        --memory 1Gi \
        --assign-endpoint true
    
  5. Azure Spring Apps örneğinde Spring Petclinic uygulamasının Yerel Görüntü olarak dağıtılacağı bir uygulama oluşturmak için aşağıdaki komutu kullanın:

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

4. Uygulamayı Azure Spring Apps'e dağıtma

Artık bulut ortamı hazır olduğuna göre, uygulamalar dağıtıma hazırdır.

Spring Petclinic uygulamasını JAR dosyası olarak dağıtmak için aşağıdaki komutu kullanın:

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

Spring Petclinic uygulamasını Yerel Görüntü olarak dağıtmak için aşağıdaki komutu kullanın:

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. Yerel Görüntü Uygulamasını Doğrulama

Artık dağıtılan Yerel Görüntü uygulamasına erişerek çalışıp çalışmadığını görebilirsiniz. Doğrulamak için aşağıdaki adımları kullanın:

  1. Dağıtım tamamlandıktan sonra aşağıdaki komutu çalıştırarak uygulama URL'sini alabilirsiniz:

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

    Çıkışta olarak Public Urlgösterilen URL ile uygulamaya erişebilirsiniz. Sayfa, o localhost'ta gördüğünüz gibi görünmelidir.

  2. Herhangi bir dağıtım sorununu araştırmak üzere uygulamanın günlüğünü denetlemek için aşağıdaki komutu kullanın:

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

6. JAR ve Yerel Görüntü performansını karşılaştırma

Aşağıdaki bölümlerde JAR ile Yerel Görüntü dağıtımı arasındaki performansın nasıl karşılaştırıldığı açıklanmaktadır.

Sunucu başlangıç zamanı

Jar uygulamasının sunucu başlangıç zamanını almak üzere uygulamanın günlüğünü Started PetClinicApplication in XXX seconds denetlemek için aşağıdaki komutu kullanın:

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

Jar uygulaması için sunucu başlatma süresi yaklaşık 25 sn'dir.

Yerel Görüntü uygulamasının sunucu başlangıç zamanını almak üzere uygulamanın günlüğünü denetlemek için aşağıdaki komutu kullanın:

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

Yerel Görüntü uygulaması için sunucu başlatma süresi 0,5 sn'den kısadır.

Bellek kullanımı

Yerel Görüntü uygulaması için bellek boyutunu 512 Mi'ye küçültmek için aşağıdaki komutu kullanın:

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

Komut çıktısı, Yerel Görüntü uygulamasının başarıyla başlatıldığını göstermelidir.

JAR uygulaması için bellek boyutunun ölçeğini 512 Mi'ye küçültmek için aşağıdaki komutu kullanın:

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

Komut çıktısı JAR uygulamasının yetersiz bellek nedeniyle başlatılamadığını göstermelidir. Çıkış iletisi aşağıdaki örneğe benzer olmalıdır: Terminating due to java.lang.OutOfMemoryError: Java heap space.

Aşağıdaki şekilde, Petclinic uygulamasına saniyede 400 istek içeren sabit bir iş yükü için Yerel Görüntü dağıtımı için iyileştirilmiş bellek kullanımı gösterilmektedir. Bellek kullanımı, eşdeğer JAR dağıtımı tarafından kullanılan belleğin yaklaşık 1/5'idir.

Screenshot of the optimized memory usage of a Native Image deployment in Azure Spring Apps.

Yerel Görüntüler, geleneksel Java Sanal Makinesi (JVM) ile karşılaştırıldığında daha hızlı başlangıç süreleri ve azaltılmış çalışma zamanı bellek yükü sunar.

7. Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Kaynaklara artık ihtiyacınız kalmadığında, kaynak grubunu silerek bunları silin. Kaynak grubunu silmek için aşağıdaki komutu kullanın:

az group delete --name ${RESOURCE_GROUP}

8. Sonraki adımlar

Daha fazla bilgi için aşağıdaki makaleleri inceleyin: