ARCHITECTURE
AZURE
PERFORMANTE
Histoire du
développement
d’une
application
haute
performance sur
azure
© Pyxis Technologies inc.
/studio
Expertise
Qualité
Respect
Agile Big Data custom
CQRS Desktop Event
Sourcing Microsoft .NET C#
Scrum Software
development Training
Web
noussommes
© Pyxis Technologies inc.
INTRODUCTION
© Pyxis Technologies inc.
Budget Limité
POURQUOI?
© Pyxis Technologies inc.
Budget Limité
Potentiel de
croissance
POURQUOI?
© Pyxis Technologies inc.
Budget Limité
Potentiel de
croissance
Base d’utilisateurs
international
POURQUOI?
© Pyxis Technologies inc.
Budget Limité
Potentiel de
croissance
Base d’utilisateurs
international
Coût / revenu
POURQUOI?
© Pyxis Technologies inc.
Budget Limité
Potentiel de
croissance
Base d’utilisateurs
international
Coût / revenu
Construit pour la
performance
POURQUOI?
© Pyxis Technologies inc.
HOSTING
© Pyxis Technologies inc.
Storage SQL, Document,
Archivage,
Système de fichier,
image de VM
SQL, Document,
image de VM
SQL, Document,
Processing Toutes plateformes Toutes plateformes Toutes plateformes
Service Bus Queue, Event
(SNS), Lamba
Queue, Topic, Event
Hub
Maison
Scalability Automatique Automatique Maison ou OS
Familiarité Faible Moyenne Faible
Self-service Portail intégré Portail intégré Manuel
HOSTING - COMPARAISON
© Pyxis Technologies inc.
RECHERCHE
AZURE SEARCH
SERVICE
© Pyxis Technologies inc.
Performance Excellente Excellente Excellente
Fonctionnalités Full text search Multi-indexing,
query language,
multi plateforme
Index mutlti-
dimension
Maturité Mature Mature Jeune
Scalabilité Inter-noeud Manuelle avec
(SOLR)
Auto
Familiarité Moyennement
familié
Très familié Peu
RECHERCHE - COMPARAISON
© Pyxis Technologies inc.
 Persistant
 Accès lent
 Distribution de
données pas toujours
facile
 Persistant (avec
redondance)
 Accès ultra rapide
 Distribution des
