Les Design Patterns
appliqués au Cloud
MAI 2014
Pascal Laurin
• Développeur et architecte .NET
Azure (Cloud Patterns)
Client-Serveur (IoC/DI)
WPF (MVVM)
SQL (Repository)
...
Cloud Design Patterns
Patterns & Practices
Cloud Design Patterns
Patterns & Practices
• Problem areas in the cloud
• Availability, Data Management, Design and Implem...
Pourquoi étudier les Design Patterns
• Communications
• Options et compromis
• Mettre un nom sur les Patterns qui émergent...
Le Design et les Patterns sont plus
importants que les Design Patterns
• « Le voyage est plus important que la destination...
Cache-Aside pattern
• Load data on demand into a cache from a data store
Data StoreCache
Compute
Mise en œuvre
• Lecture
1. Lors d’une demande pour de la donnée on regarde premièrement dans le Cache
1. Si l’information ...
Avantages
• Peu d’écriture, beaucoup de lecture
• Proximité de l’information
• Réduction de la bande passante (pour Cache ...
Problématiques et considérations
• Cohérence entre les données en le Cache et le Data Store
• Durée de vie des données en ...
Competing Consumers pattern
100/s 100/s 25/s 100/s
25/s
Competing Consumers pattern
100/s 100/s
25/s
100/s
100/s
Competing Consumers pattern
• Enable multiple concurrent consumers to process messages received
on the same messaging chan...
Mise en œuvre
• Utilisation d’une queue pour les messages
• Communication asynchrone
• Ajout de plus de ressources pour co...
Avantages
• Découplage des producteurs et consommateurs
• Plus résilient car la queue peut recevoir des messages même si l...
Problématiques et considérations
• Communication asynchrone (gestion des valeurs de retour)
• Ordonnancement des messages
...
Queue-Based Load Leveling pattern
100/s
0
50
100
150
Load
50/s
Queue-Based Load Leveling pattern
• Use a queue that acts as a buffer between a task and a service that it
invokes in orde...
Mise en œuvre
• Utilisation d’un système de queue pour les messages
• Étudier les limites des systèmes (throughput)
• Obse...
Avantages
• Permet d’absorber les spikes temporaire de messages
• Prévenir la surcharge de services externes (Azure SQL Da...
Problématiques et considérations
• On doit étudier la limite des services afin d’éviter de les surcharger
(monitoring)
• T...
Priority Queue pattern
LeadTime
CycleTime
1s
in done
start done
# items in queue Cycle Lead
0 1s 1s
10 1s 11s
10000 1s 2h4...
Priority Queue pattern
• Prioritize requests sent to services so that requests with a higher
priority are received and pro...
Mise en œuvre
• Mettre les nouveaux messages devant les messages moins
importants dans la queue
• Sinon, utilisation de pl...
Avantages
• Permet d’établir des niveaux de services (SLA)
• Prioriser les clients payants
• Laisser les messages sans dea...
Problématiques et considérations
• Haute priorité veut dire traitement plus rapide
• Est-ce que tous les messages haute pr...
Materialized View pattern
• Generate prepopulated views over the data in one or more data
stores when the data is formatte...
Mise en œuvre
• Génération à l‘avance des vues matérialisées des données
• Les vues sont jetable (pas la source authoritat...
Avantages
• Optimisées pour la lecture et le requêtage (pas pour l’écriture)
• Données normalisées, semi structurées ou no...
Problématiques et considérations
• Quand et comment mettre à jour les vues? (suite à un événement,
suivant un horaire ou d...
Questions?
Site Web
bit.ly/CloudDesignPatterns
Patterns & Practices
http://pnp.azurewebsites.net/en-us/
Cloud Architecture...
Prochain SlideShare
Chargement dans…5
×

Cloud design patterns

479 vues

Publié le

Pour vraiment profité des avantages du Cloud nous devons revoir comment concevoir nos applications. Heureusement il est possible d’obtenir une architecture efficace rapidement en suivant quelques bons conseils. Dans cette présentation je vais montrer quelques Design Patterns qui permettront à vos applications d’être plus performantes en général (et pas seulement sur le Cloud!).

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive
  • Animation pour les sujets de la présentation aujourd’hui
  • Cache-Aside design pattern: http://msdn.microsoft.com/en-us/library/dn589799.aspx
    Caching guidance: http://msdn.microsoft.com/en-us/library/dn589802.aspx

    Memcached: http://www.memcached.org/
  • Cache-Aside design pattern: http://msdn.microsoft.com/en-us/library/dn589799.aspx
    - Caching guidance: http://msdn.microsoft.com/en-us/library/dn589802.aspx
  • Cache-Aside design pattern: http://msdn.microsoft.com/en-us/library/dn589799.aspx
    - Caching guidance: http://msdn.microsoft.com/en-us/library/dn589802.aspx
  • Competing Consumers pattern: http://msdn.microsoft.com/en-us/library/dn568101.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Competing Consumers pattern: http://msdn.microsoft.com/en-us/library/dn568101.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Competing Consumers pattern: http://msdn.microsoft.com/en-us/library/dn568101.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Queue-Based Load Leveling pattern: http://msdn.microsoft.com/en-us/library/dn589783.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Queue-Based Load Leveling pattern: http://msdn.microsoft.com/en-us/library/dn589783.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Queue-Based Load Leveling pattern: http://msdn.microsoft.com/en-us/library/dn589783.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Queue-Based Load Leveling pattern: http://msdn.microsoft.com/en-us/library/dn589783.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Queue-Based Load Leveling pattern: http://msdn.microsoft.com/en-us/library/dn589783.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
  • Priority Queue pattern: http://msdn.microsoft.com/en-us/library/dn589794.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
    Autoscaling guidance: http://msdn.microsoft.com/en-us/library/dn589774.aspx
  • Priority Queue pattern: http://msdn.microsoft.com/en-us/library/dn589794.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
    Autoscaling guidance: http://msdn.microsoft.com/en-us/library/dn589774.aspx
  • Priority Queue pattern: http://msdn.microsoft.com/en-us/library/dn589794.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
    Autoscaling guidance: http://msdn.microsoft.com/en-us/library/dn589774.aspx
  • Priority Queue pattern: http://msdn.microsoft.com/en-us/library/dn589794.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
    Autoscaling guidance: http://msdn.microsoft.com/en-us/library/dn589774.aspx
  • Priority Queue pattern: http://msdn.microsoft.com/en-us/library/dn589794.aspx
    Throttling pattern: http://msdn.microsoft.com/en-us/library/dn589798.aspx
    Compute Partitioning guidance: http://msdn.microsoft.com/en-us/library/dn589773.aspx
    Asynchronous Messaging primer: http://msdn.microsoft.com/en-us/library/dn589781.aspx
    Autoscaling guidance: http://msdn.microsoft.com/en-us/library/dn589774.aspx
  • Materialized View pattern: http://msdn.microsoft.com/en-us/library/dn589782.aspx
    Data Consistency primer: http://msdn.microsoft.com/en-us/library/dn589800.aspx
    CQRS pattern: http://msdn.microsoft.com/en-us/library/dn568103.aspx
    Event Sourcing pattern: http://msdn.microsoft.com/en-us/library/dn589792.aspx
    Index Table pattern: http://msdn.microsoft.com/en-us/library/dn589791.aspx
  • Materialized View pattern: http://msdn.microsoft.com/en-us/library/dn589782.aspx
    Data Consistency primer: http://msdn.microsoft.com/en-us/library/dn589800.aspx
    CQRS pattern: http://msdn.microsoft.com/en-us/library/dn568103.aspx
    Event Sourcing pattern: http://msdn.microsoft.com/en-us/library/dn589792.aspx
    Index Table pattern: http://msdn.microsoft.com/en-us/library/dn589791.aspx
  • Materialized View pattern: http://msdn.microsoft.com/en-us/library/dn589782.aspx
    Data Consistency primer: http://msdn.microsoft.com/en-us/library/dn589800.aspx
    CQRS pattern: http://msdn.microsoft.com/en-us/library/dn568103.aspx
    Event Sourcing pattern: http://msdn.microsoft.com/en-us/library/dn589792.aspx
    Index Table pattern: http://msdn.microsoft.com/en-us/library/dn589791.aspx
  • Materialized View pattern: http://msdn.microsoft.com/en-us/library/dn589782.aspx
    Data Consistency primer: http://msdn.microsoft.com/en-us/library/dn589800.aspx
    CQRS pattern: http://msdn.microsoft.com/en-us/library/dn568103.aspx
    Event Sourcing pattern: http://msdn.microsoft.com/en-us/library/dn589792.aspx
    Index Table pattern: http://msdn.microsoft.com/en-us/library/dn589791.aspx
  • Cloud design patterns

    1. 1. Les Design Patterns appliqués au Cloud MAI 2014
    2. 2. Pascal Laurin • Développeur et architecte .NET Azure (Cloud Patterns) Client-Serveur (IoC/DI) WPF (MVVM) SQL (Repository) CleanCode (SOLID) Test automation (Design for testability) GOF OOP ….. www.pascallaurin.com pascal.laurin@outlook.com @plaurin78
    3. 3. Cloud Design Patterns Patterns & Practices
    4. 4. Cloud Design Patterns Patterns & Practices • Problem areas in the cloud • Availability, Data Management, Design and Implementation, Management and Monitoring, Messaging, Performance and Scalability, Resiliency, Security • Design Patterns • Cache-Aside, Circuit Breaker, CompensatingTransaction, Competing Consumers, Compute Resource Consolidation, CQRS, Event Sourcing, External Configuration Store, Federated Identity, Gatekeeper, Health Endpoint Monitoring, IndexTable, Leader Election, MaterializedView, Pipes and Filters, Priority Queue, Queue-Based Load Leveling, Retry, Runtime Reconfiguration, Scheduler Agent Supervisor, Sharding, Static Content Hosting,Throttling,Valet Key • Guidance • Asynchronous Messaging, Autoscaling, Caching, Compute Partitioning, Data Consistency, Data Partitioning, Data Replication and Synchronization, Instrumentation andTelemetry, Multiple Datacenter, Service Metering
    5. 5. Pourquoi étudier les Design Patterns • Communications • Options et compromis • Mettre un nom sur les Patterns qui émergent naturellement dans notre code (répétition des mêmes techniques) • Avoir une boîte à outils (solutions) bien rempli quand on frappe un problème
    6. 6. Le Design et les Patterns sont plus importants que les Design Patterns • « Le voyage est plus important que la destination » • Si on ne le comprend pas on ne l’utilise pas! • Ce que nous allons voir est applicable un peu partout, pas seulement dans le Cloud
    7. 7. Cache-Aside pattern • Load data on demand into a cache from a data store Data StoreCache Compute
    8. 8. Mise en œuvre • Lecture 1. Lors d’une demande pour de la donnée on regarde premièrement dans le Cache 1. Si l’information n’est pas en Cache on la charge du Data Store puis on stock l’information en Cache (read-through caching) 2. L’information en Cache est retournée au demandeur • Écriture • Lors d’une sauvegarde 1. L’information est mise à jour dans le Data Store (write-through strategy) 2. L’information du cache est invalidé • Techno • Azure Cache Service, In-Role Cache • Memcached
    9. 9. Avantages • Peu d’écriture, beaucoup de lecture • Proximité de l’information • Réduction de la bande passante (pour Cache local)
    10. 10. Problématiques et considérations • Cohérence entre les données en le Cache et le Data Store • Durée de vie des données en Cache • Expulsion des données en Cache • Amorçage du Cache • Différents types de Cache • Mémoire • Disque • Service • Taille optimal du Cache
    11. 11. Competing Consumers pattern 100/s 100/s 25/s 100/s 25/s
    12. 12. Competing Consumers pattern 100/s 100/s 25/s 100/s 100/s
    13. 13. Competing Consumers pattern • Enable multiple concurrent consumers to process messages received on the same messaging channel Producer Consumer ConsumersProducers
    14. 14. Mise en œuvre • Utilisation d’une queue pour les messages • Communication asynchrone • Ajout de plus de ressources pour compétitioner pour les messages • Techno • Azure Storage Queue • Azure ServiceBus Queue andTopic • MSMQ
    15. 15. Avantages • Découplage des producteurs et consommateurs • Plus résilient car la queue peut recevoir des messages même si les consommateurs sont hors-service
    16. 16. Problématiques et considérations • Communication asynchrone (gestion des valeurs de retour) • Ordonnancement des messages • Design des services pour la résilience (idempotent) • Détection et gestion des messages empoissonnés • Scaling du système de messagerie (queue)
    17. 17. Queue-Based Load Leveling pattern 100/s 0 50 100 150 Load 50/s
    18. 18. Queue-Based Load Leveling pattern • Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out 100/s 50/s 0 50 100 150 Load 0 20 40 60 Load 50/s?/s
    19. 19. Mise en œuvre • Utilisation d’un système de queue pour les messages • Étudier les limites des systèmes (throughput) • Observation du niveau de messages dans la queue
    20. 20. Avantages • Permet d’absorber les spikes temporaire de messages • Prévenir la surcharge de services externes (Azure SQL Database) • Améliore la disponibilité et l’efficacité des services
    21. 21. Problématiques et considérations • On doit étudier la limite des services afin d’éviter de les surcharger (monitoring) • Trop de producteurs/consommateurs pour une queue peut affecter sa disponibilité • Seulement pour les spikes! Si la charge reste toujours au dessus de la limite du système nous devons trouver une autre solution (scaling)
    22. 22. Priority Queue pattern LeadTime CycleTime 1s in done start done # items in queue Cycle Lead 0 1s 1s 10 1s 11s 10000 1s 2h46m41s Utilisation d’une queue
    23. 23. Priority Queue pattern • Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those of a lower priority 1231 3 23 1
    24. 24. Mise en œuvre • Mettre les nouveaux messages devant les messages moins importants dans la queue • Sinon, utilisation de plusieurs queue (1 par priorité) • Techno • Azure Storage Queue avec plusieurs queues • Azure Servive Bus Subscriptions
    25. 25. Avantages • Permet d’établir des niveaux de services (SLA) • Prioriser les clients payants • Laisser les messages sans deadline être traiter à la fin • Faire du scaling uniquement où c’est payant
    26. 26. Problématiques et considérations • Haute priorité veut dire traitement plus rapide • Est-ce que tous les messages haute priorité doivent être traité avant les messages basses priorités? • Besoin d’observer le nombres de messages pour chaque priorité séparément • Les différentes priorités devraient être nommées avec de vrai concepts d’affaires (enterprise vs pro vs free) • Avoir plusieurs queues multiplie le coût de chercher des messages
    27. 27. Materialized View pattern • Generate prepopulated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations
    28. 28. Mise en œuvre • Génération à l‘avance des vues matérialisées des données • Les vues sont jetable (pas la source authoritative) • Si possible indexées pour de meilleurs performances de requêtage • Spécialement créer pour un petit nombre de requêtes
    29. 29. Avantages • Optimisées pour la lecture et le requêtage (pas pour l’écriture) • Données normalisées, semi structurées ou non structurées (DTO pour UI, les rapports ou l’affichage) • Peut-être un sous ensemble des données (sans données sensibles) • Générées à l’avance donc moins de traitements requis (CPU) • Pas besoin d’être dans le même Data Store que les données originales (NoSQL) • En cache si éphémères, peut être reconstruites facilement • Aussi pour scénarios partiellement connecté
    30. 30. Problématiques et considérations • Quand et comment mettre à jour les vues? (suite à un événement, suivant un horaire ou déclanchement manuel) • Peut utiliser beaucoup trop d’espace de stockage si on a beaucoup de vues • Gestion des vues avec données périmées
    31. 31. Questions? Site Web bit.ly/CloudDesignPatterns Patterns & Practices http://pnp.azurewebsites.net/en-us/ Cloud Architecture Patterns oreil.ly/1hAB6NM www.pascallaurin.com pascal.laurin@outlook.com @plaurin78

    ×