[Adictiz] 2011 montée en charge avec php

40
Montée en charge avec PHP Cas Paf le chien

description

Présentation par Stéphane Dessein sur la montée en charge avec PHP, pour le RDV AFUP Lille du 31 mai 2011 à Euratechnologies

Transcript of [Adictiz] 2011 montée en charge avec php

Page 1: [Adictiz] 2011   montée en charge avec php

Montée en charge avec PHPCas Paf le chien

Page 2: [Adictiz] 2011   montée en charge avec php

Présentation

• Stéphane DESSEIN

• Développeur PHP• Administrateur Système.

• Chez Adictiz de septembre 2008 à octobre 2009

• Développeur d’application Facebook indépendant (2009-2011)

• Retour chez Adictiz depuis mars 2011.

Page 3: [Adictiz] 2011   montée en charge avec php

Sommaire

• Paf le chien, le concept

• Paf le chien V1 et V2 dans un gestionnaire de contenus

• Paf le chien V3 : Application Facebook dédiée• Application ‘’ExtraLight’’• Intérêt du FBML

• Evolutions de Paf• Nouvelles versions• Jeu de gestion

• Etude d’un cas : Paf Deluxe / Adictiz Framework

• Changements d’architectures serveurs• Multiplication des machines• Vers une virtualisation complète.

Page 4: [Adictiz] 2011   montée en charge avec php

Paf le chien - le jeu

Page 5: [Adictiz] 2011   montée en charge avec php

Paf le chien - le jeu

Page 6: [Adictiz] 2011   montée en charge avec php

Paf le chien - le jeu

Page 7: [Adictiz] 2011   montée en charge avec php

Paf le chien V1 : Stratosphère

• Mini plateforme de jeux sur facebook

• Jeu intégré dans gestionnaire de contenu

• 1 opération :• Associé à une marque• 1 ou plusieurs jeux• 1 ou plusieurs cadeaux• Classements (général, amis, etc.. )

• Inscriptions• Op-tins / pubs

• Résultat : 6000 Users / 2 semaines : aucune surcharge.

1 Serveur :Moyenne Gamme

4 CPU / 2 Ghz4 GB Ram500 Go Disk / Raid 1

Page 8: [Adictiz] 2011   montée en charge avec php

Paf le chien V2 : Stratosphère devient Paf le chien

• Toujours dans le gestionnaire de contenus

• 1 opération créée• Pas de cadeaux• Classements• Optins/pubs • Etc…

• Résultat : • 400 users simultannées• => Surchage serveur !

Infra identique :

1 Serveur :Moyenne Gamme

4 CPU / 2 Ghz4 GB Ram500 Go Disk / Raid 1

Page 9: [Adictiz] 2011   montée en charge avec php

Paf le chien V2 : Analyse

• Gestionnaire de contenu trop lourd ?

• L’état des lieux:

• 25 requêtes SQL à chaque chargement de page

• 10-15 requêtes SQL à chaque partie

• 3-4 appels API Facebook / page• Données utilisateurs (nom/prénom, photo)• Liste d’amis• Autres données… (si ajouté application etc..)

Page 10: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

Projet PHP très simple :

3 fichiers :

-index.php- homepage- Page des classments

-score.php- Script appelé par le jeu

pour envoyer le score au serveur

- jeu.swf- Le jeux en question

Base de donnée ultra light

2 tables :-Score

- Fbuid- score

-score_log- Fbuid- score,- Date- Ip

Création d’une nouvelle application dédiée

Page 11: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Application PHP très légère

• Homepage :

• Classements• 2 requêtes SQL • Listing fbuid et score • Comptage pour pagination

• + Appel API facebook pour listing Amis

Chargement Applicationindex.php

Enregistrement scorescore.php

Chargement Jeux flash

Affichage classementclassement.php

Page 12: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Intérêt énorme du FBML

• Facebook comme proxy

Page 13: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• FBML, balises spéciales interprétés par facebook.• Plus la peine de stocker les informations sur les utilisateurs :• => On stocke uniquement le fbuid

• Exemple : • <fb:name uid=4 /> deviendra : Mark Zuckerberg

• <fb:pic uid=4 /> deviendra :

Page 14: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Bilan :• Coût :

• 3 développeurs• Durée : 6 h de développement

• Résultat : • 400 connexion simultanés

• 6 000 connexion simultanés

Serveur Surchargé !

Apache/PHPMySQL

Page 15: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Optimisation / Fine tunning Serveur

• Apache / PHP : • Accepter plus de connexions• Réduction du keep-alive• Accélérateur : eAccelerator.

• MySQL• Paramétrage mémoire

• Gain : • 6 000 connexions => 10 000 connexions

• Serveur surchargé !

Page 16: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Nouvelle architecture Serveur• Séparation Web et Base de donnée

• Résultat :

12 000 connexions 25 000 connexions.

Page 17: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Problème de sécurité.

Facebook Servers

12

34 5

6

1 : arrivée sur l’application2-3: requête de Facebook vers nos serveur et vice-versa4 : Facebook a parsé le FBML, la page est rendu à l’utilisateur5 : Jeu flash chargé chez l’utilisateur avec en flashvar, le fbuid6 : Envoi du score directement sur nos serveurs

2 paramètres : Fbuid et score

Page 18: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Sécurisation via authentification facebook.

Facebook Servers

123

4 5

6

6 : Envoi du score directement sur nos serveurs2 paramètres : clé d’authentification Facebook et score

7 : vérification de la clé d’authentification Facebook8 : réception du Fbuid de façon sécurisée.

7

8

Page 19: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Résultat :

• Chute de performance • Appel API Facebook : ~ 1 sec

• Process Apache Occupés à rien faire.

