Patterns Windows Azure
-
Upload
microsoft -
Category
Technology
-
view
96 -
download
0
description
Transcript of Patterns Windows Azure
Eric Craeymeersch
Service Line Manager [email protected]
Arnaud Cleret
Directeur Associé [email protected]
Patterns Windows Azure Code session : ARC305
Mardi 7 février 2012
Vous êtes dans la salle 251
palais des
congrès
Paris
7, 8 et 9
février 2012
Qui sommes-nous ?
Fondée en
janvier 2010
Statut
JEI + CIR
45
Personnes
CA
2010 : 2M€
2011 : 3M€
∑ ( Edition : Service )
Positionnement
« Jeune Entreprise Innovante », vNext se positionne sur le marché des
nouvelles technologies, essentiellement orientées sur les solutions
Microsoft, mais également sur les usages, l’industrialisation et les modes de
distribution de type SaaS.
Domaines d’activité
Édition : La création de solutions logicielles packagées aussi bien
focalisées métier que grand public.
Services : Consulting, Coaching, Design, Réalisation, etc.
R&D : Toutes les initiatives pour apporter des solutions nouvelles ou
meilleures. Cette activité supporte les deux autres domaines.
http://www.vNext.fr - [email protected]
Agenda
Cycle de
vie
Configuration
à chaud
Stockage
local
Applications
distribuées
Stratégie de
rejeux
Niveau de
SLA
Présence
globale
Questions
Réponses
Patterns Windows Azure Code session : ARC305
Cycle de vie
Contexte : Hébergement d’une application tierce
dans un WorkerRole Azure
Cycles de vie Corrélation avec une application tierce
Application
hébergée sur Azure
Worker
EXE Config
Cycles de vie Corrélation avec une application tierce – Approche Simple
OnStart
• Initialisation environnement
• Lance les processus
OnRun
• Surveillance des processus
• Si problème, recycle l’instance
On
Stopping
• Envoi stop aux processus
Starting
Ready
Stopping
Cycles de vie Corrélation avec une application tierce – Approche simple
Azure Application
Pas lancée
Lancée
Arrêtée
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 ?
Cycles de vie Corrélation avec une application tierce – Problématiques
Starting
Ready
Stopping
Cycles de vie Corrélation avec une application tierce – Problématiques
? ?
Azure Application
Découplage
Remise à plat du workflow opérationnel de l’application hébergée
Matching des états avec les évènements Azure
Exemple
Cycles de vie Corrélation avec une application tierce – Nouvelle approche
OnStart
• Initialisation minimale
OnRun
• Gestion complète du workflow de l’application
• Demande d’exclusion du LoadBalancer sur certains états
On
Stopping
• Quitte le workflow principal en quittant proprement l’application
Patterns Windows Azure Code session : ARC305
Configuration à 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)
Reconfiguration à chaud
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 !
Reconfiguration à chaud Fichier de configuration du service Azure .cscfg
Reconfiguration à chaud Fichier de configuration du service Azure .cscfg
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
Reconfiguration à chaud Fichier de configuration de l’application web.config
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
Reconfiguration à chaud Externalisation de la gestion de configuration
Patterns Windows Azure Code session : ARC305
Utilisation du stockage local
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
Utilisation du Local Storage
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
Utilisation des stockage locaux
Patterns Windows Azure Code session : ARC305
Application distribuée
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
Application distribuée Patterns de Communications
Application distribuée Patterns de communications – Inter-rôle
Load
Bala
nce
r Web Role
Instance 2
Web Role
Instance 1 Worker Role
Instance 2
Worker Role
Instance 1
Worker Role
Instance 3
Application distribuée Patterns de communications – Inter-rôle
Worker Role
Instance 2
Worker Role
Instance 1
Worker Role
Instance 3
Web Role
Instance 2
Web Role
Instance 1
Lisse la charge
Queue
Azure Queue vs Azure Service Bus Queue
Application distribuée Patterns de communications – Inter-rôle
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
Application distribuée Patterns de communications – Inter-rôle
Worker Role
Instance 2
Worker Role
Instance 1
Worker Role
Instance 3
Web Role
Instance 2
Web Role
Instance 1
Lisse la charge
Blob
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
Application distribuée Patterns de communications – Inter-rôle
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
Application distribuée Communications avec le SI
Application distribuée Communications avec le SI – Service Bus Relay
Service Bus
Sender Receiver
Frontend Nodes
Ctrl
1
2
3
4
Forwarder
NLB
Ctrl
Application distribuée Communications avec le SI – Service Bus Relay
Service Bus
Receiver
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
Application distribuée Communications avec le SI – Service Bus Relay
Application
Partner
Fire and Forget
Request
Application
Partner
Request/Reply
Request Reply
Application
Partner
To-way interaction
Application
Request
and Replyc
Partner
Request
and Reply
Application
Partner
Broadcast
Request
Partner Partner
Protocoles supportés : HTTP/SOAP – HTTP/REST - TCP
Accès à l’ensemble des ressources de l’entreprise à l’identique d’une solution On-Premise
Création d’un réseau virtuel : Basé sur IPv6 et IPSec over SSTP
Connexions sortantes uniquement en Https
Supporté uniquement pour les OS Windows
Contexte de sécurité de type Kerberos : L’instance du service hébergé devra intégrer le domaine Active Directory de 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
Application distribuée Communications avec le SI – Azure Connect
Cloud
Hosted Service
Connect Agent
Connect Agent
On-Premise
Infrastructure
Azure Connect
Relay
IPSec over SSTP
IPSec over SSTP
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
Application distribuée Communications avec les partenaires
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
Application distribuée Communications avec les partenaires - Service Bus Messaging
Subscriptions Topic Rules
Actions E
E
E R
R
R
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
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 :
Les actions peuvent ajouter/modifier/supprimer les
propriétés du message :
Application distribuée Communications avec les partenaires - Service Bus Messaging
InvoiceTotal > 10000.00 OR ClientRating <3
ShipDestCtry = ‘USA’ AND ShipDestState=‘WA’
LastName LIKE ‘V%’
SET AuditRequired = 1
Patterns Windows Azure Code session : ARC305
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
Stratégie de rejeux
Nécessité d’implémenter une stratégie de rejeux
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
Stratégie de rejeux TOPAZ
Retry policy par configuration :
Ou par code :
Stratégie de rejeux TOPAZ
Utilisation avec SQL Azure Utilisation de ReliableSqlConnection
Utilisation des extensions de méthodes de SqlCommand telles que ExecuteNonQueryWithRetry()
Stratégie de rejeux TOPAZ
Exécution de commande :
Ouverture de connexion :
Entity Framework, SQL Azure et TOPAZ Nécessite de gérer la connexion manuellement
Stratégie de rejeux TOPAZ
Encadrer le code atomique avec le ExecuteAction
Monitoring des retry : Event « Retrying »
Stratégie de rejeux TOPAZ
Gère les méthodes asynchrones
Stratégies des détections d’erreurs extensibles
Stratégies des Retry extensibles
Patterns Windows Azure Code session : ARC305
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
SLA
SLA Enterprise 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>
Patterns Windows Azure Code session : ARC305
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
Présence globale
North Central USA
South Central
USA
Northern
Europe
Western
Europe
Eastern Asia
Southeast
Asia
Présence globale
50ms
100ms
Présence globale Traffic Manager
Serveurs DNS
Map www.demo.com to demo.trafficmanager.net
Résolution de trafficmanager.net
Traffic Manager
Résolution demo.trafficmanager.net
(Stratégie* + Monitoring)
demo-us.cloudapp.net
États-Unis
demo-eu.cloudapp.net
Europe
demo-as.cloudapp.net
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
1
Lookup www.demo.com
2
Retourne l’adresse IP de Traffic Manager
3
Lookup demo.trafficmanager.net
4
Retourne l’adresse IP de l’instance
la plus appropriée
5 Connexion à l’instance
spéficiée
Data Center B
GET / SET
Présence globale SQL Data Sync
Data Center A
GET / SET
Data Center C
Présence globale Service Bus
Data Center A
Subscriptions Topic
Data Center B
GET
SET
GET
SET
Rules
Actions
Update
Update
Update
Update
Update
Update
Patterns Windows Azure Code session : ARC305
Questions / Réponses
Questions / Réponses
Ressources Windows Azure gratuites
Testez Windows Azure gratuitement pendant 90 jours
http://aka.ms/ tester-azure-90j
Abonnés MSDN, vous
bénéficiez de Windows
Azure
http://aka.ms/
activer-azure-msdn
Scénario d’utilisation (B2B):
http://aka.ms/
b2b-avec-sqlazure
Chaque semaine, les DevCamps ALM, Azure, Windows Phone, HTML5, OpenData http://msdn.microsoft.com/fr-fr/devcamp
Téléchargement, ressources et toolkits : RdV sur MSDN http://msdn.microsoft.com/fr-fr/
Les offres à connaître 90 jours d’essai gratuit de Windows Azure www.windowsazure.fr Jusqu’à 35% de réduction sur Visual Studio Pro, avec l’abonnement MSDN www.visualstudio.fr
Pour aller plus loin
10 février
2012
Live
Meeting
Open Data - Développer des applications riches avec le
protocole Open Data
16 février
2012
Live
Meeting
Azure series - Développer des applications sociales sur la
plateforme Windows Azure
17 février
2012
Live
Meeting Comprendre le canvas avec Galactic et la librairie three.js
21 février
2012
Live
Meeting La production automatisée de code avec CodeFluent Entities
2 mars
2012
Live
Meeting
Comprendre et mettre en oeuvre le toolkit Azure pour Windows
Phone 7, iOS et Android
6 mars
2012
Live
Meeting Nuget et ALM
9 mars
2012
Live
Meeting Kinect - Bien gérer la vie de son capteur
13 mars
2012
Live
Meeting Sharepoint series - Automatisation des tests
14 mars
2012
Live
Meeting
TFS Health Check - vérifier la bonne santé de votre plateforme
de développement
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
2012
Live
Meeting
Applications METRO design - Désossage en règle d'un template
METRO javascript
20 mars
2012
Live
Meeting
Retour d'expérience LightSwitch, Optimisation de l'accès aux
données, Intégration Silverlight
23 mars
2012
Live
Meeting
OAuth - la clé de l'utilisation des réseaux sociaux dans votre
application
Prochaines sessions des Dev Camps
Vous êtes dans la salle 251
palais des
congrès
Paris
7, 8 et 9
février 2012