Share via


Quickstart: Uw eerste Java Native Image-toepassing implementeren in Azure Spring Apps

Notitie

De eerste 50 vCPU-uren en 100 GB geheugenuren zijn elke maand gratis. Zie Prijsreductie: Azure Spring Apps kost meer, kost minder! in de Azure-blog apps.

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise

In deze quickstart ziet u hoe u een Spring Boot-toepassing implementeert in Azure Spring Apps als een systeemeigen installatiekopie.

Met systeemeigen installatiekopieën kunt u Java-toepassingen compileren naar zelfstandige uitvoerbare bestanden, ook wel systeemeigen installatiekopieën genoemd. Deze uitvoerbare bestanden kunnen aanzienlijke voordelen bieden, waaronder snellere opstarttijden en lagere overhead van runtimegeheugen vergeleken met een traditionele JVM (Java Virtual Machine).

Het voorbeeldproject is de Spring Petclinic-toepassing. In de volgende schermopname ziet u de toepassing:

Screenshot of a Spring Petclinic application in Azure Spring Apps.

1. Vereisten

2. Het Spring Petclinic-project voorbereiden

Gebruik de volgende stappen om de app lokaal te klonen en uit te voeren.

  1. Gebruik de volgende opdracht om het Spring Petclinic-project te klonen vanuit GitHub:

    git clone https://github.com/Azure-Samples/spring-petclinic.git
    
  2. Gebruik de volgende opdracht om het Spring Petclinic-project te bouwen:

    cd spring-petclinic
    ./mvnw clean package -DskipTests -Pnative package
    
  3. Gebruik de volgende opdracht om de Spring Petclinic-toepassing uit te voeren met behulp van Maven:

    java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jar
    
  4. Ga naar http://localhost:8080 in uw browser om toegang te krijgen tot de Spring Petclinic-toepassing.

3. De cloudomgeving voorbereiden

De belangrijkste resource die is vereist voor het uitvoeren van een Spring Petclinic-toepassing is een Azure Spring Apps-exemplaar. Deze sectie bevat de stappen voor het maken van de resource.

3.1. Namen opgeven voor elke resource

Maak variabelen voor het opslaan van de resourcenamen met behulp van de volgende opdrachten. Vervang de tijdelijke aanduidingen door uw eigen waarden.

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. Een nieuwe resourcegroep maken

Gebruik de volgende stappen om een nieuwe resourcegroep te maken:

  1. Gebruik de volgende opdracht om u aan te melden bij de Azure CLI:

    az login
    
  2. Gebruik de volgende opdracht om de standaardlocatie in te stellen:

    az configure --defaults location=${LOCATION}
    
  3. Gebruik de volgende opdracht om alle beschikbare abonnementen weer te geven om de abonnements-id te bepalen die u wilt gebruiken:

    az account list --output table
    
  4. Gebruik de volgende opdracht om het standaardabonnement in te stellen:

    az account set --subscription <subscription-ID>
    
  5. Gebruik de volgende opdracht om een resourcegroep te maken:

    az group create --resource-group ${RESOURCE_GROUP}
    
  6. Gebruik de volgende opdracht om de zojuist gemaakte resourcegroep in te stellen als de standaardresourcegroep:

    az configure --defaults group=${RESOURCE_GROUP}
    

3.3. Een Azure Spring Apps-exemplaar maken

Azure Spring Apps wordt gebruikt voor het hosten van de Spring Petclinic-app. Gebruik de volgende stappen om een Azure Spring Apps-exemplaar en twee toepassingen erin te maken:

  1. Gebruik de volgende opdracht om een Azure Spring Apps-service-exemplaar te maken. Voor een systeemeigen build voor installatiekopieën is 16 Gi geheugen vereist tijdens het bouwen van de installatiekopieën. Configureer daarom de grootte van de buildpool als S7.

    az spring create \
        --name ${AZURE_SPRING_APPS_NAME} \
        --sku enterprise \
        --build-pool-size S7
    
  2. Maak een builder-native.json-bestand in de huidige map en voeg vervolgens de volgende inhoud toe:

    {
       "stack": {
         "id": "io.buildpacks.stacks.jammy",
         "version": "tiny"
       },
       "buildpackGroups": [
         {
           "name": "default",
           "buildpacks": [
             {
               "id": "tanzu-buildpacks/java-native-image"
             }
           ]
         }
       ]
     }  
    
  3. Gebruik de volgende opdracht om een aangepaste opbouwfunctie te maken om de systeemeigen installatiekopieëntoepassing te bouwen:

    az spring build-service builder create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${NATIVE_BUILDER} \
        --builder-file builder-native.json
    
  4. Gebruik de volgende opdracht om een toepassing te maken in het Azure Spring Apps-exemplaar waarin u de Spring Petclinic-toepassing als JAR-bestand wilt implementeren. Configureer de geheugenlimiet op 1 Gi.

    az spring app create \
        --service ${AZURE_SPRING_APPS_NAME} \
        --name ${JAR_APP_NAME} \
        --cpu 1 \
        --memory 1Gi \
        --assign-endpoint true
    
  5. Gebruik de volgende opdracht om een toepassing te maken in het Azure Spring Apps-exemplaar waarin u de Spring Petclinic-toepassing als een systeemeigen installatiekopieën wilt implementeren:

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

