palais des
congrès
Paris



7, 8 et 9
février 2012
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
Agenda
  Introduction
  Rappel sur la Plateforme Azure
  Une intégration dans Azure facile ?
  Complexité des applications existantes
  Problématiques et solutions apportées
  Conclusion
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
VIDEO
INTRODUCTION
Introduction
 Transformation de l’industrie informatique

                                                Today | Cloud


                                    2000s | Web



                           1990s | Client / Server



               1970s and 80s | Mainframe
Ressources « on demand »
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
Différentes couches Cloud
                                                                                                          Plateforme Windows
                                                                                                          Azure
                  IT                          IaaS                                       PaaS                            SaaS




                                                                          Vous gérez
             Applications                  Applications                                Applications                   Applications



                              Vous gérez
               Données                       Données                                     Données                        Données

               Runtime                       Runtime                                     Runtime                        Runtime

                                                                                       Middleware                     Middleware
Vous gérez




             Middleware                     Middleware




                                                                                                                                       Externalisé
                  O/S                           O/S                                        O/S                            O/S




                                                                                                        Externalisé
             Virtualisation                Virtualisation                              Virtualisation                 Virtualisation



                                                            Externalisé
               Serveurs                      Serveurs                                    Serveurs                       Serveurs

               Stockage                      Stockage                                    Stockage                       Stockage

             Networking                    Networking                                  Networking                     Networking
VIDEO
Windows AZURE
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
VIDEO
Intégration facile ?
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 !
DEMO

Illustration d’un cas simple
ANNONCE
En pratique, ce cas simple ne se présente jamais !
VIDEO
Complexité des applications
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
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
VIDEO
Problématiques et solutions apportées
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
5 problématiques techniques
  Système de fichiers
      Logs et Exceptions
          Services WCF
              Base de données
                  Authentification
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
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
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
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)
DEMO

Services WCF
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
Stratégie Full Cloud
   Migration du schéma et/ou données
      SQL Azure Migration Wizard
           http://sqlazuremw.codeplex.com




      On Premise             Cloud
Stratégie Cloud Hybride : Sync
  Synchronisation
     Data Sync Azure
     Worker Role (Sync Framework)
     Package SSIS, BCP

      Member         Hub



     On Premise      Cloud
DEMO

Synchronisation de bases de données
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/
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
VIDEO
Conclusion
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
ANNONCE
Questions / Réponses
Rejoignez-nous
sur le stand AUSY…
Contactez-nous…
 Equipe Microsoft AUSY
     techdays-microsoft@ausy.com


 Site : www.ausy.fr
ANNONCE
MERCI

Comment intégrer une application ASP.NET dans Windows Azure

  • 1.
  • 2.
    Comment intégrer uneapplication 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
  • 5.
  • 6.
    Introduction Transformation del’industrie informatique Today | Cloud 2000s | Web 1990s | Client / Server 1970s and 80s | Mainframe
  • 7.
  • 8.
    Plusieurs modèles deService • 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
  • 9.
    Différentes couches Cloud Plateforme Windows Azure IT IaaS PaaS SaaS Vous gérez Applications Applications Applications Applications Vous gérez Données Données Données Données Runtime Runtime Runtime Runtime Middleware Middleware Vous gérez Middleware Middleware Externalisé O/S O/S O/S O/S Externalisé Virtualisation Virtualisation Virtualisation Virtualisation Externalisé Serveurs Serveurs Serveurs Serveurs Stockage Stockage Stockage Stockage Networking Networking Networking Networking
  • 10.
  • 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
  • 12.
  • 13.
    Intégration d’une applicationASP.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 !
  • 14.
  • 15.
    ANNONCE En pratique, cecas simple ne se présente jamais !
  • 16.
  • 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 dansun 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
  • 19.
  • 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)
  • 26.
  • 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
  • 30.
  • 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
  • 33.
  • 34.
    Ce qu’il fautretenir… 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
  • 35.
  • 36.
  • 37.
    Contactez-nous… Equipe MicrosoftAUSY techdays-microsoft@ausy.com Site : www.ausy.fr
  • 38.

Notes de l'éditeur

  • #13 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.
  • #15 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 !
  • #16 Pourquoi ?
  • #17 Par ce que les applications ne sont pas autonomes et consomment de ressources
  • #18 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
  • #19 Quelques cas d’utilisation de dépendance de composantes tiers sont :
  • #23 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
  • #25 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