Architectures.Phpquebec1007

21
Archictectures PHP/MySQL PHP Québec, réunion mensuelle 4 octobre 2007, Montréal, Québec, Canada

description

Différentes architectures PHP et MySQL pour dépasser la simple installation de deux serveurs : fermes PHP, réplication MySQL, cluster et partitionnement. Différentes stratégies pour assurer l'évolutivité.

Transcript of Architectures.Phpquebec1007

Page 1: Architectures.Phpquebec1007

Archictectures PHP/MySQLPHP Québec, réunion mensuelle

4 octobre 2007,

Montréal, Québec, Canada

Page 2: Architectures.Phpquebec1007

Qui parle?Damien Seguy

Co-phpère des éléphpants

Hébergements nexen Services

[email protected]

Page 3: Architectures.Phpquebec1007

ArchitectureOrganiser son application pour dépasser un ou deux serveurs

Être capable d'ajouter du matériel

Assurer la montée en charge

Page 4: Architectures.Phpquebec1007

Quel est le problème?

Trop de traitements?

Trop de données?

Trop de lectures?

Trop d'écritures?

Page 5: Architectures.Phpquebec1007

Critères d'architecturePerformances

Répond vite

Haute disponibilité

Toujours accessible

Aucun passage obligé

Evolutivité

Ce qui monte doit redescendre

Que se passe-t-il quand on doit ajouter un serveur?

Page 6: Architectures.Phpquebec1007

Différentes approches

Scale outScale up

Page 7: Architectures.Phpquebec1007

Scale upSyndrôme du gros serveur

Très cher

à l'achat

à l'entretien

Très faible impact sur le code

Résout les problèmes

Temporairement

Aucun moyen de revenir en arrière!

Page 8: Architectures.Phpquebec1007

Scale outSyndrôme de la ferme de serveurs

Économique à raisonnable

Evolutif à la carte

Impact sur l'organisation de l'application

Possibilité de virtualisation

Page 9: Architectures.Phpquebec1007

Multiplication des serveur Web

Page 10: Architectures.Phpquebec1007

Multiplication des serveurs WebBeaucoup de travail pour PHP

Personnalisation

Solutions

Exporter les données statiques dans un CDN

Akamaï, Amazon S3, Youtube,

Mises en cache temporaire

HTML, code PHP, données

Stratégie du 'Share nothing'

Page 11: Architectures.Phpquebec1007

Multiplication des sites WebLes sessions : il faut partager

Session via NFS

Session dans un filer

Session en base de données

Zend platform

Session en memcache

Page 12: Architectures.Phpquebec1007

Base de données

Lecture Écriture Écueil

Réplication Oui Non Lag

Cluster Oui Oui Installation

Partitions Non Oui Application

Page 13: Architectures.Phpquebec1007

Réplication

Écritures

Lectures

Page 14: Architectures.Phpquebec1007

RéplicationIdéale pour les sauvegardes

Limitée par les écritures

Le maître ne travaille pas

Les esclaves au turbin

Le maître est un point critique

On double le maître pour HA

Le persistant problème de lag

Les esclaves arriveront-ils à rattraper un jour?

Page 15: Architectures.Phpquebec1007

Solutions de réplicationsDoubler le maître

Réplication synchrone Google

Diriger les écritures sur le maître, et les lectures seules sur les esclaves

Il faut mesurer et maîtriser son retard de réplication

Page 16: Architectures.Phpquebec1007

PartitionsDécoupage des données en plusieurs partitions

Permet de résoudre les problèmes de taille de table

Permet de régler les problèmes d'écritures

Conduit à des tables de taille raisonnable

Permet les opérations paralelles

Les jointures deviennent difficiles

Page 17: Architectures.Phpquebec1007

Partitions + réplication : shardUtilisé initialement chez Flickr

Réplication réciproque, maître-maître

Les écritures vont sur les deux serveurs

Facilité à configurer et comprendre

Haute disponibilité

Pas de gaspillage de ressource

Page 18: Architectures.Phpquebec1007

Cluster

GestionSQL

Stockage

Page 19: Architectures.Phpquebec1007

ClusterPas avant 4 machines

Les performances individuelles diminuent

Elles n'augmentent pas vite

Beaucoup d'effort de configuration

C'est l'avenir

Page 21: Architectures.Phpquebec1007

Elements graphiques