Partager via


Au cœur de Windows Azure

Sites Web Windows Azure : Hébergement simple et rapide sous forme de service

Bruno Terkaly
Ricardo Villalobos

Bruno Terkaly and Ricardo VillalobosLes sites Web Windows Azure (WAWS) sont une fonctionnalité exceptionnelle de la plateforme de cloud Microsoft. Il s'agit d'un service qui repose sur l'infrastructure PaaS (Platform as a Service, plateforme en tant que service) de Windows Azure qui simplifie les tâches de déploiement, de gestion et d'évolutivité associées aux applications cloud d'hébergement. Si cela vous fait penser que WAWS n'est qu'une autre solution d'hébergement portée aux nues, vous pouvez revoir votre position. Ces sites Web se différencient en effet par leur niveau d'évolutivité et leur disponibilité élevée, soutenus par plusieurs centres de données dans le monde entier et des mécanismes de basculement hérités des composants PaaS. De plus, la plateforme Windows Azure offre de nombreuses fonctionnalités et capacités supplémentaires outre WAWS, ce qui permet aux développeurs d'adapter leurs applications à l'évolution de leurs besoins. Il s'agit notamment de la prise en charge de données volumineuses, de l'identité, des services mobiles, etc.

Modèles de déploiement des centres de données

La taxinomie de la figure 1 illustre les différents modèles associés au déploiement d'une application Web dans un centre de données public. Le nombre de couches déléguées à la plateforme ou au fournisseur nous permet de différencier les termes IaaS (Infrastructure as a Service, infrastructure en tant que service), PaaS (Platform as a Service, plateforme en tant que service) et Saas (Software as a Service, logiciel en tant que service).

Taxonomy for Cloud Deployment Models
Figure 1 Taxinomie des modèles de déploiement cloud

Plus vous déléguez de couches au fournisseur, plus il devient facile de déployer une solution en ligne, bien que le niveau de personnalisation baisse généralement pour les couches déléguées. Windows Azure offre des modèles de déploiement IaaS et PaaS qui, combinés à d'autres services, permettent aux entreprises de créer des architectures de cloud sophistiquées et hautement évolutives. En tenant compte de ces informations, où plaçons-nous WAWS ?

Pourquoi vous allez adorer les sites Web Windows Azure

Comme je l'ai déjà mentionné, WAWS repose sur l'infrastructure PaaS de Windows Azure, ce qui signifie que vous devez uniquement vous préoccuper de la gestion de l'application et des couches de données de la pile de déploiement. Ce service se distingue du modèle PaaS classique offert par Windows Azure essentiellement en raison des tâches de déploiement et de configuration qui sont extrêmement simplifiées. Ceci est rendu possible grâce au processus de mise en service qui sous-tend WAWS. Il s'agit en effet d'une combinaison de rôles de travail, d'objets BLOB (Binary Large Object) et de bases de données relationnelles.

La figure 2 montre l'architecture qui prend en charge les sites Web Windows Azure. Cette approche élégante et solide fournit un environnement mutualisé destiné à l'hébergement des applications Web. Son fonctionnement est simple :

  1. Un client effectue une requête auprès de l'hôte http://foo.azurewebsites.net.
  2. Cette requête est soumise à l'équilibrage de la charge réseau Windows Azure et atteint le déploiement approprié.
  3. Le module ARR (Application Request Routing) obtient des informations sur foo.com auprès de la base de données d'exécution, détermine quels serveurs Web doivent héberger ou hébergent actuellement le site Web et transfère la requête au site correspondant.
  4. Cette requête est traitée par le serveur Web aidé du contrôleur de stockage pour atteindre l'instance spécifique de SQL Server lorsque les données sont lues ou écrites.
  5. Une fois que la requête a été traitée, une réponse est renvoyée au client.

Windows Azure Web Sites Under the Hood
Figure 2 Fonctionnement interne des sites Web Windows Azure

À l'intérieur de chaque serveur Web, plusieurs processus ou sites W3WP.exe sont hébergés, surveillés par un processus spécifique qui supervise la consommation de ressources, les erreurs et la journalisation. De plus, le service d'activation Web dynamique est chargé de l'activation et de la désactivation des sites, de l'application des quotas et du déploiement des fichiers d'application. Deux composants supplémentaires viennent compléter le tableau : les serveurs de déploiement hébergent les moteurs FTP et Web Deploy, tandis que la partie frontale de l'API offre une interface à des fins d'automatisation.

