SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
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)
CleanCode (SOLID)
Test automation (Design for testability)
GOF
OOP
…..
www.pascallaurin.com
pascal.laurin@outlook.com
@plaurin78
Cloud Design Patterns
Patterns & Practices
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
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
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
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 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
Avantages
• Peu d’écriture, beaucoup de lecture
• Proximité de l’information
• Réduction de la bande passante (pour Cache local)
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
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 channel
Producer Consumer
ConsumersProducers
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
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
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)
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 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
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
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
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)
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
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
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
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
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
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
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
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é
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
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

Más contenido relacionado

La actualidad más candente

Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
Panorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzurePanorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzureMicrosoft Décideurs IT
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...GUSS
 
Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Microsoft Décideurs IT
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Microsoft Technet France
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationMicrosoft Technet France
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Conférence AFUP 20minutes.Fr
Conférence AFUP 20minutes.FrConférence AFUP 20minutes.Fr
Conférence AFUP 20minutes.FrOxalide
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?Benoit Fillon
 
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Christophe Laporte
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Julien Plée
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniOlivier DASINI
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservicesRiadh MNASRI
 
Windows Azure, plongée en eaux profondes (300)
Windows Azure, plongée en eaux profondes (300)Windows Azure, plongée en eaux profondes (300)
Windows Azure, plongée en eaux profondes (300)Microsoft Décideurs IT
 
GUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the WebGUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the WebGUSS
 

La actualidad más candente (20)

Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Panorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzurePanorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans Azure
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
 
Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisation
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Conférence AFUP 20minutes.Fr
Conférence AFUP 20minutes.FrConférence AFUP 20minutes.Fr
Conférence AFUP 20minutes.Fr
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
 
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
 
noSQL
noSQLnoSQL
noSQL
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservices
 
Windows Azure, plongée en eaux profondes (300)
Windows Azure, plongée en eaux profondes (300)Windows Azure, plongée en eaux profondes (300)
Windows Azure, plongée en eaux profondes (300)
 
GUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the WebGUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the Web
 

Destacado

Behaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowBehaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowPascal Laurin
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#Pascal Laurin
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitairesPascal Laurin
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringPascal Laurin
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java scriptPascal Laurin
 
Fédération des identités avec FederID
Fédération des identités avec FederIDFédération des identités avec FederID
Fédération des identités avec FederIDLINAGORA
 
Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009LINAGORA
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesClément OUDOT
 
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesCAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesClément OUDOT
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011Torsten Fell
 
Besser lesbare Blogartikel erstellen
Besser lesbare Blogartikel erstellenBesser lesbare Blogartikel erstellen
Besser lesbare Blogartikel erstellenDani Schenker
 
Stellungnahme des DAI zum Delsiting und zum Spruchverfahren
Stellungnahme des DAI zum Delsiting und zum SpruchverfahrenStellungnahme des DAI zum Delsiting und zum Spruchverfahren
Stellungnahme des DAI zum Delsiting und zum SpruchverfahrenMartin Arendts
 
Funlat presentación
Funlat presentaciónFunlat presentación
Funlat presentacióncasinegrita
 
Regime rapide
Regime rapideRegime rapide
Regime rapideTopRegime
 
Dea segalen
Dea segalenDea segalen
Dea segalenCSegalen
 

Destacado (20)

C# 6
C# 6C# 6
C# 6
 
Behaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowBehaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlow
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 
Fédération des identités avec FederID
Fédération des identités avec FederIDFédération des identités avec FederID
Fédération des identités avec FederID
 
Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemples
 
Caching Strategies
Caching StrategiesCaching Strategies
Caching Strategies
 
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesCAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011
Social Media zum Selbstmarketing beim 8.Ausbildner-Forum 2011
 
Besser lesbare Blogartikel erstellen
Besser lesbare Blogartikel erstellenBesser lesbare Blogartikel erstellen
Besser lesbare Blogartikel erstellen
 