données by design
STORAGE - MEDIUM
© Pyxis Technologies inc.
STORAGE - FORMAT
Blob
• Donnée non-structurée
• Objets de grande taille
Table
• Donnée tabulaire (structure plane)
• Accès rapide
Document
• Structure hiérarchique
• Schéma variable
Donnée relationnelles
• Structure normalisée
• Utilisation d’index
© Pyxis Technologies inc.
CACHE
© Pyxis Technologies inc.
SERVICE BUS
© Pyxis Technologies inc.
FRONT END
© Pyxis Technologies inc.
Performance Moyenne pour comtenu statique Excellente
Fonctionnalités Dynamique, donc sans limite Server side, donc limité
Maturité Mature Mature
Scalabilité Infinie, client side Selon les instances de serveur
Familiarité Moyenne Bonne
FROND END - COMPARAISON
© Pyxis Technologies inc.
MAILING
© Pyxis Technologies inc.
Fonctionnalités Envoi de masse, suivi des
lectures, support de gabarits
Envoi individuels, suivi des
lectures, support de gabarits
Scalabilité Transparente Transparente
Template Built-in Built-in
Écosystème Librairie Nuget Librairie Nuget
Api Rest Rest, SMTP
MAILING - COMPARAISON
© Pyxis Technologies inc.
Déploiement (automatisé)
Test de performance dès le début
Test local, émulé in-proc, émulé
Azure
Minimiser le downtime
Séparation des updates et des
requêtes (CQRS)
A CONSIDÉRER
© Pyxis Technologies inc.
Commande Requête
Données
dénormalisée
Rapide
d’accès
Réplicable
Intégrité des
données
Exécution
lente
Règles
d’affaires
SANS COMPROMIS
© Pyxis Technologies inc.
Retarder les
décisions
Architecture
évolutive
Abstraction
des
dépendances
Système à
deux vitesses
ARCHITECTURE - INITIALE
© Pyxis Technologies inc.
ARCHITECTURE – APRÈS 3 SPRINTS
© Pyxis Technologies inc.
ARCHITECTURE - FINALE
© Pyxis Technologies inc.
Sélecteur de persistance
Blob
Table
Mémoire
Autre…
Contexte de persistance
Pas de requêtes complexe
Mise à jour en lot
IMPLÉMENTATION - PERSISTANCE
© Pyxis Technologies inc.
IMPLÉMENTATION - PERSITANCE
Persistance
Store Factory
Blob
Persistance
IPersistanceStore
File
Persistance
Table
Persistance
Memory
Persistance
IPersistanceStore
IPersistanceStore
IPersistanceStore
IPersistanceStore
IPersitanceStore
void Save<T>
T Get<T>
void Delete<T>
bool Any<T>
IEnumerable<T>
GetSome<T>
IEnumerable<T> Query<T>
IEnumerable<T> GetAll<T>
void Purge
© Pyxis Technologies inc.
Recherche en mémoire
Lucene
Search Api réutilisable
IMPLÉMENTATION - RECHERCHE
© Pyxis Technologies inc.
CRÉATION D’INDEX
Factory
Dialect
IndexerMapper
Data provider
Query Builder
Map between
Domain Object
And
Lucene
Handle search
index content
Build index
queries
Return POCO to
index
© Pyxis Technologies inc.
RECHERCHE
Service
Index
Searcher
Index
Manager
Query
Builder
Mapper
© Pyxis Technologies inc.
Une mise à jour en deux temps
Traitement des données
Rafraichir les sites web
Job
Fire & forget
Queue (Azure)
Événement
Publisher / Subscriber
Event (Azure)
IMPLÉMENTATION – JOB/MESSAGE
© Pyxis Technologies inc.
EXÉCUTION DE JOB
Request
Azure
Queue Worker
© Pyxis Technologies inc.
ÉVÉNEMENTS
Update
Azure
Event
Web Site
Web Site
Web Site
© Pyxis Technologies inc.
Indexation des pages
Angular vs MVC
Difficulté de tester
Différente configuration
Debugging
Local
Émulateur
Cloud
PROBLÈMES
© Pyxis Technologies inc.
Rappelez-vous
Penser la performance dès le
début ne coûte pas plus cher
Prévoir l’évolution et la flexibilité
Se découpler de l’implémentation
Questions?
35
LA FIN

