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.
1. Patterns Windows Azure
Code session : ARC305
Mardi 7 février 2012
Arnaud Cleret Eric Craeymeersch
Directeur Associé Service Line Manager
Arnaud.Cleret@vNext.fr Eric.Craeymeersch@vNext.fr
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. Agenda
Cycle de Configuration Stockage Applications
vie à chaud local distribuées
Stratégie de Niveau de Présence Questions
rejeux SLA globale Réponses
7. Cycles de vie
Corré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. Cycles de vie
Corré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. Cycles de vie
Corrélation avec une application tierce – Approche simple
Azure Application
Starting Pas lancée
Ready Lancée
Stopping Arrêtée
10. Cycles de vie
Corré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. Cycles de vie
Corrélation avec une application tierce – Problématiques
Azure Application
Starting
? ?
Ready
Stopping
12. Cycles de vie
Corré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
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. Reconfiguration à chaud
Fichier 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 !
17. Reconfiguration à chaud
Fichier 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. Reconfiguration à chaud
Externalisation 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
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. 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
23. Application distribuée
Patterns 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. Application distribuée
Patterns 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. Application distribuée
Patterns 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. Application distribuée
Patterns 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. Application distribuée
Patterns 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. Application distribuée
Patterns 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. Application distribuée
Communications 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
31. Application distribuée
Communications avec le SI – Service Bus Relay
Service Bus
Frontend
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. Application distribuée
Communications avec le SI – Service Bus Relay
Fire 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. Application distribuée
Communications 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. Application distribuée
Communications 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. Application distribuée
Communications 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. Application distribuée
Communications 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. Application distribuée
Communications 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
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. Stratégie de rejeux
TOPAZ
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
42. Stratégie de rejeux
TOPAZ
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. Stratégie de rejeux
TOPAZ
Entity Framework, SQL Azure et TOPAZ
Nécessite de gérer la connexion manuellement
Encadrer le code atomique avec le ExecuteAction
44. Stratégie de rejeux
TOPAZ
Monitoring des retry : Event « Retrying »
Gère les méthodes asynchrones
Stratégies des détections d’erreurs extensibles
Stratégies des Retry extensibles
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
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. Présence globale
Northern
Europe
North Central
USA 100ms
50ms Eastern Asia
Western
Europe
South Central
USA Southeast
Asia
51. Présence globale
Traffic 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
4
Connexion à l’instance Résolution demo.trafficmanager.net
spé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
53. Présence globale
Service Bus
Data Center A
Update GET
SET
Update
Update
Rules
Topic Subscriptions
Actions
Update
Update
SET
Update GET
Data Center B
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. 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 d'un template
Jusqu’à 35% de réduction sur Visual Studio 2012 Meeting METRO javascript
Pro, avec l’abonnement MSDN 20 mars Live Retour d'expérience LightSwitch, Optimisation de l'accès aux
www.visualstudio.fr 2012 Meeting données, Intégration Silverlight
23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans votre
2012 Meeting application