Quickstart: Uw eerste Java Native Image-toepassing implementeren in Azure Spring Apps
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
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:
1. Vereisten
- Een Azure-abonnement. Als u geen abonnement hebt, maakt u een gratis account voordat u begint.
- Git.
- Java Development Kit (JDK), versie 17.
- Azure CLI versie 2.45.0 of hoger. Gebruik de volgende opdracht om de Azure Spring Apps-extensie te installeren:
az extension add --name spring
- Als u voor het eerst een Azure Spring Apps Enterprise-abonnementsexemplementatie implementeert in het doelabonnement, raadpleegt u de sectie Vereisten van de azure Spring Apps Enterprise-laag in Azure Marketplace.
2. Het Spring Petclinic-project voorbereiden
Gebruik de volgende stappen om de app lokaal te klonen en uit te voeren.
Gebruik de volgende opdracht om het Spring Petclinic-project te klonen vanuit GitHub:
git clone https://github.com/Azure-Samples/spring-petclinic.git
Gebruik de volgende opdracht om het Spring Petclinic-project te bouwen:
cd spring-petclinic ./mvnw clean package -DskipTests -Pnative package
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
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:
Gebruik de volgende opdracht om u aan te melden bij de Azure CLI:
az login
Gebruik de volgende opdracht om de standaardlocatie in te stellen:
az configure --defaults location=${LOCATION}
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
Gebruik de volgende opdracht om het standaardabonnement in te stellen:
az account set --subscription <subscription-ID>
Gebruik de volgende opdracht om een resourcegroep te maken:
az group create --resource-group ${RESOURCE_GROUP}
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:
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
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" } ] } ] }
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
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
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:
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.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.
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: