Övning – Distribuera ett monolitiskt program i App Service

Slutförd

Vi pratade lite om monolitiska arkitekturer och mikrotjänstarkitekturer. Nu ska vi distribuera ett monolitiskt program och gå vidare med hur vi kan utveckla det till en arkitektur för mikrotjänster.

Fabrikam har nyligen lagt till drönartjänsten i sitt befintliga program.

I den här övningen distribuerar vi ett monolitiskt program i Azure App Service och gör det möjligt för Azure Monitor att få insyn i telemetri och programprestanda.

Visualisering av resurserna för drönarleveransprogrammet.

Distribuera ett monolitiskt program i Azure App Service

Vi börjar med att distribuera programmet. Först måste vi skapa Azure-resurserna som värd för programmet.

  1. Kör följande kommando för att distribuera de resurser som behövs för det här programmet. Den här distributionen tar några minuter.

    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. Nu när vi har skapat resurserna ska vi distribuera programmet. Kör först följande kommando för att hämta källkoden från exempellagringsplatsen.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Kör följande kommando för att zippa upp programkoden, som vi använder för att distribuera till apptjänsten.

    zip -r DroneDelivery-before.zip .
    
  4. Kör följande kommando för att ange en variabel med namnet på din apptjänst.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Kör följande kommando för att konfigurera apptjänsten att köra en version som en del av distributionen.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. Kör nu följande kommando för att distribuera programmet till App Service. Denna distribution tar några minuter att slutföra.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. När distributionen är klar bekräftar du att distributionen lyckas genom att besöka webbplatsen för din apptjänst. Kör följande kommando för att hämta URL:en och välj den för att öppna sidan.

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

    Skärmbild av webbplatsen för drönarleverans.

Utföra ett belastningstest mot programmet

Nu ska vi testa programmets prestanda i dess monolitiska arkitektur.

  1. På startsidan för ditt distribuerade program väljer du Skicka begäranden. Den här åtgärden simulerar sändning av 100 begäranden via programmet.

  2. För den första begäran visas ett resultat på cirka 8 till 12 sekunder för att bearbeta 100 meddelanden. Om du uppdaterar sidan och skicka om igen om du uppmanas att göra det kan det här antalet minska med ungefär hälften. Det tar fortfarande cirka fem sekunder per begäran.

    Skärmbild av webbplatsen för drönarleverans när du har kört prestandatestet.

Fabrikam misstänker att den monolitiska arkitekturen hindrar kraftigt använda tjänster från att skalas, vilket leder till den dåliga prestanda som ses här.