Esercizio - Distribuire un'applicazione monolitica nel servizio app

Completato

Si è parlato di architetture monolitiche e di microservizi. A questo punto è possibile distribuire un'applicazione monolitica e approfondire il modo in cui può evolvere in un'architettura di microservizi.

Fabrikam ha recentemente aggiunto il servizio di drone nell'applicazione esistente.

In questo esercizio si distribuisce un'applicazione monolitica in Servizio app di Azure e si abiliterà Monitoraggio di Azure per ottenere visibilità sui dati di telemetria e sulle prestazioni dell'applicazione.

Visualization of the resources for the drone delivery application.

Distribuire un'applicazione monolitica nel servizio app di Azure

Iniziare distribuendo l'applicazione. Prima di tutto, è necessario creare le risorse di Azure per ospitare l'applicazione.

  1. Eseguire questo comando per distribuire le risorse necessarie per l'applicazione. La distribuzione richiede alcuni minuti.

    az deployment group create \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-microservices-architecture/master/deployment/azuredeploy.json
    
  2. Ora che le risorse sono state create, è possibile distribuire l'applicazione. Per prima cosa usare il comando seguente per eseguire il pull del codice sorgente dal repository di esempio.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Eseguire il comando seguente per comprimere il codice dell'applicazione da usare per la distribuzione nel servizio app.

    zip -r DroneDelivery-before.zip .
    
  4. Eseguire il comando seguente per impostare una variabile con il nome del servizio app.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Eseguire il comando seguente per configurare il servizio app per eseguire una build come parte della distribuzione.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. A questo punto, eseguire il comando seguente per distribuire l'applicazione nel servizio app. Per completare la distribuzione sono necessari alcuni minuti.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. Al termine, verificare che la distribuzione sia eseguita correttamente visitando il sito Web del servizio app. Eseguire il comando seguente per ottenere l'URL e selezionarlo per aprire la pagina.

    echo https://$(az webapp config hostname list \
                    --resource-group "<rgn>[sandbox resource group]</rgn>" \
                    --webapp-name $APPSERVICENAME \
                    --query [].name \
                    --output tsv)
    

    Screenshot of the Drone Delivery website.

Eseguire un test di carico sull'applicazione

Testare ora le prestazioni dell'applicazione nell'architettura monolitica.

  1. Nella home page per l'applicazione distribuita selezionare Send Requests (Invia richieste). Questa azione simula l'invio di 100 richieste attraverso l'applicazione.

  2. Per la prima richiesta, verrà visualizzato un risultato di circa 8 - 12 secondi per l'elaborazione di 100 messaggi. Se si aggiorna la pagina e si esegue un nuovo invio, se richiesto, questo numero potrebbe ridursi di circa la metà. Sono comunque necessari circa cinque secondi per ogni richiesta.

    Screenshot of the Drone Delivery website after running the performance test.

Fabrikam sospetta che l'architettura monolitica impedisca il ridimensionamento dei servizi usati più di frequente, causando le scarse prestazioni rilevate.