[Adictiz] 2011   montée en charge avec php
Upcoming SlideShare
Loading in...5
×
 

[Adictiz] 2011 montée en charge avec php

on

  • 4,064 views

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

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

Statistics

Views

Total Views
4,064
Views on SlideShare
3,641
Embed Views
423

Actions

Likes
6
Downloads
32
Comments
0

15 Embeds 423

http://www.scoop.it 267
http://blog.websourcing.fr 60
http://www.conseilsmarketing.fr 59
http://www.conseilsmarketing.com 16
http://www.slideshare.net 4
http://twitter.com 3
url_unknown 3
http://www.netvibes.com 2
http://feeds.feedburner.com 2
https://twitter.com 2
http://paper.li 1
http://zimbra.free.fr 1
http://www.telechargementz.org 1
http://webcache.googleusercontent.com 1
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Montée en charge avec PHPCas Paf le chien
  • 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.
  • 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.
    View slide
  • Paf le chien - le jeu
    View slide
  • Paf le chien - le jeu
  • Paf le chien - le jeu
  • 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 Ghz
    4 GB Ram
    500 Go Disk / Raid 1
  • 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 userssimultannées
    => Surchage serveur !
    Infra identique :
    1 Serveur :
    Moyenne Gamme
    4 CPU / 2 Ghz
    4 GB Ram
    500 Go Disk / Raid 1
  • 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..)
  • Paf le chien V3 : Application dédiée FBML
    Création d’une nouvelle application dédiée
    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
  • 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
    Jeux flash
    Chargement Application
    index.php
    Enregistrement score
    score.php
    Affichage classement
    classement.php
  • Paf le chien V3 : Application dédiée FBML
    Intérêt énorme du FBML
    Facebook comme proxy
  • 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:nameuid=4 /> deviendra : Mark Zuckerberg
    <fb:picuid=4 /> deviendra :
  • 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/PHP
    MySQL
  • 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é !
  • 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.
  • Paf le chien V3 : Application dédiée FBML
    Problème de sécurité.
    2
    Facebook Servers
    1
    3
    5
    4
    6
    1 : arrivée sur l’application
    2-3: requête de Facebook vers nos serveur et vice-versa
    4 : Facebook a parsé le FBML, la page est rendu à l’utilisateur
    5 : Jeu flash chargé chez l’utilisateur avec en flashvar, le fbuid
    6 : Envoi du score directement sur nos serveurs
    2 paramètres : Fbuid et score
  • Paf le chien V3 : Application dédiée FBML
    Sécurisation via authentification facebook.
    2
    Facebook Servers
    1
    3
    5
    4
    7
    8
    6
    6 : Envoi du score directement sur nos serveurs
    2 paramètres : clé d’authentification Facebook et score
    7 : vérification de la clé d’authentification Facebook
    8 : réception du Fbuid de façon sécurisée.
  • 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 !
  • Paf le chien V3 : Application dédiée FBML
    Nouvelle Infrastructure
    LoadBalancing (IP) sur 2 web frontaux
    35 000 Connexions simultannées
    Serveurs webs chargés (process ‘’inactifs’’)
  • Paf le chien V3 : Application dédiée FBML
    Changement d’infrastructure.
    Haute disponibilité du jeux
    Envoi du score
    Facebook Servers
  • 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
  • Evolutions de Paf le Chien
    Pic de trafic passé, Paf le chien évolue !
    Multiplication des versions
    Gestions d’items / payants / gratuits etc..
  • Etude de cas : Paf Deluxe / Adictiz Framework
    Paf le Chien, devenu un véritable jeu de gestion.
  • Adictiz Framework
    AdictizFrameWork 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)
  • AdictizFrameWork
    FrameWork
    Data
    Plateforme 1
    Utilisateur
    Utilisateur
    Utilisateur
    Utilisateur
    Utilisateur
    Utilisateur
    Jeu 1
    Data
    Plateforme 2
  • AdictizFrameWork – Zend Framework
    Utilisateurs
    Réseaux sociaux
    Vues
    Jeu Flash
    Framework Flash
    Controlleurs
    Abstraction du réseau
    Traitement des données
    Abstraction du moteur de données
    Adictiz Framework
    Adictiz
    AMF
    Modèles
    MySQL
  • 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..
  • 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 !
  • Etude de cas : Paf Deluxe / Adictiz Framework
    Optimisation pour alléger le serveur MySQL
    Exploitation des sessions :
    INSERT / UPDATE
    SELECT
    Session PHP
    Fin de Partie
    Récupération donnés utilisateur
    Jeu Flash Chargé coté Client
  • Etude de cas : Paf Deluxe / Adictiz Framework
    Constat ?
    Serveur MySQL nettement allégé
    Charge mieux équilibrée entre PHP et MySQL
  • 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
  • Changement d’infrastructure serveur
    LoadBalancer
    Web Cache
    Web Cache
    SSL (HTTPS)
    LoadBalancer
    Web / PHP
    Web / PHP
    Base de données
    Memcache
  • 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)
    Memcache
    PHP Session
    PHP Session
    PHP Session
    Web / PHP
    Web / PHP
    Web / PHP
  • Fonctionnement des modules PHP : APC
    APC : Cache Opcode / Cache utilisé comme session local
    Exemple sans APC :
  • Fonctionnement des modules PHP : APC
    Avec APC
    Résultat :
    Serveur PHP exécute 6 fois plus de requêtes.
  • 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
    Memcache
    Virtualisation Base de données
  • 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 1
    R/W
    SQL Master 2
    R/W
    SQL Slaves – Read Only
  • L’avenir ? Le Cloud ?
    Gestion des montés en charge en Cloud ?
    PHP supporté par de nombreuses plateformes
  • Contacts
    Stéphane Dessein
    Développeur
    stephane.dessein@adictiz.com
    EuraTechnologies
    165, avenue de Bretagne
    59000 Lille – France
    Charles Christory
    Fondateur
    charles.christory@adictiz.com
    T/ +33 (0) 3 66 72 09 99
    E/ contact@adictiz.com