Esercizio - Distribuire l'applicazione Spring Boot in Azure
Ora che tutti gli elementi sono in esecuzione in locale, è possibile distribuire l'applicazione nel cloud e testarne il comportamento nell'ambiente di produzione.
Creare un'istanza del servizio app di Azure
Creare un'istanza del servizio app di Azure per ospitare l'applicazione. Il codice dell’interfaccia della riga di comando di Azure seguente per creare un piano di servizio app di base che usa Linux e quindi aggiunge un'istanza di Java nel servizio app in tale piano.
Se si preferisce usare Java 11 o Java 17 anziché Java 8, usare "JAVA|<version>-java<version>"
invece di "JAVA|8-jre8"
come runtime dell'applicazione Web.
az appservice plan create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_REDIS_NAME-webapp-plan \
--is-linux \
--sku B1
az webapp create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_REDIS_NAME-webapp \
--runtime "JAVA|8-jre8" \
--plan $AZ_REDIS_NAME-webapp-plan
Nota
Il codice precedente riutilizza la variabile $AZ_REDIS_NAME
per assegnare il nome al piano di servizio app e all’istanza del servizio app, ma è possibile usare nomi diversi. Il nome dell'istanza del servizio app fa parte dell'URL, che deve essere univoco in Azure.
È possibile eseguire il passaggio successivo mentre si attende che termini la distribuzione.
Distribuire l'applicazione Spring Boot nel servizio app di Azure
Aggiungere il nuovo plug-in seguente al file pom.xml del progetto nella sezione
<plugins>
:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.11.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>${env.AZ_RESOURCE_GROUP}</resourceGroup> <appName>${env.AZ_REDIS_NAME}-webapp</appName> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Nota
La configurazione precedente usa le variabili di ambiente configurate in precedenza. Per il corretto funzionamento di questa configurazione, assicurarsi che le variabili
$AZ_RESOURCE_GROUP
e$AZ_REDIS_NAME
siano configurate correttamente.Al termine della distribuzione del Servizio app, eseguire il comando seguente per creare il pacchetto dell'applicazione e distribuirlo in Azure:
./mvnw package azure-webapp:deploy
Al termine della distribuzione, verrà restituita la riga seguente:
Successfully deployed the artifact to https://<redisName>-webapp.azurewebsites.net
Prendere nota dell'URL dell'applicazione in esecuzione, come illustrato nell'output precedente, che verrà usato nella sezione successiva.
Testare l'applicazione in Azure
Usare l'URL dell'applicazione per eseguire gli stessi comandi dell’URL client (cURL) usati nel server locale anche nel cloud.
Per aggiungere un elemento di dati, eseguire il comando seguente:
curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
Per recuperare i dati, eseguire:
curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
Per incrementare la sessione, eseguire il comando seguente più volte:
curl -b cookie.txt -c cookie.txt https://$AZ_REDIS_NAME-webapp.azurewebsites.net/session
Il server locale e il servizio cloud usano la stessa istanza di Redis, di conseguenza sono in cluster. I dati scritti in un'istanza saranno disponibili nell'altra istanza. È possibile aumentare il numero di istanze del servizio cloud aggiungendo altri nodi che useranno tutti la stessa istanza di Redis per archiviare i dati aziendali e di sessione.