Dans cette session, nous vous proposons d'aborder les problématiques que l'on peut rencontrer lorsque l'on souhaite intégrer une application Web ASP.NET dans le cloud computing Windows Azure : Quels sont les impacts sur l'architecture existante et les développements ? Quels sont les choix techniques les plus appropriés et quelles solutions mettre en oeuvre ?
2. Comment intégrer une application ASP.NET
dans Windows Azure ?
Omar MERROUN
Architecte .NET
AUSY Clément BOUDEREAU
Expert Windows Azure
AUSY Olivier Navarre
Responsable Solutions Microsoft
AUSY
Mardi 7 février 2012
3. Agenda
Introduction
Rappel sur la Plateforme Azure
Une intégration dans Azure facile ?
Complexité des applications existantes
Problématiques et solutions apportées
Conclusion
4. en quelques mots…
1989 : création du Groupe par l’actuel président Microsoft Partner Gold et Embedded
Jean-Marie MAGNET
Conseil & Ingénierie en Hautes Technologies
Notre Positionnement Microsoft
Présence dans 15 pays (Europe, Asie, Afrique) Plateforme applicative
19 implantations en France Applications métier et décisionnelles
Infrastructures et réseaux
2 grands domaines d’activité :
Les systèmes d’information Expertise en infrastructure, architecture et
Les systèmes industriels complexes
développement : ASP .NET, Silverlight,
WPF, SharePoint, Exchange, Lync, …
Positionnement de multi-spécialiste
Solutions mobiles : WP7 et Windows 8
CA 2011 : 290 M€ Cloud Computing : Azure et Office 365
Effectifs : + 3630
8. Plusieurs modèles de Service
• Exécute un progiciel préconfiguré
SOFTWARE • Délivre un service aux utilisateurs
AS A SERVICE • Automatisation complète
• Coût opérationnel très faible
• Exécute les applications de l’utilisateur
• Délivre des services aux applications
PLATFORM (BD, haute dispo, montée en charge)
AS A SERVICE • Automatisation importantes
• Coût opérationnel faible
• Exécute les applications de l’utilisateur
• Délivre des ressources bas niveau
INFRASTRUCTURE (Serveurs Virtuels, Réseaux, stockage)
AS A SERVICE • Automatisation limitée
• Coût opérationnel important
11. Plateforme Windows Azure
Expérience Développeurs
Utilisation des outils et compétences existantes
Stockage Reporting Integration Composite App Facturation
Place de
Données marché de la
APIs
Traitement Admin relationnelles Administration Connectivité Caching Controle d’accès donnée
13. Intégration d’une application ASP.NET
Cas simple
Application autonome : sans aucune dépendance ni
consommation de ressources
Migration facile !
Ajouter les références Azure dans projet Web
Ajouter « RoleEntryPoint »
Ajouter un projet Azure à la solution Visual Studio
Ajouter le web role dans le projet Azure
Puis déployer !
17. Architectures applicatives complexes
Architecture modulaire, en couches avec différents
composants
Architecture logicielle Composant demandant
une installation sur le
Couche Présentation serveur
ASP.NET
Composants
Solution : l’utilisation du VM
Tiers
Couche Service role
Baisse du niveau de SLA
Couche d’accès aux données
18. Application intégrée dans un SI
Consommation de ressources externes
Active
Service Web
Serveur IIS Directory
Windows Server
Service de Messagerie
Application Web
Cache ASP .NET Exchange
Dépendances Système de
Base de données
diverses fichiers
20. Démarche d’intégration
Définir l’architecture cible dans le Cloud
Etudier les problématiques techniques
Planifier et réaliser la migration
Tester l’application dans le Cloud
21. 5 problématiques techniques
Système de fichiers
Logs et Exceptions
Services WCF
Base de données
Authentification
22. Système de fichiers
2 solutions proposées :
Cloud Drive Azure Table & Blob
Migration relativement Changer le code
transparente Supporte la scalabilité
Un seul rôle instance en I/O
et les autres en O
Nous préconisons cette solution
23. Content Delivery Network
Solution de cache Windows Azure
Hébergement de contenu ( jpg, css, …)
Cache de contenu proche de l’utilisateur final
Optimisation de la gestion des Urls
24. Logs/Exceptions
Plusieurs solutions :
Log4Net Enterprise Library 5.0
Non supporté en natif Supporté en natif
Développer un Appender Utilise System.Diagnostics
Ecrire dans une table AZURE
Nous préconisons cette solution
25. Services WCF
4 méthodes d’hébergement On Promise
Services Internet (IIS)
Services Windows
Windows Process Activation Service WAS
Auto-hébergement
2 méthodes d’hébergement dans le Cloud
WebRole WorkerRole
Modifier le fichier de .config du Modifier le fichier .config du
projet Azure projet Azure
Adapter le host
(paramètres de l’ EndPoint)
27. Base de données – Stratégies
2 cibles dans SQL Azure
Cible Full Cloud Cible Cloud Hybride
Member Hub
One Shot Sync
On Premise Cloud On Premise Cloud
28. Stratégie Full Cloud
Migration du schéma et/ou données
SQL Azure Migration Wizard
http://sqlazuremw.codeplex.com
On Premise Cloud
29. Stratégie Cloud Hybride : Sync
Synchronisation
Data Sync Azure
Worker Role (Sync Framework)
Package SSIS, BCP
Member Hub
On Premise Cloud
31. Authentification
Mode d’authentification Forms – Cloud
SqlMembershipProvider TableStorageMembershipProvider
Utilisation de la base de Mettre les utilisateurs dans un
données SQL TableStorage
Modifier la ConnexionString Codeplex :
http://azureproviders.codeplex.com/
32. Identification
Mode d’authentification Windows - Cloud
Fédération d’Identité AZURE
Active Directory Federation Application ASP.NET
Services
Access Control Service Access Control Service
On-promise
ADFS
Active Directory
34. Ce qu’il faut retenir…
Intégration complexe : Environnement SI
Pour maitriser l’intégration :
Démarche construite
Définition de la cible dans le Cloud
Expertise en développement, architecture, administration
Privilégier une approche globale et industrialisée
Comme on vient de le voir, la plateforme Azure propose plusieurs solutions intéressantes dans plusieurs cas d’utilisation.Cela motive plusieurs clients a retenir cette solutionDans le cadre de la migration d’une application asp.net dans le cloud, il est légitime de se poser la question sur le complexité de cette opération.
Ouvrir un projet asp videAjouter une page default.aspxCoté design ajouter un calendar et un boutonDans le code behind ajourer une méthode associé a l’event click du boutonAjouter la méthode :privatevoidMessageBox(string message) { if (!string.IsNullOrEmpty(message)) {Response.Write("<script type=\\"text/javascript\\" language=\\"javascript\\">");Response.Write("alert('" + message + "');");Response.Write("</script>"); } }Et la consommer !
Pourquoi ?
Par ce que les applications ne sont pas autonomes et consomment de ressources
De nos jours, les sites web contiennent de plus en plus d’information personnalisée, exposent de plus en plus de service (réseaux sociaux, messagerie, jeux en ligne, etc.), dépendent de plus en plus les unes des autres (service de cartographie, authentification, réseaux sociaux, etc.)Les applications sont donc non autonomes (consommation de services et librairies tiers) et structurées (architectures logicielles)Donc, la migration des projets Web vers le cloud sont conditionnées par la portabilité ou capacité d’interaction avec les composants tiers.Attention !Dans le cas ou la mise en place d’un site web nécessite l’installation de logiciel spécifiques sur le serveur, on est contraint de migrer l’application en utilisant la VM Role
Quelques cas d’utilisation de dépendance de composantes tiers sont :
La solution Cloud Drive permet, avec un minimum de modification de code, de monter un disque virtuel et d’y accéder en mode I/O de façon transparente. =/= partager le disque virtuel est accessible en mode lecture par tout les intances et une seule instance que peut accéder en écriture =/= ne supporte pas la monte en chargeLa solution Azure table & Blobs =/= nécéssite de changer le code ++ supporte la montée en chargeBonne pratique : mutualiser les services de persistance pour minimiser le code a modifierNous recommandons d’utiliser les azure table & blob pour la persistance
Si on choisit d’utiliser Cloud Drive (qui n’est pas recommandé) pour écrire dans des fichiers de logs la migration est transparente pour les deux librairies Sinon, (utiliser azure blob et table) nécessite d’implémenter un nouvel Appender qui écrit dans une Azure Table pour Log4Net contrairement à Enterprise Librairie 5.0 qui est basé sur System.Diagnostics peut utiliser le listnerDiagnosticMonitorTraceListenerdans Microsoft.WindowsAzure.Diagnostics