Exercice : Mettre manuellement à l’échelle une application web
Vous devez procéder au scale-out d’un système quand vous vous attendez à une augmentation du trafic. Vous pouvez aussi effectuer un scale-out en réponse à une baisse des performances.
Dans l’exemple du système de réservation hôtelière, vous augmentez le nombre d’instances de l’application web en anticipation d’une hausse du trafic liée à un événement particulier, une offre spéciale ou des variations saisonnières. Vous avez ensuite effectué l’opération inverse quand la demande a diminué.
Dans cet exercice, vous créez un plan App Service et déployez une application web avec ce plan. Vous supervisez les performances de l’application web soumise à une charge. Vous effectuez ensuite un scale-out de l’application et vérifiez que le plan a amélioré ses performances.
L’exercice s’appuie sur un exemple d’application web qui implémente une API web. L’API web expose les opérations HTTP POST et GET qui créent et récupèrent les réservations des clients pour un site web de réservation hôtelière. Les réservations ne sont pas enregistrées. L’opération GET récupère juste les données factices.
L’exercice exécute aussi une application cliente qui simule l’exécution simultanée d’opérations POST et GET par plusieurs utilisateurs. Cette application fournit la charge de travail que vous utilisez pour tester les performances de l’application web avant et après la mise à l’échelle.
Créer un plan App Service et une application web
Important
Vous avez besoin de votre propre abonnement Azure pour exécuter cet exercice et des frais pourraient vous être facturés. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Connectez-vous au portail Azure.
Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource. Le volet Créer une ressource apparaît.
Dans le volet du menu de gauche, sous Catégories, sélectionnez Web, recherchez et sélectionnez Application web, puis sélectionnez Créer. Le volet Créer une application web s’affiche.
Sous l’onglet Informations de base, entrez les valeurs suivantes pour chaque paramètre.
Notes
Le nom de l’application web doit être unique. Nous vous suggérons d’utiliser quelque chose comme <votre nom ou vos initiales>hotelsystem. Utilisez ce nom partout où vous voyez
<your-webapp-name>
dans cet exercice.Paramètre Valeur Détails du projet Abonnement Sélectionnez l’abonnement Azure que vous souhaitez utiliser pour cet exercice Groupe de ressources Sélectionnez le lien Créer, puis entrez un nouveau groupe de ressources appelé mslearn-scale Détails de l’instance Nom Voir la Remarque avant le tableau. Entrez un nom unique facile à mémoriser parce que vous en aurez besoin plus loin dans cet exercice. Publier Code Pile d’exécution .NET 6 (LTS) Système d'exploitation Windows Région Accepter les valeurs par défaut Plan App Service Plan Windows Accepter les valeurs par défaut Plan tarifaire Accepter les valeurs par défaut Sélectionnez Vérifier + créer>Créer. Attendez que l’application web soit créée et déployée.
Générer et déployer l’application web
Dans la barre des tâches Azure, sélectionnez l’icône Cloud Shell pour ouvrir Azure Cloud Shell, puis exécutez la commande suivante pour télécharger le code source du système de réservation d’hôtel.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Accédez au dossier mslearn-hotel-reservation-system/src.
cd mslearn-hotel-reservation-system/src
Générez les applications pour le système hôtelier. Il y a deux applications : une application web qui implémente l’API web pour le système et une application cliente que vous utilisez pour tester l’application web en condition de charge.
dotnet build
Préparez l’application web HotelReservationSystem pour la publication.
cd HotelReservationSystem dotnet publish -o website
Accédez au dossier website, qui contient les fichiers publiés. Compressez les fichiers et déployez-les dans l’application web que vous avez créée dans la tâche précédente. Copiez le code suivant dans le Bloc-notes et remplacez
<your-webapp-name>
par le nom de votre application web, puis collez le bloc de code modifié dans Cloud Shell et exécutez-le.cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
Accédez à
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
dans votre navigateur web. Un document JSON apparaît et contient les détails de la réservation numéro 1.
Superviser les performances de l’application web avant le scale-out
Revenez à Cloud Shell et accédez au dossier ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient.
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
Modifiez le fichier App.config dans ce dossier à l’aide de l’éditeur de code.
code App.config
Décommentez la ligne qui spécifie
ReservationsServiceURI
et remplacez la valeur YOUR WEBSITE NAME par le nom de votre application web. Ce fichier doit se présenter comme cet exemple.<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="NumClients" value="100" /> <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" /> <add key="ReservationsServiceCollection" value="api/reservations" /> </appSettings> </configuration>
Notes
Le paramètre
NumClients
de ce fichier spécifie le nombre de clients qui peuvent se connecter simultanément à l’application web et d’effectuer une tâche. Le travail consiste à créer une réservation, puis à exécuter une requête pour extraire les détails de la réservation. Toutes les données utilisées sont factices. Elles ne sont conservées nulle part. Gardez la valeur100
.Enregistrez le fichier en sélectionnant Ctrl+S.
Modifiez le fichier HotelReservationSystemTestClient.csproj dans ce dossier en utilisant l’éditeur de code.
code HotelReservationSystemTestClient.csproj
Modifiez la ligne qui spécifie
TargetFramework
afin qu’elle corresponde à la pile d’exécution que vous avez sélectionnée pour votre application web. Remplacez la valeurTargetFramework
parnetcoreapp7.0
. Ce fichier doit se présenter comme cet exemple.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp7.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" /> </ItemGroup> </Project>
Enregistrez le fichier en sélectionnant Ctrl+S, puis fermez l’éditeur de code en appuyant sur Ctrl+Q.
Regénérez l’application cliente de test avec la nouvelle configuration.
dotnet build
Exécutez l’application cliente. Vous voyez plusieurs messages apparaître quand les clients commencent à se connecter, font des réservations et exécutent des requêtes. Laissez le système s’exécuter pendant quelques minutes. Les réponses sont lentes et les requêtes client commencent à échouer avec des erreurs HTTP 408 (dépassement du délai d’attente).
dotnet run
Dans le portail Azure, sélectionnez Accéder à la ressource pour ouvrir votre application web.
Dans le volet du menu de gauche, sélectionnez Supervision, puis sélectionnez Métriques.
À droite de la barre de menus du volet de votre application web, sélectionnez Heure locale : 24 dernières heures (automatique), sélectionnez 30 dernières minutes, puis sélectionnez Appliquer.
Dans le volet, sous Titre du graphique, ajoutez les métriques suivantes au graphique :
- Sélectionnez Ajouter une métrique et, dans la liste déroulante Métrique, sélectionnez Temps UC. Pour Agrégation, sélectionnez Somme.
- Sélectionnez Ajouter une métrique et, dans la liste déroulante Métrique, sélectionnez Erreurs de serveur HTTP. Pour Agrégation, sélectionnez Somme.
- Sélectionnez Ajouter une métrique et, dans la liste déroulante Métrique, sélectionnez HTTP 4xx. Pour Agrégation, sélectionnez Somme.
- Sélectionnez Ajouter une métrique et, dans la liste déroulante Métrique, sélectionnez Délai de réponse. Sous Agrégation, sélectionnez Moy.
Dans la barre de menus de droite, sélectionnez Épingler au tableau de bord. Le volet Épingler au tableau de bord s’affiche. Sélectionnez l’onglet Créer.
Dans la liste déroulante Nom du tableau de bord, entrez le nom de votre application web, puis sélectionnez Créer et épingler.
Laissez le système s’exécuter pendant cinq minutes le temps qu’il se stabilise et notez le temps processeur, le nombre d’erreurs HTTP 4xx et le temps de réponse moyen. Vous devriez voir un nombre significatif d’erreurs HTTP 4xx. Ces erreurs sont des erreurs HTTP 408 de dépassement de délai d’attente. Le temps de réponse moyen est de plusieurs secondes. Une erreur de serveur HTTP peut occasionnellement se produire si le serveur a du mal à supporter la charge de travail.
Laissez l’application cliente s’exécuter pendant que vous effectuez la tâche suivante.
Effectuer le scale-out de l’application web et vérifier l’amélioration des performances
Dans le portail Azure, sélectionnez le nom de votre application web (App Service) et, dans le volet du menu de gauche, sous Paramètres, sélectionnez Scale-out (plan App Service). Le volet Scale-out (plan App Service) s’affiche.
Sous l’onglet Configurer, sélectionnez Mise à l’échelle manuelle, puis définissez Nombre d’instances sur 5. Cliquez sur Enregistrer.
Basculez vers l’instance Cloud Shell qui exécute l’application cliente. Vous devriez voir une diminution du nombre de requêtes qui échouent avec des erreurs, même si certaines dépassent encore le délai d’attente.
Exécutez l’application pendant cinq minutes de plus. Ensuite, accédez ensuite au graphique où figurent les métriques de l’application dans le tableau de bord du portail Azure. Vous devriez voir une augmentation considérable du temps processeur sachant que la puissance processeur disponible est désormais cinq fois supérieure. Le temps de réponse moyen devrait baisser, tout comme le nombre d’erreurs HTTP 4xx. Le graphique suivant présente un ensemble de résultats types. Le moment où le scale-up s’est produit est indiqué.
Si vous souhaitez poursuivre vos expérimentations, essayez de faire passer le nombre d’instances du plan App Service à 10. Le nombre maximal d’instances prises en charge par le niveau S1 est de 10. Vous devriez constater une nouvelle augmentation du temps processeur ainsi qu’une baisse correspondante du temps de réponse et des erreurs HTTP 4xx.
Revenez à l’instance Cloud Shell qui exécute l’application cliente. Sélectionnez Entrée pour arrêter l’application.
Dans le portail Azure, réaffectez la valeur 1 au nombre d’instances. Sélectionnez votre application web et, dans le volet du menu de gauche, sélectionnez Scale-out (plan App Service). Sous l’onglet Configurer, définissez le nombre d’instances sur 1, puis sélectionnez Enregistrer.