Cette architecture permet une expérience de déploiement presque instantanée, avec la possibilité d'effectuer des ajustements lorsque cela s'avère nécessaire.

Il existe un grand nombre de bonnes raisons d'envisager l'utilisation de WAWS. Tout d'abord, ce service propose une forte prise en charge du balisage et des scripts côté client, dont la connectivité intégrée aux bases de données SQL Server et MySQL. Cela signifie que vous n'avez pas besoin de vous soucier de l'implémentation de services Web principaux ni de la logique du serveur. Ensuite, les services Web Windows Azure présentent l'avantage de pouvoir évoluer (vers le haut et vers le bas) afin de prendre en charge les utilisateurs Web en cas de forte et de faible activité.

Étant donné que vous ne payez que ce que vous utilisez, vous pouvez offrir une expérience utilisateur réactive tout en réduisant les coûts au minimum. Le service WAWS prend également en charge des méthodologies de développement continu afin que vous puissiez déployer directement depuis les référentiels du code source, à l'aide de Git sur un client, de GitHub, CodePlex, Bitbucket ou TFS (Team Foundation Server). Il est possible de télécharger instantanément un nouveau code ou d'effectuer une intégration continue avec un référentiel en ligne. Grâce à son modèle de mise en service, le service WAWS offre une prise en charge intégrée de WordPress, Joomla!, Drupal, DotNetNuke, Umbraco, etc. Ces modèles sont classés par catégories dans la galerie WAWS et comprennent des blogs, des systèmes de gestion de contenu, des sites de commerce électronique, des forums et des Wikis.

Qu'en est-il réellement ?

Lorsqu'une technologie simplifie un problème, cela implique toujours quelques compromis. Par exemple, WAWS ne prend pas en charge l'environnement intermédiaire pour les tests, ni l'isolement réseau pour établir une passerelle entre les applications de cloud avec des réseaux locaux (dont Windows Azure Connect ou les réseaux virtuels Windows Azure). Toutefois, les utilisateurs peuvent choisir d'utiliser Service Bus Relay afin de combler le fossé entre les ressources d'entreprise. En outre, vous ne pouvez pas exécuter de bureau à distance pour les instances de calcul ni lancer une tâche de démarrage en cours de déploiement. Malgré ces inconvénients, WAWS reste une solution parfaite pour le développement et le déploiement des applications Web qui n'ont pas besoin d'un niveau de personnalisation élevé.

Exemple pratique

Nous allons maintenant suivre un didacticiel simple. Au fur et à mesure, vous commencerez à comprendre que vous disposez déjà de toutes les informations concernant le cloud. Vous pouvez vous concentrer sur la création de votre application Web et de ses données comme vous l'avez toujours fait. Le service vous libère des détails liés à la migration vers le cloud et vous pouvez ainsi connaître une expérience de déploiement sans heurts. Vous pouvez même écrire le code ASP classique que vous avez créé en 1996 et l'exécuter dans WAWS.

Nous explorerons les éléments de base du service WAWS en créant une application ASP.NET MVC 4 simple mais pratique à l'aide de SQL Server comme serveur principal. Cette application simple prendra en charge les opérations CRUD de création, lecture, mise à jour et suppression, et elle ne nécessitera que peu de code. Une fois la mise en service de WAWS et la création de l'application ASP.NET MVC 4 terminées, nous procéderons au déploiement à l'aide de Web Deploy depuis Visual Studio 2012. Seule la base de données SQL aura un coût puisque l'exécution de l'application ASP.NET MVC 4 dans WAWS est gratuite. Vous pouvez exécuter jusqu'à 10 sites gratuitement sans aucune date d'expiration.

Démarrer Visual Studio et créer un projet MVC

Commencez par ouvrir Visual Studio 2012 en tant qu'administrateur, puis cliquez sur Fichier | Nouveau | Projet. Choisissez Web parmi les Modèles installés, puis sélectionnez Application Web ASP.NET MVC 4. Nommez le projet MVCAzure.Website, puis cliquez sur OK (voir la figure 3). Vous devrez ensuite sélectionner un modèle de projet. Choisissez Application Internet pour cet exemple. Le moteur de vue sera Razor.

