Patterns azure cloud

36
29 Avril 2014, Paris, France La Communauté Open Source Azure Française

Transcript of Patterns azure cloud

Page 1: Patterns azure cloud

29 Avril 2014, Paris, FranceLa Communauté Open Source Azure Française

Page 2: Patterns azure cloud

PATTERNS CLOUD / AZURE

Marius Zaharia

Page 3: Patterns azure cloud

Marius Zaharia

Expert Azure & Cloud

Twitter : @marius_on_azure

Blog : http://marius-zaharia.blogspot.com

LinkedIn : http://www.linkedin.com/in/mzaharia

Email : [email protected]

Page 4: Patterns azure cloud

Agenda

Problématiques type

Rubriques d’orientation et guidage

Patrons de conception

Récapitulatif

Références

Page 5: Patterns azure cloud

PROBLEMATIQUES

ORIENTATION

Page 6: Patterns azure cloud

Problématiques type

1. Disponibilité

2. Gestion des données

3. Conception et implémentation

4. Echange de messages

5. Gestion applicative et monitoring

6. Performance et évolutivité (scaling)

7. Résilience

8. Sécurité

Page 7: Patterns azure cloud

Rubriques de orientation/guidage

a) Messagerie asynchrone

(Asynchronous Messaging)

b) Mise à l’échelle automatique

(Autoscaling)

c) Mise en cache

d) Consistance des données

e) Partitionnement des données

f) Réplication et synchronisation

des données

g) Instrumentation et télémétrie

h) Déploiement distribué

(multi-datacenter)

i) Service metering

Page 8: Patterns azure cloud

PATRONS DE CONCEPTION CLOUD

Page 9: Patterns azure cloud

Patron: CACHE-ASIDE (mise en cache à-côté)

A la demande, charge des données provenant

d’une structure de données et les garde

disponible pour utilisation.

Ce modèle peut améliorer les performances et

aide à maintenir la cohérence entre les données

contenues dans le cache et les données dans le

magasin de données sous-jacent.

Solution Azure :

AZURE CACHE (en preview)

Page 10: Patterns azure cloud

Patron : CIRCUIT BREAKER (Disjoncteur)

Permet de gérer les erreurs qui

peuvent prendre une quantité

variable de temps pour les

rectifier, lors de la connexion à un

service distant ou à une

ressource.

Ce modèle peut améliorer la

stabilité et la résilience d’une

application.

Solution Azure: code custom

Page 11: Patterns azure cloud

Patron: COMPENSATING TRANSACTION (Transaction compensée)

Permet annuler les actions effectuées par une série d'étapes qui, ensemble, définissent

une opération unitaire et consistante, si une ou plusieurs des étapes échoue.

Les opérations qui suivent le modèle de cohérence éventuelle sont généralement trouvées dans les applications hébergé dans le cloud, qui mettent en œuvre des

processus et des flux de travail complexes.

Solution Azure: BizTalk Server (en mode IaaS)

Page 12: Patterns azure cloud

Patron: COMPETING CONSUMERS (consommateurs concurrents)

Utilise plusieurs consommateurs simultanés pour traiter les messages reçus sur le même

canal de messagerie.

Ce modèle permet à un système de traiter plusieurs messages simultanément pour

optimiser le débit, pour améliorer l'évolutivité et de la disponibilité, et d'équilibrer la

charge de travail.

Solution Azure:

- STORAGE QUEUE ou

SERVICE BUS QUEUE;

- CLOUD SERVICES/Worker Rôles

(comme consommateurs)

Page 13: Patterns azure cloud

Patron: COMPUTE RESOURCE CONSOLIDATION

(consolidation des ressources de calcul)

Permet consolider les tâches ou

opérations multiples dans une unité de

calcul unique.

Ce modèle peut augmenter l'utilisation

des ressources de calcul et de réduire

les coûts et les frais de gestion associés

à la réalisation d'un traitement de

calcul dans les applications hébergées

dans le cloud.

Solution Azure:

- plusieurs web sites dans un Web Role

- plusieurs web sites dans un Web Site- plusieurs services dans un Worker Role

Page 14: Patterns azure cloud

Patron: CQRS - COMMAND & QUERY RESPONSIBILITY SEGREGATION

(séparation des responsabilités commande vs demande)

Séparer les opérations qui lisent les

données provenant de l'exploitation des

opérations de mise à jour de données, à

l'aide des interfaces distinctes.

Ce modèle peut optimiser les

performances, l'évolutivité et la sécurité;

soutenir l'évolution du système au fil du

temps grâce à une plus grande flexibilité,

et empêcher les commandes de mise à

jour de causer des conflits de fusion au

niveau du domaine.

Solution Azure: code custom

Page 15: Patterns azure cloud

Patron: EVENT SOURCING (Matérialisation d’événements)

Utilisez une structure de données en mode ajout-

uniquement pour enregistrer la série complète

d'événements qui décrivent les mesures prises sur

les données dans un domaine, plutôt que de

