patterns azure cloud
TRANSCRIPT
29 Avril 2014, Paris, FranceLa Communauté Open Source Azure Française
PATTERNS CLOUD / AZURE
Marius Zaharia
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]
Agenda
Problématiques type
Rubriques d’orientation et guidage
Patrons de conception
Récapitulatif
Références
PROBLEMATIQUES
ORIENTATION
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é
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
PATRONS DE CONCEPTION 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)
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
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)
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)
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
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
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
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, …
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
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)
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
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
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
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)
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
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
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
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*
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, …
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)
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
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
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
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
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
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
QUESTIONS ?
MERCI !