Download - [Adictiz] 2011 montée en charge avec php
![Page 1: [Adictiz] 2011 montée en charge avec php](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/1.jpg)
Montée en charge avec PHPCas Paf le chien
![Page 2: [Adictiz] 2011 montée en charge avec php](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/4.jpg)
Paf le chien - le jeu
![Page 5: [Adictiz] 2011 montée en charge avec php](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/5.jpg)
Paf le chien - le jeu
![Page 6: [Adictiz] 2011 montée en charge avec php](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/6.jpg)
Paf le chien - le jeu
![Page 7: [Adictiz] 2011 montée en charge avec php](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052600/5586e66bd8b42a84798b46b6/html5/thumbnails/40.jpg)
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]