4. De app implementeren in Azure Spring Apps

Nu de cloudomgeving is voorbereid, zijn de toepassingen klaar om te implementeren.

Gebruik de volgende opdracht om de Spring Petclinic-toepassing als JAR-bestand te implementeren:

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

Gebruik de volgende opdracht om de Spring Petclinic-toepassing te implementeren als een systeemeigen installatiekopieë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. Systeemeigen installatiekopieën-app valideren

Nu hebt u toegang tot de geïmplementeerde systeemeigen installatiekopie-app om te zien of deze werkt. Voer de volgende stappen uit om te valideren:

  1. Nadat de implementatie is voltooid, kunt u de volgende opdracht uitvoeren om de APP-URL op te halen:

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

    U kunt de app openen met de URL die wordt weergegeven in de uitvoer als Public Url. De pagina moet worden weergegeven zoals u deze hebt gezien op localhost.

  2. Gebruik de volgende opdracht om het logboek van de app te controleren om een implementatieprobleem te onderzoeken:

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

6. Prestaties voor JAR en systeemeigen installatiekopieën vergelijken

In de volgende secties wordt beschreven hoe u de prestaties tussen DE JAR en de implementatie van systeemeigen installatiekopieën kunt vergelijken.

Opstarttijd van de server

Gebruik de volgende opdracht om het logboek Started PetClinicApplication in XXX seconds van de app te controleren om de opstarttijd van de server voor een JAR-app op te halen:

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

De opstarttijd van de server is ongeveer 25 s voor een JAR-app.

Gebruik de volgende opdracht om het logboek van de app te controleren om de opstarttijd van de server voor een systeemeigen installatiekopieën-app op te halen:

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

De opstarttijd van de server is minder dan 0,5 s voor een systeemeigen installatiekopieën-app.

Geheugengebruik

Gebruik de volgende opdracht om de geheugengrootte omlaag te schalen naar 512 Mi voor een systeemeigen installatiekopieën-app:

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

In de uitvoer van de opdracht moet worden weergegeven dat de systeemeigen installatiekopieën-app is gestart.

Gebruik de volgende opdracht om de geheugengrootte omlaag te schalen naar 512 Mi voor de JAR-app:

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

In de uitvoer van de opdracht moet worden weergegeven dat de JAR-app niet kon worden gestart vanwege onvoldoende geheugen. Het uitvoerbericht moet er ongeveer uitzien als in het volgende voorbeeld: Terminating due to java.lang.OutOfMemoryError: Java heap space.

In de volgende afbeelding ziet u het geoptimaliseerde geheugengebruik voor de implementatie van systeemeigen installatiekopieën voor een constante workload van 400 aanvragen per seconde in de Petclinische toepassing. Het geheugengebruik is ongeveer 1/5e van het geheugen dat wordt verbruikt door de equivalente JAR-implementatie.

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

Systeemeigen installatiekopieën bieden snellere opstarttijden en verminderde runtimegeheugenoverhead in vergelijking met de conventionele Java Virtual Machine (JVM).

7. Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Wanneer u de resources niet meer nodig hebt, verwijdert u deze door de resourcegroep te verwijderen. Gebruik de volgende opdracht om de resourcegroep te verwijderen:

az group delete --name ${RESOURCE_GROUP}

8. Volgende stappen

Raadpleeg voor meer informatie de volgende artikelen: