Patterns Windows Azure

578 vues

Publié le

L'expérience sur la plateforme Windows Azure permet de dégager des patterns pour résoudre des problèmes tels que la communication inter rôles, la résistance aux échecs de connexion, et bien d'autres encore. Venez les découvrir dans cette session ou certains patterns seront illustrés par des démonstrations.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
578
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Patterns Windows Azure

  1. 1. Patterns Windows AzureCode session : ARC305 Mardi 7 février 2012 Arnaud Cleret Eric Craeymeersch Directeur Associé Service Line Manager Arnaud.Cleret@vNext.fr Eric.Craeymeersch@vNext.fr
  2. 2. Vous êtes dans la salle 251
  3. 3. palais descongrèsParis7, 8 et 9février 2012
  4. 4. Qui sommes-nous ? Positionnement « Jeune Entreprise Innovante », vNext se positionne sur le marché des Fondée en 45 nouvelles technologies, essentiellement orientées sur les solutions janvier 2010 Personnes Microsoft, mais également sur les usages, l’industrialisation et les modes de distribution de type SaaS. Domaines d’activité CA Statut Édition : La création de solutions logicielles packagées aussi bien 2010 : 2M€ focalisées métier que grand public. JEI + CIR Services : Consulting, Coaching, Design, Réalisation, etc. 2011 : 3M€ R&D : Toutes les initiatives pour apporter des solutions nouvelles ou meilleures. Cette activité supporte les deux autres domaines. ∑ ( Edition : Service ) http://www.vNext.fr - Contact@vNext.fr
  5. 5. Agenda Cycle de Configuration Stockage Applications vie à chaud local distribuées Stratégie de Niveau de Présence Questions rejeux SLA globale Réponses
  6. 6. Patterns Windows AzureCode session : ARC305Cycle de vie
  7. 7. Cycles de vieCorrélation avec une application tierce Contexte : Hébergement d’une application tierce dans un WorkerRole Azure Config EXE Worker Application hébergée sur Azure
  8. 8. Cycles de vieCorrélation avec une application tierce – Approche Simple • Initialisation environnement OnStart • Lance les processus • Surveillance des processus OnRun • Si problème, recycle l’instance • Envoi stop aux processus On Stopping
  9. 9. Cycles de vieCorrélation avec une application tierce – Approche simple Azure Application Starting Pas lancée Ready Lancée Stopping Arrêtée
  10. 10. Cycles de vieCorrélation avec une application tierce – Problématiques Problèmes potentiels de cette approche Initialisation complexe ou longue Dépendance à un autre système Série de commandes à envoyer au bon moment Plusieurs exécutables Comment faire coïncider les cycles de vie ?
  11. 11. Cycles de vieCorrélation avec une application tierce – Problématiques Azure Application Starting ? ? Ready Stopping
  12. 12. Cycles de vieCorrélation avec une application tierce – Nouvelle approche Découplage Remise à plat du workflow opérationnel de l’application hébergée Matching des états avec les évènements Azure Exemple • Initialisation minimale OnStart • Gestion complète du workflow de l’application OnRun • Demande d’exclusion du LoadBalancer sur certains états • Quitte le workflow principal en quittant proprement l’application On Stopping
  13. 13. Patterns Windows AzureCode session : ARC305Configuration à chaud
  14. 14. Reconfiguration à chaud But : Modifier le comportement de l’application sans interruption de service Moyens possibles : Fichier de configuration du service Windows Azure .cscfg Fichier de configuration de l’application web.config Externalisation de la gestion de configuration (Framework)
  15. 15. Reconfiguration à chaudFichier de configuration du service Azure .cscfg Moyen d’accès : Portail Azure (en édition directe ou mode fichier) Powershell API de Management Evènements à gérer: RoleEnvironment.Changing RoleEnvironment.Changed Impacts: Application par update domain Attention aux phases transitoires !
  16. 16. Reconfiguration à chaudFichier de configuration du service Azure .cscfg
  17. 17. Reconfiguration à chaudFichier de configuration de l’application web.config Non modifiables directement Solutions possibles : Modification du web.config depuis le WebRole (API Microsoft.Web.Administration) Téléchargement du web.config depuis un blob privé (startup task) Impacts : Recyclage de l’application
  18. 18. Reconfiguration à chaudExternalisation de la gestion de configuration Sortir du pattern d’utilisation de la configuration standard pour une implémentation custom Nécéssite un Framework gérant toute la configuration de manière transverse Stockage en Base de donnée +/- stratégie de cache WebService … Impacts : Couteux si pas de Framework applicatif existant Selon l’implémentation du Framework
  19. 19. Patterns Windows AzureCode session : ARC305Utilisation du stockage local
  20. 20. Utilisation du Local Storage Rappel sur les caractéristiques Espace sur les disques locaux des instances Volume disponible dépendant de la taille de la VM Non persistant (crash/changement de VM) Performance d’un disque dur moderne… mutualisé ! Non partagé car par instance Pattern de base Utiliser que pour des données temporaires Préférer les blob, Azure drive, Azure table Local Storage peut être très utile quand même Les VM ne reboot pas souvent Performances Les évènements OnStart et On Stopping permettent de manipuler les données locales
  21. 21. Utilisation des stockage locaux Scénario de synchronisation avec un azure drive Les données sources sont dans VHD (Azure Drive) Snapshots du VHD pour dupliquer le contenu Monter le snapshot en Drive ReadOnly Recopier les données Supprimer le snapshot Même scénario avec arborescence de fichier dans les blobs OnStart : Rappatrie les données depuis les blobs OnStopping : Recopie dans les blobs Est-ce critique si on perd les données locales ? Conclusion : Cas d’utilisation spécifiques Peut résoudre certaines problématiques Résoudre les problématiques de resynchronisation
  22. 22. Patterns Windows AzureCode session : ARC305Application distribuée
  23. 23. Application distribuéePatterns de Communications Objectifs : Fournir des solutions de communication adaptées aussi bien aux applications Cloud qu’a l ’intégration avec des applications On- Premise ou de partenaires Contraintes : Communication inter-rôle et inter-instance Gestion des accès concurrents inhérents au Cloud Sécurisation des échanges et intégrité des données Interopérabilité des protocoles et formats utilisés Scalabilité end-to-end Solutions à disposition : Web Service Queue Blob
  24. 24. Application distribuéePatterns de communications – Inter-rôle Worker Role Instance 1 Web Role Load Balancer Instance 1 Worker Role Instance 2 Web Role Instance 2 Worker Role Instance 3
  25. 25. Application distribuéePatterns de communications – Inter-rôle Worker Role Instance 1 Web Role Instance 1 Worker Role Instance 2 Web Role Queue Instance 2 Worker Role Instance 3 Lisse la charge
  26. 26. Application distribuéePatterns de communications – Inter-rôle Azure Queue vs Azure Service Bus Queue Feature Azure Queue Service Bus Queue Garantie de l’ordre X (FIFO) Transaction X Mode d’accès Lease Lock Groupe de message X Détection de duplication X Management & Métriques X Intégration WCF X Intégration WF Custom Activity X Taille des messages 64 Ko 256 Ko Taille de la file 100 To 1, 2, 3, 4 ou 5 Go Durée de vie des messages 7 jours Illimitée Latence réseau 10 ms 100 ms Nombre de clients simultannés Illimité Illimité (HTTP) - 100 (TCP) Authentification Symmetric Key ACS Claims
  27. 27. Application distribuéePatterns de communications – Inter-rôle Worker Role Instance 1 Web Role Instance 1 Worker Role Instance 2 Web Role Blob Instance 2 Worker Role Instance 3 Lisse la charge
  28. 28. Application distribuéePatterns de communications – Inter-rôle Exploitation d’une propriété des blob : Lease Possibilité de « prendre le jeton » pour servir de mutex Ne pas oublier de renouveler le Lease tant que on l’utilise Utilisation des WAZStorageExtention de Steve Marx Nuget https://github.com/smarx/WazStorageExtensions
  29. 29. Application distribuéeCommunications avec le SI Objectifs : Permettre un accès aux ressources du SI depuis l’extérieur Contraintes identifiées : Protocole de type Web Service : Sans modification des règles firewall existantes Interopérabilité avec les autres technologies Autres protocoles : DCOM – Bases de données – Imprimantes – Partages fichiers Contexte de sécurité basé sur Active Directory Problématiques : Établir une connexion sécurisée tout en traversant le firewall Assurer l’authentification et les autorisations Permettre de basculer vers une connexion directe
  30. 30. Application distribuée Communications avec le SI – Service Bus Relay Service BusFrontend Nodes Ctrl NLB 2 3 Ctrl 1 Forwarder Sender 4 Receiver
  31. 31. Application distribuée Communications avec le SI – Service Bus Relay Service BusFrontend Nodes Uniquement des connexions sortantes Connexion TCP par défaut puis HTTP si nécessaire Sécurisé avec Azure Access Control Connexion directe entre l’émetteur et le récepteur si possible Receiver
  32. 32. Application distribuéeCommunications avec le SI – Service Bus RelayFire and Forget Request/Reply To-way interaction Broadcast Application Application Application Application Application Partner Request Request Reply Request Request Request and Replyc and Reply Partner Partner Partner Partner Partner Partner Protocoles supportés : HTTP/SOAP – HTTP/REST - TCP
  33. 33. Application distribuéeCommunications avec le SI – Azure Connect Accès à l’ensemble des ressources de l’entreprise à l’identique d’une solution On-Premise Cloud Hosted Service Création d’un réseau virtuel : Basé sur IPv6 et IPSec over SSTP Connexions sortantes uniquement en IPSec over SSTP Connect Agent Https Supporté uniquement pour les OS Windows Azure Connect Relay Contexte de sécurité de type Kerberos : L’instance du service hébergé devra intégrer le domaine Active Directory de IPSec over SSTP Connect Agent l’entreprise L’installation de l’agent sur les contrôleurs de domaine devient nécessaire Risque de serveur « zombie » lors des redémarrage d’instance On-Premise Infrastructure
  34. 34. Application distribuéeCommunications avec les partenaires Objectifs : Diffuser un message à différents partenaires Filtrer les messages envoyés en fonction de leur contenu Proposer un système de souscription dynamique Contraintes : Sécurisation des échanges et intégrité des données Interopérabilité des protocoles et formats utilisés Scalabilité end-to-end Solution basée sur Azure Service Bus Topics
  35. 35. Application distribuéeCommunications avec les partenaires - Service Bus Messaging Implémentation avancée des Service Bus Queue : Toutes les capacités + Publish/Subscribe Routage basé sur les headers du message Chaque suscription reçoit une copie du message Jusqu’à 2000 souscriptions par Topic R E R E Topic Rules Actions Subscriptions E R
  36. 36. Application distribuéeCommunications avec les partenaires - Service Bus Messaging Règle : Filtre les message correspondant aux conditions définies Multiple règles possibles par souscription Chaque règle évaluée avec succès génère une copie du message Condition et Action : Condition : basée sur des expressions de type SQL’92 Action : permet la modification des propriétés du message reçu
  37. 37. Application distribuéeCommunications avec les partenaires - Service Bus Messaging Les conditions de filtre sont opérées uniquement sur les propriétés du message et exprimées en SQL’92 : InvoiceTotal > 10000.00 OR ClientRating <3 ShipDestCtry = ‘USA’ AND ShipDestState=‘WA’ LastName LIKE ‘V%’ Les actions peuvent ajouter/modifier/supprimer les propriétés du message : SET AuditRequired = 1
  38. 38. Patterns Windows AzureCode session : ARC305Stratégie de rejeux
  39. 39. Stratégie de rejeux Le Cloud est un environnement mutualisé par nature. Malgré un SLA annoncé, des micro-disfonctionnements peuvent se produire Throttling Network glitch Indisponibilité temporaire Imprévisibles et temporaires, donc adapter l’architecture Considérer que cela va arriver au plus mauvais moment Dans 95% des cas, une simple relance suffit Nécessité d’implémenter une stratégie de rejeux
  40. 40. Stratégie de rejeuxTOPAZ Codename TOPAZ : Transient Fault Handling Application Block Windows Azure Integration Pack de Enterprise Library 5 Gère les services SQL Azure Windows Azure Service Bus Windows Azure Storage Windows Azure Caching Service Démarche Nuget « Topaz » Définir une politique de rejeux Encadrer les actions à protéger par les extensions TOPAZ
  41. 41. Stratégie de rejeuxTOPAZ Retry policy par configuration : Ou par code :
  42. 42. Stratégie de rejeuxTOPAZ Utilisation avec SQL Azure Utilisation de ReliableSqlConnection Utilisation des extensions de méthodes de SqlCommand telles que ExecuteNonQueryWithRetry() Ouverture de connexion : Exécution de commande :
  43. 43. Stratégie de rejeuxTOPAZ Entity Framework, SQL Azure et TOPAZ Nécessite de gérer la connexion manuellement Encadrer le code atomique avec le ExecuteAction
  44. 44. Stratégie de rejeuxTOPAZ Monitoring des retry : Event « Retrying » Gère les méthodes asynchrones Stratégies des détections d’erreurs extensibles Stratégies des Retry extensibles
  45. 45. Patterns Windows AzureCode session : ARC305SLA
  46. 46. SLA Le SLA définie par chaque élément de l’offre Azure n’est garanti que : Si vous déployer au minimum deux instances Voir trois, si vous souhaiter assurer ce SLA en mode dégradé (update, recyclage, déploiement, etc.) Dans certains cas, une instance durant quelques minutes/heures peut suffire Suivre le SLA et les performances de son application : Monitoring via les compteurs de performances SCOM avec Azure Management Pack Déploiement possible d’agent AVIcode Adapter son infrastructure - Auto-scalling : Approché évidente quand on parle de Cloud Bien plus complexe que l’on ne l’imagine au premier abord Il s’agit non seulement de supporter une charge qui augmente mais aussi une charge qui diminue : Garantir le SLA Optimiser les coûts Enterprise Library fourni une implémentation au travers de WAZABI
  47. 47. SLAEnterprise Library – Azure Autoscalling Block : WAZABI <rules xmlns="http://schemas.microsoft.com/practices/2011/entlib/autoscaling/rules"> <constraintRules> <rule name="BusinessHours" description="Scale out during business hours" rank="100" enabled="true"> <timetable startTime="07:00:00" duration="12:00:00" startDate="2012-02-07" utcOffset="-04:00"> <weekly days="Monday Tuesday Wednesday Thursday Friday"/> </timetable> <actions> <range target="MvcWebRole1" min="2" max="12"/> </actions> </rule> </constraintRules> <reactiveRules> <rule name="HotCPU" enabled="true" rank="100"> <when> <greater operand="CPU" than="85" /> </when> <actions> <scale target="Demo.WebSite" by="1" /> </actions> </rule> <rule name="LowCPU" enabled="true" rank="100"> <when> <less operand="CPU" than="35" /> </when> <actions> <scale target="Demo.WebSite" by="-1" /> </actions> </rule> </reactiveRules> <operands> <performanceCounter alias="CPU" source="Demo.WebSite" performanceCounterName="Processor(_Total)% Processor Time« timespan="00:10:00" aggregate="Average" /> </operands> </rules>
  48. 48. Patterns Windows AzureCode session : ARC305Présence globale
  49. 49. Présence globale Objectif : Conserver le niveau de service quelque soit l’emplacement de l’utilisateur dans le monde Contraintes : Déployer les ressources au plus proche de l’utilisateur Garder les données au plus près du code Problématiques : Géolocalisation de l’utilisateur et routage des requêtes Synchronisation des données
  50. 50. Présence globale Northern Europe North Central USA 100ms 50ms Eastern Asia Western Europe South Central USA Southeast Asia
  51. 51. Présence globaleTraffic Manager Serveurs DNS Lookup www.demo.com Map www.demo.com to demo.trafficmanager.net Résolution de trafficmanager.net 1 2 Retourne l’adresse IP de Traffic Manager Lookup demo.trafficmanager.net 3 Traffic Manager 4Connexion à l’instance Résolution demo.trafficmanager.netspéficiée 5 Retourne l’adresse IP de l’instance (Stratégie* + Monitoring) la plus appropriée demo-us.cloudapp.net demo-eu.cloudapp.net demo-as.cloudapp.net États-Unis Europe Asie *Performance - trafic envoyé au service ayant le moins de latence réseau *Round Robin - trafic distribué de manière égale sur tous les services *Failover - trafic envoyé au premier service, si offline, au service suivant de la liste
  52. 52. Présence globaleSQL Data Sync Data Center A GET / SET Data Center C GET / SET Data Center B
  53. 53. Présence globaleService Bus Data Center A Update GET SET Update Update Rules Topic Subscriptions Actions Update Update SET Update GET Data Center B
  54. 54. Patterns Windows AzureCode session : ARC305Questions / Réponses
  55. 55. Questions / Réponses
  56. 56. Ressources Windows Azure gratuites Testez Windows Azure Abonnés MSDN, vous gratuitement pendant bénéficiez de Windows 90 jours Azure http://aka.ms/  http://aka.ms/ tester-azure-90j activer-azure-msdn Scénario d’utilisation (B2B): http://aka.ms/ b2b-avec-sqlazure
  57. 57. Pour aller plus loin Prochaines sessions des Dev Camps Chaque semaine, les 10 février Live Open Data - Développer des applications riches avec le DevCamps 2012 Meeting protocole Open Data 16 février Live Azure series - Développer des applications sociales sur la 2012 Meeting plateforme Windows Azure ALM, Azure, Windows Phone, HTML5, OpenData 17 février Live http://msdn.microsoft.com/fr-fr/devcamp 2012 Meeting Comprendre le canvas avec Galactic et la librairie three.js 21 février Live La production automatisée de code avec CodeFluent Entities Téléchargement, ressources 2012 Meeting 2 mars Live Comprendre et mettre en oeuvre le toolkit Azure pour Windows 2012 Meeting Phone 7, iOS et Android et toolkits : RdV sur MSDN 6 mars 2012 Live Meeting Nuget et ALM http://msdn.microsoft.com/fr-fr/ 9 mars Live Kinect - Bien gérer la vie de son capteur 2012 Meeting Les offres à connaître 13 mars Live Sharepoint series - Automatisation des tests 2012 Meeting 14 mars Live TFS Health Check - vérifier la bonne santé de votre plateforme 90 jours d’essai gratuit de Windows Azure 2012 Meeting de développement www.windowsazure.fr 15 mars 2012 Live Meeting Azure series - Développer pour les téléphones, les tablettes et le cloud avec Visual Studio 2010 16 mars Live Applications METRO design - Désossage en règle dun template Jusqu’à 35% de réduction sur Visual Studio 2012 Meeting METRO javascript Pro, avec l’abonnement MSDN 20 mars Live Retour dexpérience LightSwitch, Optimisation de laccès aux www.visualstudio.fr 2012 Meeting données, Intégration Silverlight 23 mars Live OAuth - la clé de lutilisation des réseaux sociaux dans votre 2012 Meeting application
  58. 58. Vous êtes dans la salle 251
  59. 59. palais descongrèsParis7, 8 et 9février 2012

×