Übung: Bereitstellen einer monolithischen Anwendung in App Service
Wir haben ein wenig über monolithische Architekturen und Microservice-Architekturen gesprochen. Eine monolithische Anwendung wird nun bereitgestellt, und es wird tiefer darauf eingegangen, wie sie in eine Microservicesarchitektur weiterentwickelt werden kann.
Fabrikam hat kürzlich den Drohnendienst zur vorhandenen Anwendung hinzugefügt.
In dieser Übung wird eine monolithische Anwendung in Azure App Service bereitgestellt und Azure Monitor aktiviert, um Einblicke in die Telemetriedaten und Anwendungsleistung zu gewinnen.
Bereitstellen einer monolithischen Anwendung in Azure App Service
Wir beginnen mit der Bereitstellung der Anwendung. Zuerst müssen wir die Azure-Ressourcen zum Hosten der Anwendung erstellen.
Führen Sie den folgenden Befehl aus, um die erforderlichen Ressourcen für diese Anwendung bereitzustellen. Die Bereitstellung nimmt einige Minuten in Anspruch.
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
Nachdem wir nun die Ressourcen erstellt haben, können wir die Anwendung bereitstellen. Führen Sie zuerst den folgenden Befehl aus, um den Quellcode aus dem Beispielrepository abzurufen.
git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture cd ~/mslearn-microservices-architecture/src/before
Führen Sie den folgenden Befehl aus, um den Anwendungscode zu zippen, den wir für die Bereitstellung in App Service verwenden.
zip -r DroneDelivery-before.zip .
Führen Sie den folgenden Befehl aus, um eine Variable mit dem Namen Ihrer App Service-Instanz festzulegen.
APPSERVICENAME="$(az webapp list \ --resource-group "<rgn>[sandbox resource group]</rgn>" \ --query '[].name' \ --output tsv)"
Führen Sie den folgenden Befehl aus, um die App Service-Instanz zum Ausführen eines Builds als Teil der Bereitstellung zu konfigurieren.
az webapp config appsettings set \ --resource-group "<rgn>[sandbox resource group]</rgn>" \ --name $APPSERVICENAME \ --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
Führen Sie jetzt folgenden Befehl aus, um die Anwendung in App Service bereitzustellen. Es dauert einige Minuten, bis diese Bereitstellung abgeschlossen ist.
az webapp deploy \ --resource-group "<rgn>[sandbox resource group]</rgn>" \ --name $APPSERVICENAME \ --src-path DroneDelivery-before.zip
Nachdem die Bereitstellung abgeschlossen ist, überprüfen Sie, ob diese erfolgreich war, indem Sie die Website Ihrer App Service-Instanz besuchen. Führen Sie zum Abrufen der URL den folgenden Befehl aus, und klicken Sie darauf, um die Seite zu öffnen.
echo https://$(az webapp config hostname list \ --resource-group "<rgn>[sandbox resource group]</rgn>" \ --webapp-name $APPSERVICENAME \ --query [].name \ --output tsv)
Ausführen eines Auslastungstests für die Anwendung
Nun wird die Leistung der Anwendung in der monolithischen Architektur getestet.
Wählen Sie auf der Startseite für die bereitgestellte Anwendung die Schaltfläche Anforderungen senden aus. Mit dieser Aktion wird die Übermittlung von 100 Anforderungen über die Anwendung simuliert.
Für die erste Anforderung wird ein Ergebnis von ungefähr 8 bis 12 Sekunden für die Verarbeitung von 100 Nachrichten angezeigt. Wenn Sie die Seite aktualisieren und bei Aufforderung erneut übermitteln, wird diese Zahl möglicherweise um ungefähr die Hälfte zurückgehen. Es dauert immer noch etwa fünf Sekunden pro Anforderung.
Fabrikam vermutet, dass die monolithische Architektur die Skalierung viel verwendeter Dienste verhindert, was zu dieser schlechten Leistung führt.