Windows Azure : Familiarisation avec l'environnement d'exécution

Il y a beaucoup à apprendre en termes de développement d'applications pour une nouvelle plateforme comme Windows Azure. Voici le récit étape par étape de l'expérience d'un développeur.

Jose Barreto

J'ai récemment appris à développer, tester et déployer une application Windows Azure. J'avais beaucoup entendu parler de Windows Azure et avais consulté les nombreuses expériences d'autres personnes, mais je souhaitais avoir ma propre expérience pratique et savoir si ce qui avait été dit était vrai. Ne manquait plus que l'arrivée de la version Visual Studio 2010 pour débuter.

Dans cet article, je décris comment j'ai créé et déployé un exemple d'application. Il s'agit d'un moyen toujours sympathique de faire connaissance avec une nouvelle technologie et cela m'a forcé à faire l'expérience du cycle entier d'une application dans Windows Azure.

Mon expérimentation a été facilitée par le fait que j'avais auparavant développé des applications ASP.NET, puisqu'une application Windows Azure suit la même architecture, avec des rôles Web (sites Web frontaux) et des rôles worker (services principaux). L'outil principal permettant de développer des applications Windows Azure et des applications ASP.NET normales est également le même : Visual Studio. J'avais déjà installé la version finale de Visual Studio 2010 sur mon ordinateur sous Windows 7 et j'avais également ajouté IIS comme composant optionnel de Windows 7.

Outre Visual Studio 2010 et IIS, j'avais également téléchargé les outils Windows Azure Tools qui ont ajouté des modèles supplémentaires pour le développement de Windows Azure. Mieux comprendre l'environnement dans lequel les applications Windows Azure s'exécutent m'intéressait aussi. Je sais qu'en général il s'agit de machines virtuelles qui doivent bien fonctionner pour vos applications quels que soient les détails de leur configuration spécifique, mais je voulais savoir comment Windows Azure les avait déployées. Comme toute personne formée aux infrastructures informatiques, cela m'intéresse toujours d'apprendre à quoi ressemble la face cachée de ce type de déploiement.

Pour y parvenir, j'ai décidé d'écrire une application qui me donnerait des informations sur le système de fichiers de la machine sur laquelle elle fonctionne, des choses simples telles que les lecteurs existants et leurs caractéristiques (type, système de fichiers, taille totale et espace disponible). J'ai également ajouté la capacité de lancer des requêtes sur les dossiers et fichiers, de manière à comprendre ce qui se trouve à quel endroit. La figure 1 montre ce que j'ai obtenu comme résultats.

Figure 1 A sample file system report application created in Windows Azure.

Figure 1 Exemple d'application de rapport de système de fichiers créée dans Windows Azure.

Rien de bien compliqué, comme vous pouvez le voir. Juste assez pour comprendre l'expérience de développement, parcourir le processus de déploiement et connaître les outils permettant de comprendre l'environnement d'exploitation de Windows Azure.

C# pour le nuage

La création de l'application s'est avérée plutôt simple. J'ai créé un nouveau projet à l'aide de C# et sélectionné le projet en nuage. Pour faire simple, j'ai utilisé un seul rôle Web ASP.NET pour mon projet de service en nuage.

Puis j'ai fait glisser des commandes, ajouté du code et commencé à le tester. L'ensemble du processus de développement s'exécutant localement, nul besoin de disposer d'un compte Windows Azure à ce stade. Je n'utilisais également pas de Stockage Windows Azure. Il s'agissait donc d'un simple rôle Web sans dépendance externe. Évidemment, cette application n'est pas particulièrement utile, mais mon objectif était de créer quelque chose comme un grand « Hello, World » pour commencer.

Puisque je disposais de tout Microsoft .NET Framework, écrire le code a vraiment été très simple. Par exemple, pour obtenir les informations sur le disque, j'ai utilisé System.IO namespace.

protected void btnDrives_Click(object sender, EventArgs e)
 {
   DriveInfo[] diAll = DriveInfo.GetDrives();
   string strDrive = "";
   foreach (DriveInfo diOne in diAll)
    {
       strDrive = "Drive " + diOne.Name + " Type:" + diOne.DriveType.ToString();
      if (diOne.IsReady)
       {
          strDrive = strDrive + " Volume:" + diOne.VolumeLabel + " FS:" + diOne.DriveFormat.ToString() + " Total:" + diOne.TotalSize.ToString() + " Free:" + diOne.AvailableFreeSpace.ToString();
       }
       txtAdd(strDrive);
    }
 }

Outre le fait que j'ai dû exécuter Visual Studio en tant qu'administrateur, il ne s'est pas passé grand-chose en termes de développement et de débogage local de l'application. Visual Studio a automatiquement démarré l'environnement de simulation local de Windows Azure lorsque j'ai lancé mon application (voir Figure 2). J'ai pu définir des points d'arrêt, regarder mon code s'exécuter étape par étape, etc. Aucune surprise.

Figure 2 Here’s how my application looked when it ran through the Windows Azure Simulation Environment.

Figure 2 Voici à quoi ressemblait mon application lorsqu'elle s'est exécutée dans l'environnement de simulation de Windows Azure.

Déploiement des applications Azure

La partie peut-être la plus difficile pour moi, en tant que débutant sur Windows Azure, était de savoir exactement de quoi j'avais besoin pour déployer mon application. Une fois votre service créé sur l'interface utilisateur Web de Windows Azure, vous pouvez déployer l'application.

