Le Cloud et Microsoft Windows Azure
Fin octobre 2008, Microsoft avait annoncé officiellement son offre de Cloud : la plateforme Windows Azure. Initialement prévue en 2009, la sortie commerciale de Windows Azure a été repoussée à février 2010 et deviendra alors accessible aux entreprises moyennant finance. La plateforme Windows Azure regroupe un ensemble de services disponibles sur le nuage. Ces services sont physiquement hébergés dans les différents datacenters de Microsoft. Pour l’instant il existe deux datacenters aux Etats-Unis, un autre étant prévu prochainement en Europe. Les datacenters hébergeant les services et l’architecture de la plateforme Windows Azure sont conçus pour assurer une haute disponibilité et une forte scalabilité. Microsoft assure que la plateforme peut garantir une disponibilité de service sans interruption car les serveurs sont tous repliqués au moins deux fois. Le transfert vers le serveur de remplacement est automatique si le serveur principal a un problème. Les trois grands services proposés sont : Windows Azure, SQL Azure et .NET Services.
Windows Azure, un système d’exploitation sur le cloud

Windows Azure est un système d’exploitation pour le cloud aux fonctionnalités limitées. Il permet de faire tourner des applications et de stocker des données. Il est facile d’augmenter une capacité de stockage ou d’exécution d’une application : bien entendu, le code de l’application doit aussi être prévu pour. Windows Azure prend en chargre la répartition de charge si il y a plusieurs instances de l’application.
L’environnement d’exécution de Windows Azure : la Fabric
La Fabric est le nom donné à l’environnement d’exécution. Elle peut héberger deux types d’applications, nommés « roles » : les web roles et les worker roles. Les web roles sont des applications à l’écoute de requêtes, comme les sites web ou autres applications web traditionnelles. Ceux-ci tournent sous IIS 7. Les worker roles sont des applications qui tournent en tâche de fond. Les instances des différents rôles sont gérés par la Fabric. La Fabric suit les indications fournies par l’utilisateur dans le fichier de configuration du service.
Le système de stockage de Windows Azure : Azure Storage Services
Azure Storage Services regroupe trois services de stockage de données : le blob storage service, le table storage service et le queue storage service. Le blob storage est l’équivalent du système de fichier. Il permet de stocker des fichiers. Pour les fichiers volumineux, il est prévu de pouvoir envoyer ou de récupérer les fichiers par parties. Il est possible d’associer des métadonnées à ces fichiers. Un service de cache (CDN), améliorant la rapidité d’accès partout dans le monde, est aussi proposé: c’est le Windows Azure Content Delivery Network. Ce service ne peut par contre être appliqué qu’aux fichiers publics puisque leur accès n’est soumis à aucune authentification. L’Azure Blob explorer offre une interface assez proche de l’explorateur de fichiers de Windows. Le table storage permet de stocker des données structurées, mais pas de manière relationnelle. Les tables contiennent des entités qui elles-mêmes contiennent des propriétés. Une table peut contenir des millions d’entités réparties physiquement sur plusieurs serveurs. Le queue storage est l’équivalent de Microsoft Message Queuing. Il permet de gérer une queue de messages, et donc une transmission asynchrone de messages. Ces trois moyens de stockage supportent une API REST, ce qui assure une large interopérabilité. L’intégrité des données est garantie par une triple sauvegarde des fichiers. L’accès est sécurisé grâce à une clé à fournir au moment de la requête.
Développer pour Windows Azure
Chaque compte sur Windows Azure offre un environnement de test et un environnement de production. Pour déployer une application, il faut uploader un fichier .cspkg et le fichier xml de configuration du service .cscfg sur le portail d’administration de son compte Windows Azure. Le fichier .cspkg est en fait un répertoire encrypté et zippé contenant le code de l’application. Le déploiement se fait d’abord sur l’environnement de test. Le passage du test à la production se fait grâce à un bouton sur la page d’administration. Le fichier de configuration est accessible et modifiable en ligne après le déploiement. Une API REST est dipsonible pour gérer certaines opérations de déploiement.
Le développement pour Windows Azure est particulièrement bien intégré avec les outils Microsoft existants, et notamment Visual Studio. Il existe déjà des templates de projet pour le cloud. Microsoft fournit un SDK de développement pour le cloud. Le framework .NET de développement reste le même. Ce SDK ajoute simplement quelques classes et facilite l’intégration dans Visual Studio. Associé à Visual Studio, il permet de simuler plusieurs instances de l’application tournant simultanément et de simuler l’accès à l’Azure Storage. Le développement en .NET pour Windows Azure impose cependant quelques contraintes : le code doit être compilé et ne doit pas faire appel au système de fichier traditionnel.
Windows Azure est ouvert aux applications écrites dans d’autres langages, tant que ceux-ci supportent le FastCGI, comme par exemple PHP, Ruby, Perl ou Python. Il faut pour cela activer l’utilisation de FastCGI, indiquer l’interpréteur utilisé dans le webrole.config et configurer le module de FastCGI de IIS 7 dans le web.config. Voici un lien indiquant la procédure à suivre.
SQL Azure