Salud cardiovascular
Salud cardiovascularSalud cardiovascular
Salud cardiovascular
 
Stellungnahme des DAI zum Delsiting und zum Spruchverfahren
Stellungnahme des DAI zum Delsiting und zum SpruchverfahrenStellungnahme des DAI zum Delsiting und zum Spruchverfahren
Stellungnahme des DAI zum Delsiting und zum Spruchverfahren
 
31 juillet 2011
31 juillet 201131 juillet 2011
31 juillet 2011
 
Funlat presentación
Funlat presentaciónFunlat presentación
Funlat presentación
 
Regime rapide
Regime rapideRegime rapide
Regime rapide
 
Dea segalen
Dea segalenDea segalen
Dea segalen
 

Similar a Cloud design patterns

Les bonnes pratiques pour migrer d'Oracle vers Postgres
Les bonnes pratiques pour migrer d'Oracle vers PostgresLes bonnes pratiques pour migrer d'Oracle vers Postgres
Les bonnes pratiques pour migrer d'Oracle vers PostgresEDB
 
Webséminaire DBaaS (Novembre 2014)
Webséminaire DBaaS (Novembre 2014)Webséminaire DBaaS (Novembre 2014)
Webséminaire DBaaS (Novembre 2014)Jean-Philippe PINTE
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Microsoft Technet France
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeMicrosoft Technet France
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéChristophe Laporte
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAmazon Web Services
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchfrancelabs
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014Nuxeo
 
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’IT
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’ITSystem Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’IT
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’ITMicrosoft Technet France
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureconfluent
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]IBM France PME-ETI
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informationsneuros
 
Panorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzurePanorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzureMicrosoft Technet France
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications DrupalOxalide
 

Similar a Cloud design patterns (20)

Les bonnes pratiques pour migrer d'Oracle vers Postgres
Les bonnes pratiques pour migrer d'Oracle vers PostgresLes bonnes pratiques pour migrer d'Oracle vers Postgres
Les bonnes pratiques pour migrer d'Oracle vers Postgres
 
Webséminaire DBaaS (Novembre 2014)
Webséminaire DBaaS (Novembre 2014)Webséminaire DBaaS (Novembre 2014)
Webséminaire DBaaS (Novembre 2014)
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le monde
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilité
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
 
Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
 
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’IT
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’ITSystem Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’IT
System Center 2012 Orchestrator: gagnez du temps et simplifiez-vous l’IT
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informations
 
Panorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans AzurePanorama des offres NoSQL disponibles dans Azure
Panorama des offres NoSQL disponibles dans Azure
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications Drupal
 

Cloud design patterns

  • 1. Les Design Patterns appliqués au Cloud MAI 2014
  • 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
  • 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. 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. 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. Cache-Aside pattern • Load data on demand into a cache from a data store Data StoreCache Compute
  • 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. Avantages • Peu d’écriture, beaucoup de lecture • Proximité de l’information • Réduction de la bande passante (pour Cache local)
  • 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. Competing Consumers pattern 100/s 100/s 25/s 100/s 25/s
  • 12. Competing Consumers pattern 100/s 100/s 25/s 100/s 100/s
  • 13. Competing Consumers pattern • Enable multiple concurrent consumers to process messages received on the same messaging channel Producer Consumer ConsumersProducers
  • 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. 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. 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. Queue-Based Load Leveling pattern 100/s 0 50 100 150 Load 50/s
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

Notas del editor

  1. Animation pour les sujets de la présentation aujourd’hui
  2. 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/
  3. Cache-Aside design pattern: http://msdn.microsoft.com/en-us/library/dn589799.aspx - Caching guidance: http://msdn.microsoft.com/en-us/library/dn589802.aspx
  4. Cache-Aside design pattern: http://msdn.microsoft.com/en-us/library/dn589799.aspx - Caching guidance: http://msdn.microsoft.com/en-us/library/dn589802.aspx
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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