Lorsque vous cliquez sur le bouton Déployer, vous êtes invité à fournir deux fichiers (un fichier de package d'application et un fichier de paramètres de configuration), ainsi qu'un nom de déploiement du service. C'est à peu près tout ce que je peux donner comme conseils sur la manière de les générer.

Même en passant du temps dans l'environnement Visual Studio, je n'ai pas pu trouver la bonne façon de créer ces fichiers ou même quelles seraient leurs extensions. J'ai alors dû parcourir la documentation de Windows Azure pour la première fois. Jusqu'à ce stade, je m'étais contenté de la survoler. Il s'avère en fait qu'il suffit de cliquer avec le bouton droit sur le projet en nuage pour trouver l'option « Publier… » pour générer un package pour Windows Azure.

Cette manipulation créera les deux fichiers requis, un package du service en nuage (.cspkg) et un fichier de configuration du service en nuage (.cscfg). L'option « Publier… » ouvre une fenêtre de l'explorateur Windows dans le bon dossier (voir Figure 3) et une fenêtre Internet Explorer contenant l'URL Windows Azure correcte.

Figure 3 The Windows Explorer window opened from the “Publish-…” option.

Figure 3 La fenêtre de l'explorateur Windows s'est ouverte depuis l'option « Publier… ».

Une fois que j'ai pu fournir tout ce qui était demandé, le service a été publié en quelques secondes. Ensuite, cliquer sur « Exécuter » a déployé l'application. C'est à ce moment que la machine virtuelle (VM, Virtual Machine) contenant l'application en cours d'exécution devient réellement provisionnée et lancée. Cette opération prend quelques minutes.

Exécution du service

L'état du service est passé de « Initialisation » à « Occupé », puis « Prêt ». Ensuite, le déploiement s'est terminé et pour exécuter le service, il a simplement fallu ouvrir l'URL du site Web sur http://servicename.cloudapp.net.

J'étais enfin prêt à inspecter certaines des caractéristiques de la VM de Windows Azure qui exécute mon service. Tout d'abord, j'ai fait la liste des lecteurs du système. Il se trouve que la VM présente trois lecteurs (C:, D: et E:) comme démontré sur la figure 1. J'ai ensuite utilisé l'application pour jeter un œil aux dossiers et fichiers de chaque lecteur. Après plus d'investigation, je suis parvenu à une conclusion au sujet de ces trois lecteurs différents, indiquée à la figure 4.

Figure 4 Voici comment le stockage a été analysé sur les trois lecteurs.

J'ai bien trouvé la documentation concernant la quantité de stockage pouvant être spécifiée par VM. La taille par défaut (petite) vous offre 250 Go de stockage local. Il s'agissait de la taille de ma VM. Vous pouvez en choisir des plus grandes (500 Go, 1000 Go et 2000 Go) de stockage local.

Cela étant, je n'ai pas trouvé de documentation de cette division entre les trois lecteurs (ni aucune documentation sur les trois lecteurs, point à la ligne). Tout ce que je peux vous dire, c'est que les chiffres de la figure 4 étaient vrais pour le déploiement de mon application spécifique à ce moment.

Si vous prévoyez d'utiliser un stockage local temporaire de votre application, vous devriez jeter un œil à la documentation des ressources de stockage local. Ces ressources de stockage local sont visiblement abritées sur le lecteur C: mais vous devez utiliser l'API afin de trouver le chemin local exact à employer.

Si vous avez besoin d'un stockage permanent, vous devriez regarder les nombreuses options offertes par Windows Azure, notamment les objets Blob, les tables, les files d'attente, les lecteurs et les bases de données SQL Azure. Vous pouvez y accéder via les API et elles ne sont pas stockées dans le stockage local de votre VM Windows Azure.

Test des éléments essentiels

Une dernière chose que j'ai trouvée intéressante était le processus visant à déployer des versions supplémentaires de l'application. Windows Azure vous permet de placer la nouvelle version dans une zone de « test » séparée. Ceci permet d'exécuter et de tester la nouvelle version de test grâce à une URL temporaire, tandis que la version plus ancienne s'exécute toujours depuis l'URL principale.

Lorsque vous pensez que la version est bonne, vous pouvez simplement inverser les environnements de test et de production. Cela se réalise rapidement, car les deux environnements sont totalement déployés à ce stade et il vous suffit d'inverser les deux URL. Si votre nouvelle version s'avère présenter des problèmes, vous pouvez également revenir rapidement à l'ancienne version.

Package pour le nuage

Si vous connaissez bien ASP.NET, la création d'applications Windows Azure ne demande pas beaucoup plus de travail une fois que vous avez compris quelques concepts supplémentaires. J'ai beaucoup appris sur la manière dont les packages des applications de Windows Azure sont créés et j'ai également compris les étapes de déploiement plus en détails.

J'ai été heureux de mon expérimentation de déploiement de ma première application Windows Azure et en ai appris plus sur l'exécution de Windows Azure dans le même temps. J'ai également compris plus de choses sur les différents lecteurs utilisés par les VM de Windows Azure et j'ai également pu comprendre les détails du déploiement de la VM plus en détails. Il n'est pas nécessaire de comprendre ces détails pour déployer vos applications, mais un développeur est toujours plus à l'aise une fois qu'il a compris ce qui se trouve à l'intérieur.

Jose Barreto Photo

Jose Barreto* est un des responsables principaux des programmes de l'équipe Serveurs de fichiers, qui fait partie de la division Microsoft Server and Cloud. Diplômé d'Informatique de l'Universidade Federal do Ceara au Brésil en 1989, il est arrivé aux États-Unis en 2000. M. Barreto a rejoint Microsoft en 2002 en Californie et est arrivé sur le campus de Redmond en 2007.*

Contenu associé