Creating a New ASP.NET MVC 4 Web Application Project
Figure 3 Création d'un projet d'application Web ASP.NET MVC 4

Code First

Une approche Code First signifie que les classes créées dans Visual Studio définiront les tables sous-jacentes dans SQL Server. Dans une application ASP.NET MVC 4, cela signifie que nous ajouterons certains modules de classe sous le dossier Modèles dans l'Explorateur de solutions Visual Studio, comme illustré à la figure 4. Les propriétés définies dans les modules de classe deviendront des structures de table de base de données SQL. Cette approche est productive car vous n'avez pas à vous soucier du mappage des objets C#/Visual Basic aux structures de données relationnelles. Nous utiliserons Entity Framework afin de simplifier ce mappage relationnel objet. Entity Framework est un mappeur relationnel objet qui simplifie énormément l'interaction avec une base de données relationnelle. Il vous permet d'effectuer des opérations CRUD avec des objets au lieu d'avoir des instructions SQL complexes.

Adding a Class to the Models Folder
Figure 4 Ajout d'une classe au dossier Modèles

Commencez par sélectionner le dossier Modèles dans l'Explorateur de solutions. Dans le menu Projet, sélectionnez Ajouter une classe. Nommez cette classe Person. Collez les propriétés suivantes dans la classe Person (ces propriétés deviendront les colonnes d'une table Person dans SQL Server) :

public class Person
{
  public int PersonID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

Les applications ASP.NET MVC 4 ont besoin d'une classe de contrôleur qui joue le rôle de passerelle entre la vue et le modèle. Vous pouvez considérer que la vue est l'interface utilisateur et le modèle, les données. Grâce à l'ajout d'un contrôleur, Visual Studio génère automatiquement les classes de vue nécessaires.

Toutefois, avant d'ajouter la classe de contrôleur, vous devez créer la solution de façon à ce que le projet ajoute les informations de type appropriées nécessaires lors d'étapes ultérieures. Dans le menu Générer, choisissez Générer la solution. Dans l'Explorateur de solutions, vous pouvez cliquer avec le bouton droit de la souris sur le dossier Contrôleurs, puis choisir Ajouter | Contrôleur. La boîte de dialogue d'ajout d'un contrôleur illustrée à la figure 5 apparaît et vous devez définir les opérations de vue de structure avec les valeurs suivantes :