stocker seulement l'état actuel, de sorte que le

magasin peut être utilisé pour matérialiser les

objets de domaine.

Ce modèle peut simplifier les tâches dans des

domaines complexes, améliorer les

performances, l'évolutivité et réactivité; assurer la

cohérence des données transactionnelles et

maintenir des pistes de vérification complètes et l'historique qui peut permettre des actions de

compensation.

Solution Azure: code custom

Page 16: Patterns azure cloud

Patron: EXTERNAL CONFIGURATION STORE

(structure de configuration externe)

Permet déplacer les informations de

configuration de l’intérieur du package

de déploiement de l'application à un

emplacement centralisé.

Ce modèle peut offrir des possibilités de

gestion et de contrôle des données de

configuration plus facile, et pour le

partage de données de configuration

entre les applications ou les instances

d'application.

Solution Azure: configuration externalisée (au niveau portail) des Web

Sites, Cloud Services, …

Page 17: Patterns azure cloud

Patron: FEDERATED IDENTITY (Identité fédérée)

Permet déléguer l'authentification à un

fournisseur d'identité externe.

Ce modèle peut simplifier le développement,

de réduire l'obligation pour l'administration de

l'utilisateur, et d'améliorer l'expérience utilisateur

de l'application.

Solution Azure: AZURE ACTIVE DIRECTORY /

ACCESS CONTROL SERVICES

Page 18: Patterns azure cloud

Patron: GATEKEEPER (« garde-porte »)

Protège les applications et services à l'aide d'une instance de serveur dédiée qui agit

comme un intermédiaire entre les clients et l'application ou le service, valide et

assainit les demandes, et transfère des demandes et des données entre eux.

Ce modèle peut fournir une couche supplémentaire de sécurité et limiter la surface

d'attaque du système.

Service Azure: Pare-feu de CLOUD SERVICES, SQL DATABASE (restriction/ACL de

plages d’IP); code custom via web services (Cloud Services)

Page 19: Patterns azure cloud

PATRON: HEALTH MONITORING ENDPOINT

(point de terminaison pour la surveillance de fonctionnement)

Mets en œuvre des contrôles

fonctionnels d'une application que

les outils externes peuvent accéder

par l'intermédiaire des points de

terminaison exposés à intervalles

réguliers.

Ce modèle peut aider à vérifier que

les applications et services

s’exécutent correctement.

Service Azure: Endpoints pour les

Web Sites, VMs

Page 20: Patterns azure cloud

Patron: INDEX TABLE (Tableau indexé)

Créer des index sur les champs

dans les structures de données qui

sont souvent référencés par les

critères de requête.

Ce modèle peut améliorer les

performances des requêtes en permettant aux applications de

récupérer plus rapidement les

données à partir d‘une base de

données.

Service Azure: SQL DATABASE,

AZURE STORAGE TABLE

Page 21: Patterns azure cloud

Patron: LEADER ELECTION (Election du leader)

Permet coordonner les actions effectuées par une collection d’instances

collaboratives de tâches dans une

application distribuée en élisant un cas

comme le leader qui assume la

responsabilité de la gestion des autres cas.

Ce modèle peut aider à s'assurer que les

tâches ne sont pas en conflit les uns avec

les autres, provoquer des conflits pour les

ressources partagées, ou interférer par inadvertance avec le travail que d'autres

instances de tâche exécutent.

Service Azure: code custom

Page 22: Patterns azure cloud

Patron: MATERIALIZED VIEW (vue matérialisée)

Générer des vues pré-peuplées

sur les données dans un ou

plusieurs magasins de données

lorsque les données sont

formatées d'une manière qui ne

favorise pas les opérations de

requête nécessaires.

Ce modèle peut aider à soutenir

l'interrogation efficace et extraction de données, et

d'améliorer les performances des

applications.

Service Azure: vues SQL DATABASE (custom)

Page 23: Patterns azure cloud

Patron: PIPES AND FILTRERS (Tuyaux et filtres)

Décomposer une tâche qui

effectue un traitement complexe en

une série d'éléments discrets qui

peuvent être réutilisés.

Ce modèle peut améliorer les

performances, l'évolutivité et la

réutilisabilité en permettant

éléments de la tâche qui effectuent

le traitement à être déployés et mis

à l'échelle de façon indépendante.

Service Azure: BizTalk Services

Page 24: Patterns azure cloud

Patron: PRIORITY QUEUE (file d’attente de priorité)

Permet prioriser les demandes

envoyées aux services afin que les

demandes avec une priorité plus

élevée sont reçues et traitées plus

rapidement que celles d'une priorité

inférieure.

Ce modèle est utile dans les

applications qui offrent différentes

garanties de niveau de service pour

différents types de client.

Service Azure: SERVICE BUS TOPICS

AND SUBSCRIPTIONS

Page 25: Patterns azure cloud

Patron: QUEUE-BASED LOAD LEVELING

(nivellement de charge basée sur des files)

Utilisez une file d'attente qui agit comme un tampon entre une tâche et un service