Architecture azure performante

  • 1.
  • 2.
    © Pyxis Technologiesinc. /studio Expertise Qualité Respect Agile Big Data custom CQRS Desktop Event Sourcing Microsoft .NET C# Scrum Software development Training Web noussommes
  • 3.
    © Pyxis Technologiesinc. INTRODUCTION
  • 4.
    © Pyxis Technologiesinc. Budget Limité POURQUOI?
  • 5.
    © Pyxis Technologiesinc. Budget Limité Potentiel de croissance POURQUOI?
  • 6.
    © Pyxis Technologiesinc. Budget Limité Potentiel de croissance Base d’utilisateurs international POURQUOI?
  • 7.
    © Pyxis Technologiesinc. Budget Limité Potentiel de croissance Base d’utilisateurs international Coût / revenu POURQUOI?
  • 8.
    © Pyxis Technologiesinc. Budget Limité Potentiel de croissance Base d’utilisateurs international Coût / revenu Construit pour la performance POURQUOI?
  • 9.
  • 10.
    © Pyxis Technologiesinc. Storage SQL, Document, Archivage, Système de fichier, image de VM SQL, Document, image de VM SQL, Document, Processing Toutes plateformes Toutes plateformes Toutes plateformes Service Bus Queue, Event (SNS), Lamba Queue, Topic, Event Hub Maison Scalability Automatique Automatique Maison ou OS Familiarité Faible Moyenne Faible Self-service Portail intégré Portail intégré Manuel HOSTING - COMPARAISON
  • 11.
    © Pyxis Technologiesinc. RECHERCHE AZURE SEARCH SERVICE
  • 12.
    © Pyxis Technologiesinc. Performance Excellente Excellente Excellente Fonctionnalités Full text search Multi-indexing, query language, multi plateforme Index mutlti- dimension Maturité Mature Mature Jeune Scalabilité Inter-noeud Manuelle avec (SOLR) Auto Familiarité Moyennement familié Très familié Peu RECHERCHE - COMPARAISON
  • 13.
    © Pyxis Technologiesinc.  Persistant  Accès lent  Distribution de données pas toujours facile  Persistant (avec redondance)  Accès ultra rapide  Distribution des données by design STORAGE - MEDIUM
  • 14.
    © Pyxis Technologiesinc. STORAGE - FORMAT Blob • Donnée non-structurée • Objets de grande taille Table • Donnée tabulaire (structure plane) • Accès rapide Document • Structure hiérarchique • Schéma variable Donnée relationnelles • Structure normalisée • Utilisation d’index
  • 15.
  • 16.
    © Pyxis Technologiesinc. SERVICE BUS
  • 17.
    © Pyxis Technologiesinc. FRONT END
  • 18.
    © Pyxis Technologiesinc. Performance Moyenne pour comtenu statique Excellente Fonctionnalités Dynamique, donc sans limite Server side, donc limité Maturité Mature Mature Scalabilité Infinie, client side Selon les instances de serveur Familiarité Moyenne Bonne FROND END - COMPARAISON
  • 19.
  • 20.
    © Pyxis Technologiesinc. Fonctionnalités Envoi de masse, suivi des lectures, support de gabarits Envoi individuels, suivi des lectures, support de gabarits Scalabilité Transparente Transparente Template Built-in Built-in Écosystème Librairie Nuget Librairie Nuget Api Rest Rest, SMTP MAILING - COMPARAISON
  • 21.
    © Pyxis Technologiesinc. Déploiement (automatisé) Test de performance dès le début Test local, émulé in-proc, émulé Azure Minimiser le downtime Séparation des updates et des requêtes (CQRS) A CONSIDÉRER
  • 22.
    © Pyxis Technologiesinc. Commande Requête Données dénormalisée Rapide d’accès Réplicable Intégrité des données Exécution lente Règles d’affaires SANS COMPROMIS
  • 23.
    © Pyxis Technologiesinc. Retarder les décisions Architecture évolutive Abstraction des dépendances Système à deux vitesses ARCHITECTURE - INITIALE
  • 24.
    © Pyxis Technologiesinc. ARCHITECTURE – APRÈS 3 SPRINTS
  • 25.
    © Pyxis Technologiesinc. ARCHITECTURE - FINALE
  • 26.
    © Pyxis Technologiesinc. Sélecteur de persistance Blob Table Mémoire Autre… Contexte de persistance Pas de requêtes complexe Mise à jour en lot IMPLÉMENTATION - PERSISTANCE
  • 27.
    © Pyxis Technologiesinc. IMPLÉMENTATION - PERSITANCE Persistance Store Factory Blob Persistance IPersistanceStore File Persistance Table Persistance Memory Persistance IPersistanceStore IPersistanceStore IPersistanceStore IPersistanceStore IPersitanceStore void Save<T> T Get<T> void Delete<T> bool Any<T> IEnumerable<T> GetSome<T> IEnumerable<T> Query<T> IEnumerable<T> GetAll<T> void Purge
  • 28.
    © Pyxis Technologiesinc. Recherche en mémoire Lucene Search Api réutilisable IMPLÉMENTATION - RECHERCHE
  • 29.
    © Pyxis Technologiesinc. CRÉATION D’INDEX Factory Dialect IndexerMapper Data provider Query Builder Map between Domain Object And Lucene Handle search index content Build index queries Return POCO to index
  • 30.
    © Pyxis Technologiesinc. RECHERCHE Service Index Searcher Index Manager Query Builder Mapper
  • 31.
    © Pyxis Technologiesinc. Une mise à jour en deux temps Traitement des données Rafraichir les sites web Job Fire & forget Queue (Azure) Événement Publisher / Subscriber Event (Azure) IMPLÉMENTATION – JOB/MESSAGE
  • 32.
    © Pyxis Technologiesinc. EXÉCUTION DE JOB Request Azure Queue Worker
  • 33.
    © Pyxis Technologiesinc. ÉVÉNEMENTS Update Azure Event Web Site Web Site Web Site
  • 34.
    © Pyxis Technologiesinc. Indexation des pages Angular vs MVC Difficulté de tester Différente configuration Debugging Local Émulateur Cloud PROBLÈMES
  • 35.
    © Pyxis Technologiesinc. Rappelez-vous Penser la performance dès le début ne coûte pas plus cher Prévoir l’évolution et la flexibilité Se découpler de l’implémentation Questions? 35 LA FIN

Notes de l'éditeur