Lorsque ce n'est pas requis, par exemple pour des sites de démonstration, de tests ou plus généralement à faible affluence, la facture peut vite devenir importante avec le modèle de déploiement par défaut (et qui était le seul disponible jusqu'au Windows Azure SDK 1.3) où une application Web = un Web Role = une VM (machine virtuelle) utilisée et facturée.
Pour réduire sa facture Windows Azure, l'idée est donc de déployer plusieurs applications ou sites Web dans le même Web Role. Attention, dans ce cas, les applications sont liées par le déploiement, et la mise à jour d'une application nécessitera alors de redéployer l'ensemble du Web Role. Par contre, pas d'impact concernant la haute disponibilité, il suffit d'affecter deux instances (ou plus) au Web Role.
Comment procéder ?
Tout va se jouer dans le fichier de configuration : ServiceDefinition.csdef
La section WebRole contient une sous-section Sites, avec par défaut le site Web créé avec le Web Role. Il s'agit donc d'enrichir cette section en ajoutant les autres applications Web.
Pour cela, vous avez deux possibilités :
- Définir un site par application Web : chaque application est alors accessible à une adresse du type http://domain:port/
- Définir un site et plusieurs applications virtuelles : le site est accessible à l'adresse http://domain/ et les applications Web à http://domain/app
Pour aller plus loin...
Notez qu'il existe une autre technique qui consiste à déployer une application Web dédiée à l'hébergement de plusieurs applications Web. Cette application, à télécharger depuis le Windows Azure Toolkit sur Codeplex, récupère dynamiquement les packages des applications Web depuis les blobs d'Azure Storage et les configure dans le Web Role. Ceci apporte une flexibilité supplémentaire par rapport à la solution précédente, mais nécessite le maintien d'un compte Azure Storage et la sécurisation des blobs uploadés.
Vous trouverez plus d'information sur la procédure ici.