Oefening: een monolithische toepassing implementeren in App Service

Voltooid

We hebben het gehad over monolithische en microservicesarchitecturen. Nu gaan we een monolithische toepassing implementeren en verder ingaan op hoe we deze kunnen ontwikkelen in een microservicesarchitectuur.

Fabrikam heeft onlangs de droneservice toegevoegd aan hun bestaande toepassing.

In deze oefening implementeren we een monolithische toepassing in Azure App Service en stellen we Azure Monitor in staat om inzicht te krijgen in telemetrie en toepassingsprestaties.

Visualisatie van de resources voor de droneleveringstoepassing.

Een monolithische toepassing implementeren in Azure App Service

Laten we beginnen met het implementeren van de toepassing. Eerst moeten we de Azure-resources maken om de toepassing te hosten.

  1. Voer de volgende opdracht uit om de resources te implementeren die nodig zijn voor deze toepassing. Deze implementatie duurt enkele minuten.

    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 de resources zijn gemaakt, gaan we de toepassing implementeren. Voer eerst de volgende opdracht uit om de broncode uit de voorbeeldopslagplaats op te halen.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Voer het volgende commando uit om de toepassingscode in te pakken, die we gebruiken om te implementeren in de appservice.

    zip -r DroneDelivery-before.zip .
    
  4. Voer de volgende opdracht uit om een variabele in te stellen met de naam van uw app-service.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Voer de volgende opdracht uit om de app-service te configureren voor het uitvoeren van een build als onderdeel van de implementatie.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. Voer nu de volgende opdracht uit om de toepassing in App Service te implementeren. Het duurt enkele minuten voordat deze implementatie is voltooid.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. Nadat de implementatie is voltooid, controleert u of de implementatie is geslaagd door naar de website van uw app-service te gaan. Voer de volgende opdracht uit om de URL op te halen en selecteer deze om de pagina te openen.

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

    Schermopname van de Drone Delivery-website.

Een belastingstest uitvoeren op basis van de toepassing

Nu gaan we de prestaties van de toepassing testen in de monolithische architectuur.

  1. Selecteer op de startpagina voor uw geïmplementeerde toepassing Aanvragen verzenden. Met deze actie wordt het verzenden van 100 aanvragen via de toepassing gesimuleerd.

  2. Voor de eerste aanvraag ziet u een resultaat van ongeveer 8 tot 12 seconden om 100 berichten te verwerken. Als u de pagina vernieuwt en opnieuw verzendt als daarom wordt gevraagd, kan dit getal met ongeveer de helft verminderen. Het duurt nog ongeveer vijf seconden per aanvraag.

    Schermopname van de Drone Delivery-website na het uitvoeren van de prestatietest.

Fabrikam vermoedt dat de monolithische architectuur verhindert dat intensief gebruikte services worden geschaald, wat hier tot slechte prestaties leidt.