Ćwiczenie — wdrażanie aplikacji monolitycznej w usłudze App Service

Ukończone

Omówiliśmy nieco architektury monolityczne i mikrousługi. Teraz wdrożymy aplikację monolityczną i przyjrzyjmy się bliżej sposobom jej rozwoju w architekturę mikrousług.

Fabrikam niedawno dodała usługę dronów do istniejącej aplikacji.

W tym ćwiczeniu wdrożymy aplikację monolityczną w usłudze Azure App Service i włączymy usługę Azure Monitor, aby uzyskać wgląd w dane telemetryczne i wydajność aplikacji.

Wizualizacja zasobów dla aplikacji dostarczania dronów.

Wdrażanie aplikacji monolitycznej w usłudze Azure App Service

Zacznijmy od wdrożenia aplikacji. Najpierw musimy utworzyć zasoby platformy Azure do hostowania aplikacji.

  1. Uruchom następujące polecenie, aby wdrożyć zasoby potrzebne dla tej aplikacji. To wdrożenie trwa kilka minut.

    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. Teraz, gdy mamy utworzone zasoby, wdróżmy aplikację. Najpierw uruchom następujące polecenie, aby ściągnąć kod źródłowy z przykładowego repozytorium.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Uruchom następujące polecenie, aby skompresować kod aplikacji, którego używamy do wdrożenia w usłudze App Service.

    zip -r DroneDelivery-before.zip .
    
  4. Uruchom następujące polecenie, aby ustawić zmienną o nazwie usługi aplikacji.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Uruchom następujące polecenie, aby skonfigurować usługę app service do uruchamiania kompilacji w ramach wdrożenia.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. Teraz uruchom następujące polecenie, aby wdrożyć aplikację w usłudze App Service. Ukończenie tego wdrożenia trwa kilka minut.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. Po zakończeniu wdrażania upewnij się, że wdrożenie zakończyło się pomyślnie, odwiedzając witrynę internetową usługi App Service. Uruchom następujące polecenie, aby uzyskać adres URL, a następnie wybierz go, aby otworzyć stronę.

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

    zrzut ekranu witryny internetowej Drone Delivery.

Wykonywanie testu obciążeniowego względem aplikacji

Teraz przetestujmy wydajność aplikacji w architekturze monolitycznej.

  1. Na stronie głównej wdrożonej aplikacji wybierz pozycję Wyślij żądania. Ta akcja symuluje przesyłanie 100 żądań za pośrednictwem aplikacji.

  2. Dla pierwszego żądania zobaczysz wynik wynoszący około 8 do 12 sekund na przetworzenie 100 komunikatów. Jeśli odświeżysz stronę i ponownie wyślesz, jeśli zostaniesz o to poproszony, ta liczba może spaść o około połowę. Nadal trwa około pięciu sekund na każde żądanie.

    zrzut ekranu witryny internetowej Drone Delivery po uruchomieniu testu wydajnościowego.

Firma Fabrikam podejrzewa, że architektura monolityczna uniemożliwia skalowanie intensywnie używanych usług, co prowadzi do niskiej wydajności widocznej tutaj.