qu'il invoque afin de lisser les charges intermittent lourds qui peuvent causer d'autres

le service à l'échec ou la tâche à expiration.

Ce modèle peut aider à minimiser l'impact des pics de la demande de la

disponibilité et de la réactivité à la fois pour la tâche et le service.

Service Azure: AZURE STORAGE QUEUE + WORKER ROLES

Page 26: Patterns azure cloud

Patron: RETRY (ré-essai)

Permet à une application de gérer les échecs temporaires lors de la connexion à un

service ou une ressource réseau en toute transparence, afin de relancer l'opération

dans l'espoir que l'échec est transitoire.

Cette configuration permet d'améliorer la stabilité de l'application.

Service Azure: Entity Framework*; Enterprise Library*

Page 27: Patterns azure cloud

Patron: RUNTIME RECONFIGURATION

(reconfiguration au moment de l’exécution)

Permet concevoir une application de sorte qu'elle peut être reconfiguré sans

nécessiter le redéploiement ou le redémarrage de l'application.

Cela permet de maintenir la disponibilité et de minimiser les temps d'arrêt.

Service Azure: configuration de Cloud Services, Web Sites, …

Page 28: Patterns azure cloud

Patron: SCHEDULER AGENT SUPERVISOR

(planificateur-agent-superviseur)

Coordonne un ensemble d'actions à travers un

ensemble distribué de services et autres

ressources distantes, tenter de gérer de

manière transparente les défauts si l'une de ces

actions échouent, ou annuler les effets du

travail effectué si le système ne peut pas

récupérer d'une faute.

Ce modèle peut améliorer la résilience d'un

système distribué en lui permettant de

récupérer et recommencer actions qui

échouent à cause des exceptions transitoires,

les défauts de longue durée, et les échecs du processus.

Service Azure: AZURE MANAGEMENT API

BizTalk Server (sur IaaS)

Page 29: Patterns azure cloud

Patron: SHARDING (Fragmentation)

Diviser un magasin de données en un

ensemble de cloisons horizontales

éclatées.

Ce modèle peut améliorer

l'évolutivité (scalabilité) lors de

l'enregistrement et l'accès à de

grands volumes de données.

Service Azure: SQL DATABASE

FEDERATION

Page 30: Patterns azure cloud

Patron: STATIC CONTENT HOSTING

(hébergement de contenu statique)

Déployer du contenu statique à un

service de stockage en nuage qui

peut livrer ceux-ci directement au

client.

Ce modèle peut réduire la nécessité

d'instances de calcul potentiellement coûteux.

Service Azure: AZURE CDN

Page 31: Patterns azure cloud

Patron: THROTTLING (Limitation de niveau)

Permet de contrôler la consommation

des ressources utilisées par une

instance d'une application, un

locataire particulier ou un service

entier.

Ce modèle peut permettre au système de continuer à fonctionner et

respecter les contrats de niveau de

service, même si une augmentation

de la demande impose une charge

extrême sur les ressources.

Service Azure: Connexions à SQL

DATABASE

Page 32: Patterns azure cloud

Patron: VALET KEY (Clé de sureté)

Utilisez un jeton ou une clé qui fournit aux

clients un accès direct restreint à une

ressource ou un service spécifique afin de

décharger des opérations de transfert de

données de code de l'application.

Ce modèle est particulièrement utile dans les applications qui utilisent des systèmes ou

des files d'attente de stockage en cloud, et

peut réduire les coûts et maximiser

l'évolutivité et les performances.

Solution Azure: accès aux conteneurs/blobs

de AZURE STORAGE BLOB

Page 33: Patterns azure cloud

Récapitulatf

Patterns étudiés:

1. Cache-aside

2. Circuit Breaker

3. Compensating Transaction

4. Competing Consumers

5. Compute Resource

Consolidation

6. Command and Query

Responsibility Segregation (CQRS)

7. Event Sourcing

8. External Configuration Store

9. Federated Identity

10.Gatekeeper

11.Health Endpoint Monitoring

12. Index Table

13.Leader Election

14.Materialized View

15.Pipes and Filters

16.Priority Queue

17.Queue-based Load Leveling

18.Retry Pattern

19.Runtime Reconfiguration

20.Scheduler Agent Supervisor

21.Sharding

22.Static Content Hosting

23.Throttling

24.Valet Key

Page 34: Patterns azure cloud

Références, à suivre

Cloud Design Patterns (de P&P):

http://msdn.microsoft.com/en-us/library/dn568099.aspx

FailSafe: Building Scalable, Resilient Cloud Services

http://aka.ms/FailsafeCloud

Cloud Service Fundamentals in Windows Azure

http://aka.ms/csf

Cloud Architecture Patterns: Using Microsoft Azure – un très bon livre de Bill Wilder

Building Real-World Cloud Apps with Windows Azure :

http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-

real-world-cloud-apps-with-windows-azure/introduction

Page 35: Patterns azure cloud

QUESTIONS ?

Page 36: Patterns azure cloud

MERCI !