Post on 21-Mar-2017
transcript
ARCHITECTURE AZURE
PERFORMANTE
Histoire du développement d’une appl icat ion haute performance sur azure
© Pyxis Technologies inc.
/studio
ExpertiseQualité
Respect
Agile Big Data custom CQRS Desktop Event
Sourcing Microsoft .NET C# Scrum Software development Training
Web
nous
som
mes
© 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
croissanceBase d’utilisateurs
international
POURQUOI?
© Pyxis Technologies inc.
Budget LimitéPotentiel de
croissanceBase d’utilisateurs
internationalCoût / revenu
POURQUOI?
© Pyxis Technologies inc.
Budget LimitéPotentiel de
croissanceBase d’utilisateurs
internationalCoût / revenuConstruit pour la
performance
POURQUOI?
© Pyxis Technologies inc.
HOSTING
Private cloud
© 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 OSFamiliarité Faible Moyenne FaibleSelf-service Portail intégré Portail intégré Manuel
HOSTING - COMPARAISON
Private cloud
© Pyxis Technologies inc.
RECHERCHE
AZURE SEARCH SERVICE
© Pyxis Technologies inc.
Performance Excellente Excellente ExcellenteFonctionnalités Full text search Multi-indexing,
query language, multi plateforme
Index mutlti-dimension
Maturité Mature Mature JeuneScalabilité Inter-noeud Manuelle avec
(SOLR)Auto
Familiarité Moyennement familié
Très familié Peu
RECHERCHE - COMPARAISON
© Pyxis Technologies inc.
PersistantAccès lentDistribution de
données pas toujours facile
Persistant (avec redondance)
Accès ultra rapideDistribution des
données by design
STORAGE - MEDIUM
© Pyxis Technologies inc.
STORAGE - FORMATBlob• 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 MatureScalabilité Infinie, client side Selon les instances de
serveurFamiliarité 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 TransparenteTemplate Built-in Built-inÉcosystème Librairie Nuget Librairie NugetApi Rest Rest, SMTP
MAILING - COMPARAISON
© Pyxis Technologies inc.
Déploiement (automatisé)Test de performance dès le débutTest local, émulé in-proc, émulé Azure
Minimiser le downtimeSé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 persistanceBlobTableMémoireAutre…
Contexte de persistancePas de requêtes complexeMise à jour en lot
IMPLÉMENTATION - PERSISTANCE
© Pyxis Technologies inc.
IMPLÉMENTATION - PERSITANCE
Persistance Store Factory
BlobPersistance
IPersistanceStore
FilePersistance
TablePersistance
MemoryPersistance
IPersistanceStore
IPersistanceStore
IPersistanceStore
IPersistanceStore
IPersitanceStorevoid 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émoireLuceneSearch Api réutilisable
IMPLÉMENTATION - RECHERCHE
© Pyxis Technologies inc.
CRÉATION D’INDEX
Factory
Dialect
IndexerMapper
Data provider
Query Builder
Map betweenDomain Object
AndLucene
Handle search index content
Build index queries
Return POCO to index
© Pyxis Technologies inc.
RECHERCHE
Service
IndexSearcher
IndexManager
QueryBuilder
Mapper
© Pyxis Technologies inc.
Une mise à jour en deux tempsTraitement des donnéesRafraichir les sites web
JobFire & forgetQueue (Azure)
ÉvénementPublisher / SubscriberEvent (Azure)
IMPLÉMENTATION – JOB/MESSAGE
© Pyxis Technologies inc.
EXÉCUTION DE JOB
Request AzureQueue Worker
© Pyxis Technologies inc.
ÉVÉNEMENTS
Update AzureEvent
Web Site
Web Site
Web Site
© Pyxis Technologies inc.
Indexation des pagesAngular vs MVC
Difficulté de testerDifférente configuration
DebuggingLocalÉmulateurCloud
PROBLÈMES
© Pyxis Technologies inc. 35
Rappelez-vousPenser 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?
LA FIN