La session des TechDays 2014 Windows Azure Web Sites, Cloud Services ou Virtual Machines? Quelles technologies pour mon application web? animée par Julien Plée et Benjamin Talmard a eu l’avantage d’ajouter à la théorie des cas pratiques venant directement des problématiques de TalentSoft. Voici un résumé des sujets abordés.

3 façons de faire un site web

Azure propose aujourd’hui 3 façons de créer une application/un site web, celles-ci correspondent à des niveaux différents d’adhérence avec la plateforme, ainsi qu’aux possibilités de gérer la configuration (nombre d’instances, déploiement d’application custom, etc. ) et la performance.

Azure Web Site

C’est la façon la plus simple de créer un site web. L’adhérence à la plateforme Azure est faible, une application web qui tourne dans IIS on permise tournera a priori sans problème dans un Windows Azure Web Site, on peut en outre bénéficier d’une base de données (et même une gratuite jusqu’à 20 Mo), et publier depuis GitHub, DropBox, Visual Studio Online etc. Il est également possible de profiter d’une application de la Galerie, qu’elle soit en .Net ou en PHP, par exemple BlogEngine.Net ou Joomla.

C’est le meilleur moyen de créer un site institutionnel, de présenter une démo à un client, d’héberger une plateforme de blog etc. Pour les développeurs .Net, l’intégration avec Visual Studio est un plus, mais le déploiement continu depuis Visual Studio Online est un réel atout. Vous pouvez gratuitement bénéficier d’une plateforme de déploiement continu. Avec Monaco, vous pouvez même effectuer des petites retouches directement sur votre site déployé.

Bref pour démarrer un projet c’est parfait, et puis vous pourrez toujours passer ensuite sur une version plus puissante (mais payante). La version partagée vous permet de gérer plusieurs instances :

version partagée

La version standard quant à elle vous permettra de configurer la mise à l’échelle automatique, et de monter jusqu’à 10 grandes instances, de quoi voir venir.

version standard

Cloud Service

La seconde façon de faire s’adresse à des systèmes différents. Ici, nous pouvons déployer des applications qui ont des besoins en performance vraiment importants, une architecture qui peut être multi tiers etc.

L’adhérence avec la plateforme Azure est forte. La configuration est beaucoup plus fine (nombre et capacité des instances etc. ), nous disposons d’un environnement de staging pour les déploiements. Il est également possible d’accéder aux machines sur lesquelles sont déployée les sites et services afin par exemple d’y installer des softs custom. En revanche ces machines sont stateless, il faut donc prévoir de réinstaller (automatiquement) l’ensemble des vos outils en cas de redémarrage.

Le déploiement continu depuis Visual Studio Online est également pris en charge, c’est un vrai plus.

Si vous avez des traitements que vous ne souhaitez pas confier à votre application web, vous pouvez utiliser des worker rôles afin d’effectuer cela en tâche de fond. Typiquement, vous pouvez utiliser le Service Bus Azure pour faire communiquer l’ensemble, via des queues ou des topics :

cloud service

En résumé cette Plateforme As A Service, est la manière idéale d’utiliser Azure pour réaliser des applications web performantes. Elle vous permettra d’adresser la plupart des problématiques courantes tout en restant dans un monde assez proche de ce que l’on fait on premise. Si vous avez un projet ambitieux en terme de performance, volumétrie etc. c’est une piste vraiment intéressante. Julien Plée de TalentSoft nous l’a d’ailleurs expliqué puisque c’est ce qu’ils utilisent sur un de leur produit. C’est également ce que j’ai choisi pour un de mes clients.

Toutefois, si vous avez besoin de spécificités encore plus grandes, la troisième solution répondra surement à vos besoins.

Infrastructure As A Service (IAAS)

Dans certains cas, vous pouvez être confrontés à des besoins spécifiques, ou à une application historique et il est dans ce cas difficile d’utiliser les cloud services. Vous pouvez alors envisager toute la flexibilité et la puissance d’Azure à l’aide des machines virtuelles.

Vous disposerez de tout ce que vous pouvez faire chez vous, la flexibilité en plus. Créer une nouvelle machine ou un nouveau réseau virtuel ce fait en quelques clics, vos machines sont accessibles en RDP, vous pouvez configurer des points d’entrée publics etc. La galerie propose un ensemble de templates de machines Windows préconfigurer mais aussi des machines Linux, avec Oracle etc. Vous avez en plus la possibilité d’uploader vos propres machines. Enfin, il est possible d’automatiser la création de tout cela via PowerShell.

Cela pourra permettre de gérer de la production, mais également de se créer des environnements de tests qui sont parfois difficiles à obtenir, je pense par exemple à des environnements Sharepoint.

Pour résumer, un slide directement issu de la session :

récapitulatif

Les données

On allait les oublier, mais qui dit site web dit souvent (toujours) des données. Là aussi il y a plusieurs façons de faire.

Windows Azure SQL Database

C’est la façon standard de faire du SQL dans Azure, c’est une base de données relationnelle As A Service. Vous pouvez l’appeler depuis votre code comme vous le feriez avec SQL Server. Ce n’est pas vraiment prévu pour monter en charge tel quel. En revanche, si vous avez besoin de performance, travailler votre architecture, afin de faire du sharding et d’utiliser les federations.

Vous pouvez aussi utiliser Windows Azure SQL Database Premium (en preview) qui “offre des performances accrues et prévisibles”. C’est plus cher mais la performance est meilleure.

No Sql

Plus performant et moins cher, les tables ou les blobs, sont le No Sql d’Azure. Si dans votre cas cela est difficile à envisager pour vos données “standard”, pensez que c’est la façon idéale de stocker les logs et que les blobs sont faits pour les images, les documents, et contenus statiques de votre site.

Sql Server

Enfin si tout cela ne vous convient pas, il est toujours possible d’utiliser SQL Server installé sur des VM avec IAAS.

Attention

Avec Windows Azure SQL Database, il ne faut pas oublier d’implémenter un système de retry policy pour gérer les erreurs transitoires.

attention

Entity Framework et Enterprise Library proposent des mécanismes pour cela.

Conclusion

Une session très intéressante, le point de vu d’un client est un réel plus pour ce genre de sujet. Ils n’ont pas pu couvrir tout ce qu’ils souhaitaient mais le sujet nécessitait certainement plus de 45 minutes. Connaissant déjà la plateforme j’aurais aimé plus de cas concrets venant de TalenSoft, mais il y a toujours des choses à apprendre dans une session comme cela, et je ne regrette pas d’y être allé.

Ne ratez plus aucune actualité avec la newsletter mensuelle de SoftFluent

Newsletter SoftFluent