  1. Dans la liste déroulante Modèle, sélectionnez l'option Contrôleur avec actions et vues en lecture/écriture, qui utilise Entity Framework.
  2. Dans la liste déroulante Classe de modèle, sélectionnez la classe Person.
  3. Dans la liste Classe du contexte de données, sélectionnez <Nouveau contexte de données...>. Dans la boîte de dialogue qui s'affiche, définissez le nom sur PersonContext, puis cliquez sur OK.
  4. Dans la liste déroulante Vues, vérifiez que Razor est sélectionné.
  5. Cliquez sur Ajouter pour terminer le processus.

Adding an MVC Controller ClassFigure 5 Ajout d'une classe de contrôleur MVC

L'ajout du contrôleur au projet a généré toute la structure Web nécessaire afin que les opérations CRUD puissent être effectuées par rapport à une base de données SQL Server, ce qui entraîne l'ajout de plusieurs fichiers, comme illustré à la figure 6. Si vous ouvrez la classe PersonController, vous pourrez voir toutes les méthodes d'action qui prennent en charge les opérations de création, modification, suppression et liste.

Figure 6 Fichiers ajoutés

Dossier Contrôleur PersonController.cs
Dossier Modèles

Person.cs

PersonContext.cs

Dossier Vues/Person

Create.cshtml

Delete.cshtml

Details.cshtml

Edit.cshtml

Index.cshtml

L'étape suivante : le déploiement

Comme je l'ai déjà mentionné, vous pouvez déployer des sites Web à l'aide d'infrastructures de distribution continue, par exemple Git ou TFS, ou d'outils simples tels que FTP ou Web Deploy. Dans cet article, nous utiliserons Web Deploy à partir de Visual Studio, mais vous trouverez des informations sur les autres technologies de déploiement dans le Kit de formation Windows Azure (bit.ly/Wb0EKZ).

La première étape consiste à se connecter au portail de gestion de Windows Azure. Pour cela, inscrivez-vous à une version d'essai de 90 jours sur bit.ly/azuretestdrive. Une fois votre compte configuré, connectez-vous avec cette URL : manage.windowsazure.com. Cliquez ensuite sur le lien Sites Web situé à gauche de la fenêtre du navigateur. Cliquez ensuite sur NOUVEAU | CALCULER | SITE WEB | CRÉATION RAPIDE et saisissez l'URL souhaitée, comme illustré à la figure 7. Nous avons utilisé msdnmagazine, ce qui signifie que notre site sera publié sur http://msdnmagazine.azurewebsites.net. Veillez également à sélectionner une région.

Quick Provisioning of a Windows Azure Web Site DeploymentFigure 7 Mise en service rapide du déploiement d'un site Web Windows Azure

À ce stade, votre site est presque prêt à déployer votre contenu. Le processus de mise en service est extrêmement rapide. Dès que vous voyez le statut « en cours d'exécution » s'afficher, vous pouvez cliquer sur le nom du site Web et commencer à le gérer. Le portail comporte également un tableau de bord qui affiche le temps processeur, les requêtes, les données entrantes, les données sortantes et les erreurs de serveur HTTP.

Le déploiement de votre application inclut une étape fondamentale qui consiste à obtenir le fichier de profil de publication contenant les paramètres qui seront utilisés par Visual Studio pour effectuer le déploiement. Selon votre navigateur, vous aurez la capacité de télécharger le fichier de profil de publication. Enregistrez-en une copie localement afin de pouvoir l'utiliser ultérieurement depuis Visual Studio.

Configuration du serveur de base de données

Avant de pouvoir publier votre application ASP.NET MVC 4, vous devez configurer la base de données, comme illustré à la figure 8. Rappelez-vous que ce projet utilise le paradigme Code First d'Entity Framework, ce qui signifie que vous n'avez pas besoin de vous soucier de toutes les commandes de gestion des données généralement nécessaires pour créer et initialiser les structures de données relationnelles. Entity Framework s'en charge pour vous.

Adding a Server to Host SQL DatabaseFigure 8 Ajout d'un serveur à la base de données SQL hôte

Lorsque vous cliquez sur AJOUTER, il vous est demandé de saisir un nom de connexion et un mot de passe, ainsi que la région où vous souhaitez localiser le déploiement de votre base de données SQL Windows Azure. Il est fortement recommandé de sélectionner le même centre de données que celui dans lequel WAWS est exécuté afin de réduire la latence au minimum et d'éviter les frais de bande passante. Dans le cas présent, le nom de connexion est DBAdministrator. Cela aura peut-être de l'importance ultérieurement si vous souhaitez accéder à distance ou si vous devez créer une chaîne de connexion. Notez également qu'un nom de serveur a été entré (ccek4yihqf dans le cas présent). Vous pouvez cliquer sur le nom du serveur de façon à obtenir des détails supplémentaires depuis le portail (voir la figure 9).

Figure 9 Détails du serveur

Nom du serveur ccek4yihqf
État du serveur Démarré
Connexion administrateur DBAdministrator
URL https://ccek4yihqf.database.windows.net

Il est important ici de protéger les informations de votre serveur de base de données, en autorisant uniquement des adresses IP spécifiques pour les connexions entrantes. Cliquez sur Configurer en haut de l'écran. Vous verrez votre adresse IP actuelle et vous pourrez ensuite l'utiliser pour créer une règle et vous connecter au serveur directement depuis cette adresse IP.

Exécution d'un Web Deploy depuis Visual Studio

Nous sommes maintenant prêts à finaliser ce projet en le déployant et en créant simultanément une base de données sur le serveur que nous venons de mettre en service. Revenez à Visual Studio et sélectionnez Affichage | Explorateur de solutions. Cliquez avec le bouton droit sur MVCAzure.WebSite et choisissez Publier. La boîte de dialogue Publier le site Web s'affiche alors. Ce processus repose sur un assistant et la première étape consiste à charger le fichier de profil de publication dans Visual Studio, ce qui vous permet de simplifier énormément le processus de déploiement. Vous suivrez plusieurs étapes spécifiant les détails de votre profil de publication pour votre application ASP.NET MVC 4, en fournissant des informations sur le déploiement souhaité pour votre application à l'intérieur d'un centre de données Microsoft, dont l'URL de destination et l'emplacement de votre serveur de base de données SQL Windows Azure.

Vous pouvez spécifier le serveur de base de données SQL Windows Azure qui sera utilisé par votre application ASP.NET MVC 4 en cliquant tout d'abord sur Paramètres, sur le côté gauche de la boîte de dialogue, puis en cliquant sur les points de suspension en regard de PersonContext, comme illustré à la figure 10.

Configuring the Database ConnectionFigure 10 Configuration de la connexion à la base de données

Vous avez maintenant besoin des informations que vous avez reçues du portail lors de la création du serveur de base de données. Dans le cas présent, il s'agit du serveur tcp:siqxqgihiy.database.windows.net, comme illustré à la figure 11. Notez que nous avons ajouté tcp devant le nom de serveur. Vous devrez également saisir le nom de l'administrateur (nous avons entré DBAdministrator lors d'une étape précédente) et le mot de passe.

Connecting to the Server and Creating the DatabaseFigure 11 Connexion au serveur et création de la base de données

Cliquez sur OK pour créer physiquement la base de données SQL sur le serveur que vous avez entré. Vous serez invité à confirmer cette étape. Une fois la base de données créée, vous pouvez choisir Publier dans la boîte de dialogue Publier une application Web. Pour voir exactement ce qui se passe lors du déploiement, vous pouvez sélectionner Affichage | Fenêtre Sortie dans Visual Studio.

Toute l'application est désormais terminée et vous trouverez notre version sur msdnmagazine.azurewebsites.net/Person. N'oubliez pas que nous avons dû écrire très peu de code ; il nous a simplement fallu quelques minutes pour obtenir un résultat pratique et sophistiqué.

Et après le déploiement, que se passe-t-il ?

Une fois votre application déployée, il est facile d'effectuer des tâches telles que la surveillance, l'évolution ou la mise à niveau de votre site Web. La première approche consiste à utiliser le portail Windows Azure qui offre un tableau de bord facile à utiliser et auquel plusieurs appareils peuvent accéder. Depuis la version 1.8 du Windows Azure SDK, il est également possible d'automatiser certaines de ces tâches, dont la gestion des chaînes de connexion et des paramètres d'application, la modification du nombre d'instances ou le téléchargement du dernier journal, à l'aide des appels de commande Windows PowerShell ou des appels d'API REST (Representational State Transfer).

Pour résumer

WAWS vous permet de déployer des applications Web presque instantanément avec une expérience limitée ou inexistante en matière de cloud. Au fur et à mesure de l'évolution de vos besoins, vous pouvez intégrer d'autres aspects des technologies cloud de Windows Azure, par exemple la mise en cache, Service Bus, le stockage et d'autres services à valeur ajoutée. Grâce au soutien des composants PaaS de Windows Azure, il s'agit de la solution la plus simple pour héberger des applications Web évolutives et hautement disponibles dans le cloud. Ces fonctionnalités, combinées aux infrastructures préconfigurées telles que WordPress, Drupal, DotNetNuke et Umbraco, permettent aux développeurs de se concentrer sur la création d'applications Web et de référentiels de données riches, sur la délégation des tâches d'infrastructure à la plateforme Windows Azure.

Bruno Terkaly est développeur pour Microsoft. Ses connaissances approfondies sont issues d'années d'expérience dans le domaine, au cours desquelles il a écrit du code à l'aide d'une multitude de plateformes, de langages, d'infrastructures, de SDK, de bibliothèques et d'API. Il se consacre à l'écriture de code, à l'écriture sur un blog et à des présentations sur la création d'applications de nuage, plus particulièrement à l'aide de la plateforme Windows Azure.

Ricardo Villalobos est un architecte logiciel aguerri qui bénéficie de plus de 15 ans d'expérience dans la conception et la création d'applications pour des entreprises exerçant dans le secteur de gestion de la chaîne d'approvisionnement. Titulaire de différentes certifications techniques, ainsi que d'une maîtrise d'administration des entreprises délivrée par l'Université de Dallas, il travaille comme architecte de cloud dans le groupe incubation Windows Azure CSV pour Microsoft.

Merci à l'expert technique suivant d'avoir relu cet article : Nir Mashkowski