Övning – Distribuera ett monolitiskt program i App Service
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.
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.
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.jsonNu 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/beforeKö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 .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)"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=trueKö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.zipNä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)
Utföra ett belastningstest mot programmet
Nu ska vi testa programmets prestanda i dess monolitiska arkitektur.
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.
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.
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.