• Explosion mémoire serveur.

• Serveur n’acceptant plus de connexion

• Chute d’acceptation de connexion à 15 000 !

Page 20: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Nouvelle Infrastructure• Load Balancing (IP) sur 2 web frontaux

35 000 Connexions simultannéesServeurs webs chargés (process ‘’inactifs’’)

Page 21: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Changement d’infrastructure.• Haute disponibilité du jeux

Envoi du score

Facebook Servers

Page 22: [Adictiz] 2011   montée en charge avec php

Paf le chien V3 : Application dédiée FBML

• Résultat Final

• 60 000 Connexions simultannées max

• Plus de 500 Parties jouées / sec

• 200 nouveau joueurs / sec

Page 23: [Adictiz] 2011   montée en charge avec php

Evolutions de Paf le Chien

• Pic de trafic passé, Paf le chien évolue !• Multiplication des versions• Gestions d’items / payants / gratuits etc..

Page 24: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Paf le Chien, devenu un véritable jeu de gestion.

Page 25: [Adictiz] 2011   montée en charge avec php

Adictiz Framework

• Adictiz FrameWork est un outil permettant la distribution de n’importe quel jeu web sur n’importe quel site internet doté d’API

• 2 Enjeux:• Garder la même qualité de service entre 1 et 10 millions d’utilisateur

(temps de réponse, disponibilité)• Mieux connaître nos utilisateurs et leurs besoins (utilisateur unique

sur nos jeux)

Page 26: [Adictiz] 2011   montée en charge avec php

Adictiz FrameWork

Jeu 1

Utilisateur

Utilisateur

Utilisateur

Utilisateur

Utilisateur

Utilisateur

Plateforme 1

Plateforme 2

FrameWork

Data

Data

Page 27: [Adictiz] 2011   montée en charge avec php

Adictiz FrameWork – Zend Framework

Adi

ctiz

Fra

mew

ork

Adi

ctiz

MySQL

Jeu Flash

UtilisateursRéseaux sociaux

Vues

Controlleurs

Modèles

Abstraction du réseauTraitement des donnéesAbstraction du moteur de données

AMF

Framework Flash

Page 28: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Contraintes Techniques :

• Stocker/récupérer toutes les informations utilisateurs (iFrame)

• Stocker toutes les transactions (achats d’items)

• Statistiques sur tout les éléments du jeu• Entrées/sorties utilisateurs• Achats/utilisations d’items• Achats de crédits etc..

Page 29: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Conséquences :

• Enormément de requêtes SQL

• Ratio INSERT/SELECT trop élevé

• Trafic montant progressivement

• => Charge serveur MySQL monte en flèche !

Page 30: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Optimisation pour alléger le serveur MySQL

• Exploitation des sessions :

Récupération donnés utilisateur Session PHP Fin de Partie

SELECT

INSERT / UPDATE

Jeu Flash Chargé coté Client

Page 31: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Constat ?

• Serveur MySQL nettement allégé

• Charge mieux équilibrée entre PHP et MySQL

Page 32: [Adictiz] 2011   montée en charge avec php

Etude de cas : Paf Deluxe / Adictiz Framework

• Constat ?

• Trafic continuant à monter

• => Evolution de l’infrastructure

• Serveur de cache de fichiers statiques

• Module PHP memcache : partage des sessions entre les serveurs

• Module PHP APC : Cache de fichiers / Précompilateur / Cache de sessions Local

Page 33: [Adictiz] 2011   montée en charge avec php

Changement d’infrastructure serveur

Base de données

Web / PHP

Web Cache Web Cache

LoadBalancer

LoadBalancer

Web / PHP

SSL (HTTPS)

Memcache

Page 34: [Adictiz] 2011   montée en charge avec php

Fonctionnement des modules PHP : Memcache

• Memcache : Sessions PHP gérés sur un seul serveur • Partage des sessions entre plusieurs Serveur WEB• Performance => mémoire• Transparent : (configuré dans php.ini)

Web / PHP

PHP Session

Web / PHP

PHP Session

Web / PHP

PHP Session

Memcache

Page 35: [Adictiz] 2011   montée en charge avec php

Fonctionnement des modules PHP : APC

• APC : Cache Opcode / Cache utilisé comme session local• Exemple sans APC :

Page 36: [Adictiz] 2011   montée en charge avec php

Fonctionnement des modules PHP : APC

• Avec APC

Résultat :

Serveur PHP exécute 6 fois plus de requêtes.

Page 37: [Adictiz] 2011   montée en charge avec php

Infrastructure de demain : Virtualisation

• Full Virtualisé pour évolutivité au maximum• Architecture Serveurs Web• Ajout de Serveur Web/PHP à la demande• Déploiement très rapide.• Sécurité : Snapshots, remonter VM sur autre architechture

Web / PHP Web / PHP Web / PHP

Virtualisation Base de données

Memcache

Page 38: [Adictiz] 2011   montée en charge avec php

Infrastructure de demain : Virtualisation

• Architecture Base de données• Complètement virtualisée• 2 serveurs Masters en réplication Master/Master• Multiplication des slaves en cas de besoin

SQL Master 1R/W

SQL Master 2R/W

SQL Slaves – Read Only

Page 39: [Adictiz] 2011   montée en charge avec php

L’avenir ? Le Cloud ?

• Gestion des montés en charge en Cloud ?• PHP supporté par de nombreuses plateformes

Page 40: [Adictiz] 2011   montée en charge avec php

Contacts

Charles [email protected]

Stéphane DesseinDé[email protected] EuraTechnologies

165, avenue de Bretagne59000 Lille – FranceT/ +33 (0) 3 66 72 09 99E/ [email protected]