Architecture azure performante

Post on 21-Mar-2017

425 views 0 download

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