SQL Azure est un service de base de données sur le cloud qui s’appuie largement sur les technologies de Microsoft SQL Server 2008, mais n’assure pas de compatiblité ascendante au niveau des types de données. C’est à dire que les types de données et instructions dépréciés (deprecated) dans SQL Server 2008 ne sont pas supportés : ce sont des instructions et surtout des types SQL qui existaient en SQL 2005 ou 2000 et qui ne pourront plus être utilisés avec Azure. Pratiquement toutes les opérations autorisées sur une base de données classiques sont disponibles, à l’exception des fonctionnalités ne relevant pas de l’objet base de données lui-même, mais plutôt de l’administration de serveur. Ainsi, il n’est pas possible de synchroniser ou de répliquer des bases de données, ce qui aurait d’ailleurs peu d’intérêt puisque Microsoft assure qu’il ne peut y avoir de rupture de service (haute disponibilité), les instances de base de données étant toutes répliquées (assurant ainsi également la durabilité de l’information). Le relais s’effectue automatiquement en cas de crash d’un serveur. L’accès à SQL Azure se fait grâce à un driver ODBC, le framework ADO .NET ou pour PHP via le driver PHP SQL Server. L’appel à la base de données reste assez classique, moyennant quelques contraintes. Par exemple, l’authentification Windows n’est pas acceptée, ni l’utilisation du MultipleActiveResultSet de SQL Server. Des outils d’administration apparaissent, tel qu’un Assistant à la migration de SQL Server vers SQL Azure ou un Outil de visualisation de données.
.NET Services

Les .NET Services offrent des fonctionnalités standards mais avec un large scope d’application : le Service Bus et le Access Control Service.
Le Service Bus
Le Service Bus permet de connecter de manière sécurisée des services ou des applications Windows Azure et des bases SQL Azure avec d’autres applications et bases existantes, selon différents modèles de communication au travers du cloud, et de s’affranchir ainsi d’un certain nombre de problématiques réseau. Il s’agit du fonctionnement standard d’un bus de communication où l’application émettrice s’enregistre auprès du Service Bus avec une adresse de service du type
sb://MyApp.servicebus.windows.net/Services/MyFirstService
Ainsi, tous les messages envoyés sur cette adresse seront redirigés vers les applications qui y auront souscrit. Vous pourrez trouver les différents modèles de communication (unicast et multicast, connexions bi-directionnelles, émetteurs et récepteurs multiples, …) sur la page du service.
L’Access Control Service
L’Access Control Service permet de sécuriser l’utilisation d’applications par la mise en place de règles d’authentification et d’autorisation. C’est un système d’identité fédérée basé le projet Geneva de Microsoft. L’application demande une créance ( « claim » ) à son utilisateur, si celui-ci ne l’a pas il ne peut pas utiliser l’application.
La séquence d’obtention est la suivante :
- l’application cliente demande à utiliser une fonctionnalité du service
- le service lui demande le claim correspondant
- l’application cliente demande le claim à un identity provider
- l’identity provider vérifie son identité et lui fournit le claim
- l’application cliente présente le claim au service
- le service vérifie le claim et donne accès à la fonctionnalité
L’identity provider est un service tiers de confiance qui sait qui a droit à quel claim. L’avantage de ce fonctionnement est que l’application ne gère pas des accès selon des utilisateurs, mais selon des claim. La mise en place de ces règles se fait de manière déclarative grâce à des formulaires de saisie dans l’interface d’administration des .NET Services.
Conclusion
Toutes les fonctionnalités proposées sur la plateforme peuvent être utilisées conjointement ou séparément, avec des applications elles-même hébergées dans le cloud ou bien sur votre propre infrastructure physique. Par exemple, pour une application hébergée sur un serveur physique de l’entreprise, il est possible de sauvegarder des données sur SQL Azure et les gros fichiers sur un blob dans le cloud. Il serait également possible d’enregistrer cette application sur le Service Bus et de la rendre accessible uniquement par ce biais qui serait soumis à des règles d’accès.
Il faut signaler que Microsoft a bien préparé son lancement en proposant des versions gratuites de test auprès d’utilisateurs intéressés, ce qui a permis un premier recadrage des fonctionnalités attendues. Il y a déjà un certain nombre de projets autour d’Azure et d’applications de démonstration et de test, et surtout une communauté d’utilisateurs plutôt active. A noter aussi l’existence d’un assez grand nombre de webcasts techniques sur la question. Le Windows Azure Platform Training Kit contient des présentations techniques et des exemples assez éclairants.
Freddy TRANCART


Commentaires récents