59
Eric Craeymeersch Service Line Manager [email protected] Arnaud Cleret Directeur Associé [email protected] Patterns Windows Azure Code session : ARC305 Mardi 7 février 2012

Patterns Windows Azure

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: 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

Page 2: Patterns Windows Azure

Vous êtes dans la salle 251

Page 3: Patterns Windows Azure

palais des

congrès

Paris

7, 8 et 9

février 2012

Page 4: Patterns Windows Azure

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]

Page 5: Patterns Windows Azure

Agenda

Cycle de

vie

Configuration

à chaud

Stockage

local

Applications

distribuées

Stratégie de

rejeux

Niveau de

SLA

Présence

globale

Questions

Réponses

Page 6: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Cycle de vie

Page 7: Patterns Windows Azure

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

Page 8: Patterns Windows Azure

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

Page 9: Patterns Windows Azure

Starting

Ready

Stopping

Cycles de vie Corrélation avec une application tierce – Approche simple

Azure Application

Pas lancée

Lancée

Arrêtée

Page 10: Patterns Windows Azure

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

Page 11: Patterns Windows Azure

Starting

Ready

Stopping

Cycles de vie Corrélation avec une application tierce – Problématiques

? ?

Azure Application

Page 12: Patterns Windows Azure

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

Page 13: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Configuration à chaud

Page 14: Patterns Windows Azure

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

Page 15: Patterns Windows Azure

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

Page 16: Patterns Windows Azure

Reconfiguration à chaud Fichier de configuration du service Azure .cscfg

Page 17: Patterns Windows Azure

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

Page 18: Patterns Windows Azure

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

Page 19: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Utilisation du stockage local

Page 20: Patterns Windows Azure

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

Page 21: Patterns Windows Azure

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

Page 22: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Application distribuée

Page 23: Patterns Windows Azure

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

Page 24: Patterns Windows Azure

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

Page 25: Patterns Windows Azure

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

Page 26: Patterns Windows Azure

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

Page 27: Patterns Windows Azure

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

Page 28: Patterns Windows Azure

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

Page 29: Patterns Windows Azure

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

Page 30: Patterns Windows Azure

Application distribuée Communications avec le SI – Service Bus Relay

Service Bus

Sender Receiver

Frontend Nodes

Ctrl

1

2

3

4

Forwarder

NLB

Ctrl

Page 31: Patterns Windows Azure

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

Page 32: Patterns Windows Azure

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

Page 33: Patterns Windows Azure

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

Page 34: Patterns Windows Azure

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

Page 35: Patterns Windows Azure

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

Page 36: Patterns Windows Azure

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

Page 37: Patterns Windows Azure

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

Page 38: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Stratégie de rejeux

Page 39: Patterns Windows Azure

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

Page 40: Patterns Windows Azure

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

Page 41: Patterns Windows Azure

Retry policy par configuration :

Ou par code :

Stratégie de rejeux TOPAZ

Page 42: Patterns Windows Azure

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 :

Page 43: Patterns Windows Azure

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

Page 44: Patterns Windows Azure

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

Page 45: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

SLA

Page 46: Patterns Windows Azure

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

Page 47: Patterns Windows Azure

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>

Page 48: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Présence globale

Page 49: Patterns Windows Azure

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

Page 50: Patterns Windows Azure

North Central USA

South Central

USA

Northern

Europe

Western

Europe

Eastern Asia

Southeast

Asia

Présence globale

50ms

100ms

Page 51: Patterns Windows Azure

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

Page 52: Patterns Windows Azure

Data Center B

GET / SET

Présence globale SQL Data Sync

Data Center A

GET / SET

Data Center C

Page 53: Patterns Windows Azure

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

Page 54: Patterns Windows Azure

Patterns Windows Azure Code session : ARC305

Questions / Réponses

Page 55: Patterns Windows Azure

Questions / Réponses

Page 56: Patterns Windows Azure

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

Page 57: Patterns Windows Azure

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

Page 58: Patterns Windows Azure

Vous êtes dans la salle 251

Page 59: Patterns Windows Azure

palais des

congrès

Paris

7, 8 et 9

février 2012