Transcript
Page 1: Architectures réparties en environnement web

Architecturerépartie en

environnement Web

Page 2: Architectures réparties en environnement web

« Scalabilité »nom fémininbarbarisme (scalability)

Capacité des systèmes informatiques à pouvoir faire évoluer leurs ressources en fonction des besoins, sans nécessiter une refonte de l'architecture matérielle et logicielle.

Page 3: Architectures réparties en environnement web

« Haute disponibilité »

Capacité des systèmes informatiques à fournir le service prévu à tout moment, même en cas de panne d'une partie conséquente de leurs moyens matériels.

Page 4: Architectures réparties en environnement web

Hébergement mutualisé

Partage de ressourcesBon marchéFiablePossibilités et ressources

limitées

Page 5: Architectures réparties en environnement web

Serveur dédié

Ressources dédiéesPuissantMauvaise fiabilitéAdministration ?

Page 6: Architectures réparties en environnement web

Évolution verticale(scaling in)

Augmentation des capacités du serveur

Facile à mettre en œuvreFiabilité limitéeRepousse juste la limite

Page 7: Architectures réparties en environnement web

Évolution horizontale(scaling out)

Augmentation du nombre de serveurs

Théoriquement illimitéFiabilité par redondanceComplexe à mettre en œuvre

Page 8: Architectures réparties en environnement web

Anatomie d'un serveur

Matériel

Processeur(s)Mémoire viveDisque(s) dur(s)

Page 9: Architectures réparties en environnement web

Anatomie d'un serveur

Système d'exploitation

Linux, Windows,Mac OS X, Solaris,BSD, ...

Page 10: Architectures réparties en environnement web

Anatomie d'un serveur

Applicatif

Serveur HTTP(Apache, Lighttpd, Nginx, …)

Application(JEE, PHP, Perl, Ruby, .NET, ...)

Page 11: Architectures réparties en environnement web

Anatomie d'un serveur

Stockage de fichiers

Disque dur local

Page 12: Architectures réparties en environnement web

Anatomie d'un serveur

Base de données

MySQL, PostgreSQL,Oracle, SQL Server, DB2, Informix, ...

Page 13: Architectures réparties en environnement web

Applicatif : bonne scalabilité

Installation identique sur chaque serveur

Répartition de charge

Haute disponibilité

Page 14: Architectures réparties en environnement web

Problèmes ?

Base de donnéesStockage de

fichiers

Page 15: Architectures réparties en environnement web

Problèmes ?

Base de donnéesDifficile à répartir et redonder

Technologie “friable”

Page 16: Architectures réparties en environnement web

Problèmes ?

Stockage de fichiersSolutions sans garantie

Solutions très coûteuses

Page 17: Architectures réparties en environnement web

Le vrai problème ?

Le coût !

Page 18: Architectures réparties en environnement web

Les solutions existent

(il suffit d'être millionnaire)

Cluster base de données(ex : Oracle RAC sur serveurs SUN)

Baies de stockage(ex : NetApp)

Page 19: Architectures réparties en environnement web

Frontaux web

Serveurs de fichiers(NAS / SAN)

Base de données(Oracle RAC, MySQL cluster, ...)

Page 20: Architectures réparties en environnement web

Réplication mono-directionnelle

Page 21: Architectures réparties en environnement web

Ces solutions sont chères

Impossible de démarrer un projet en utilisant ces technologies

Page 22: Architectures réparties en environnement web

Ces solutions sont chères

Impossible de démarrer un projet en utilisant ces technologies

Concrètement, on fait quoi ?

Page 23: Architectures réparties en environnement web

Scale in + scale out

Lectures Écritures

Page 24: Architectures réparties en environnement web

Scale in + scale out + réplication

Écritures

Lecturesen local

Réplication

Page 25: Architectures réparties en environnement web

Mais les requêtes SQL sont très gourmandes en ressources

On essaye d'en faire le moins souvent possible

On exécute les requêtes une fois puis on stocke leurs résultats en cache pour les accès suivants

Page 26: Architectures réparties en environnement web

Scale in + scale out + cache

Écritures

Lecturesen cache

Requêtes pour remplir le cache

Page 27: Architectures réparties en environnement web

Avec le cache, les données sont agrégées telles qu'on les utilise dans l'application

Pourquoi ne pas stocker directement les données sous ce format ?

En réduisant les fonctionnalités des bases de données, on peut augmenter leur scalabilité.

Page 28: Architectures réparties en environnement web

Avec le cache, les données sont agrégées telles qu'on les utilise dans l'application

Pourquoi ne pas stocker directement les données sous ce format ?

En réduisant les fonctionnalités des bases de données, on peut augmenter leur scalabilité.

Bases de données non relationnelles

Page 29: Architectures réparties en environnement web

User

- id- name- login

Article

- id- title- content- user_id

Comment

- id- date- text- article_id

{name: "Amaury Bouchard",login: "amaury",articles: [

{title: "Article de test",content: "Bla bla bla",comments: [

{date: "2010-05-20",text: "Super !"

},{

date: "2010-05-21",text: "Génial !"

}]

},{ ... },{ ... }

]}

Page 30: Architectures réparties en environnement web

Solutions SQL alternatives

ShardingDécouper une base en plusieurs morceaux pour alléger et paralléliser les traitements

DénormalisationDupliquer les données pour réduire le nombre de jointures nécessaires

Page 31: Architectures réparties en environnement web

Solutions SQL alternatives

ShardingDécouper une base en plusieurs morceaux pour alléger et paralléliser les traitements

DénormalisationDupliquer les données pour réduire le nombre de jointures nécessaires

Amélioration des performancesInutile pour la haute-disponibilitéEst-ce encore un modèle relationnel ?

Page 32: Architectures réparties en environnement web

Théorème de Brewer

Dans un environnement distribué, il est impossible de garantir à la fois :

La consistanceLa disponibilitéLa tolérance aux pannes

Page 33: Architectures réparties en environnement web

Théorème de Brewer

Dans un environnement distribué, il est impossible de garantir à la fois :

La consistanceLa disponibilitéLa tolérance aux pannes

Haute-disponibilité : consistance réduite

Page 34: Architectures réparties en environnement web

Modèles de duplication de données

CentraliséServeur de méta-données uniqueMultiples serveurs de données

DécentraliséDonnées réparties sur plusieurs serveurs en fonction d'une clé de hachage

Page 35: Architectures réparties en environnement web

Et le cloud computing ?

Virtualisation des serveursUtilisation de ressources à la demande

Page 36: Architectures réparties en environnement web

Participer à des projets intéressants ?

FineFSSystème de fichiers redondé écrit en PHPComplètement décentraliséSynchrone et asynchronePlus rapide que Memcache en lecture

FineDBBase de données non relationnelleOrienté document (stockage JSON)Stockage basé sur FineFS

Page 37: Architectures réparties en environnement web

geek-directeur-technique.com/udm

finefs.googlecode.comfinedb.googlecode.com

[email protected]


Recommended