SlideShare une entreprise Scribd logo
1  sur  89
http://www.codizy.com
Méthodologie
et outils d’optimisations
PHP / MySQL
3 phases
dans le
cycle de vie
d’une
application…
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Post Production
Mise en production
Développement
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
13
2
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Développement1
Choisir
le
BON
framework !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Le gain financier sur le temps de développement
ne peut pas toujours être compensé
par un investissement dans des serveurs plus puissants.
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
0
100
200
300
400
500
600
700
800
900
ATTENTION
à l’utilisation des
design patterns
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Trouver le bon équilibre
entre la mise en place de design pattern complexes
et des classes épurées et difficiles à maintenir.
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
tests… tesTS… TESTS!!!
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Jenkins
 PHPUnit
 Sélénium
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Prévoir dès le départ
les tests unitaires
et le système d’intégration continue :
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Utiliser
une approche MVC
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
L’approche
Model / Vue / Contrôleur
vous fera économisez beaucoup de temps
lors du développement de votre application.
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
L’utilisation de Smarty / Twig / etc…
ne devrait pas être problématique niveau performance
si les caches sont bien configurés.
Optimiser JS & CSS
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Lors de l’écriture du template HTML,
prévoir de facilement minifier
vos JS et CSS (en utilisant Google Minify par exemple)
Utiliser du cache
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Cache local
 Memcached / Redis
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Memcached / Redis :
système clés  valeurs
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Trop de Cache…
…tue le cache !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Latence réseau
 Contrôler la taille du cache local
… si il est stocké dans un array
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Détecter
les endroits
où les requêtes
sont redondantes
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
L’application doit être
replication aware
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Lectures sur les esclaves SQL
 Ecritures sur le maitre
Attention
aux problématiques
de synchronisation
Maitre / Esclave
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
SQL :
penser dès le départ aux
problèmes de
scalabilités
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Il est compliqué de modifier la structure de la base si
elle est de taille conséquente, sans interruption en
production.
 Attention à la concurrence des accès :
=> Le choix du type d’engine MySQL est très important :
TokuDB > InnoDB > MyISAM
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Exemple :
Détails d’exécution d’une requête SQL
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Attention aux requêtes
Innocentes mais Diaboliques !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Ne pas chercher à
tout faire avec MySQL
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Recherche FullText
=> Sphinx, Solar, etc…
 Recherche Geospatiale
=> SphinxQL
 Pas de contrainte sur la fraicheur des données ?
=> NoSQL
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Le choix de la DB
peut faciliter la maintenance système.
Ex : SphinxQL intégré dans MariaDB.
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Différence de vitesse entre MySQL et Sphinx
… sur une recherche Geo (proximité)
Feature complete ?
Analyser
les requêtes SQL…
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 Toujours prévoir du temps pour l’optimisation des
requêtes.
 Apprendre à utiliser la commande EXPLAIN de MySQL
… et optimiser
les bases de données
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Mise en production2
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Faire
LES BON CHOIX
à l’installation !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Vérifier qu’il y a un cache d’opcode pour PHP
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Utiliser php-fpm
avec apache 2 en mode worker, ou avec nginx
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Utiliser le gestionnaire de BDD
qui correspond le mieux
 SQL : percona, mysql, mariadb, postgresql…
 NoSQL : MongoDB, Cassandra, CouchDB…
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Encore un peu de Cache 
Utiliser un cache de type Varnish
si certaines pages de votre contenu sont peu mises à jour.
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Tuner les paramètres
 MySQL : my.cnf
 Apache : désactivez keep-alive pour les scripts PHP et
utilisez Nginx pour la gestion des images. Ajustez au
mieux le nombre de processus IDLE !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Fonctionnement du Keep-ALive
Post Production 3
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
C’est en prod mais c’est
pas fini ;)
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
 MySQL : Le comportement des utilisateurs réels peut
être différent de ce que était prévu.
 Le volume de la base de données peut changer la
façon de se comporter de MySQL
Analyser rapidement
ce qui se passe sur la production
De quoi ai-je besoin ?
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Capturer les requêtes SQL
 Percona toolkit,
 NewRelic,
 Codizy,
 …
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Percona pt-query-digest
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
New Relic
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Répartition des ressources
 Monit,
 Cacti,
 RRD,
 …
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Cacti
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Les ressources par type de pages,
c’est encore mieux !
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
New Relic
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Informations
Real User Monitoring
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Dyna Trace
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Système de collecte
des erreurs PHP / MySQL
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Airbrake
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Codizy
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
Conclusion
Q & A
DÉVELOPPEMENT MISE EN PRODUCTION CONCLUSIONROADMAP POST PRODUCTION
http://www.codizy.com
Codizy a créé un
d’optimisation
pour aider les développeurs à
leurs applications
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
100% applications
RALENTISSEMENTS
PANNES
Subissent des
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
Codizy corrige
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
Monitoring1
2
3
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
+25%
-12%
+16%
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
+25%
-12%
+16%
Simple
Sur
mesure
Sécurisé
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
100% Garantie
SAAS
ou
On-
Premises
Bug Trackers
Jira,
Redmine,
Lighthouse,
Github,
Assemble…
Compatibilité Applications tierces
Frameworks
Yii,
Symfony2,
Zend…
CMS
Wordpress,
Drupal…
eCommerce
Magento,
Prestashop,
OS Commerce…
Langages
PHP…
Autres à venir
Agent
(server)…
Wrapper
(Code)…
ConnecteursOr
BDD
MySQL,
MariaDB,
Percona…
Solutions
SQL
Requêtes
Dupliquées
Profiling
Différentiel
Solutions
SQL
Requêtes
Dupliquées
Requêtes
SQL
Profiling Requêtes
SQL
Schema
SQL
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
Autres solutions
ANALYSEMONITORING
Temps
d’exécution des
requêtes
+
Profiling PHP
basique
ANALYSEMONITORING
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
Temps
d’exécution des
requêtes
+
+
Plan
d’exécution des
requêtes
Profiling PHP
détaillé
OPTIMISATION
+
No
Avant
optimisation
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
– 98% objets temporaires (MySQL) (ref = 200M requêtes / jour)
Après
optimisation
Avant
optimisation
Après
optimisation
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
- 50% charge serveurs (MySQL) (ref = 200M requêtes / jour)
Après
optimisation
Avant
optimisation
PROBLÈME SOLUTION BÉNÉFICES INTÉGRATION CUSTOMISATION COMPÉTITION DÉMODÉFINITION FONCTIONS
–50% charge serveurs front (PHP)
http://www.codizy.com

Contenu connexe

Similaire à Methodologie et outils d optimisation php mysql

Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...Publicis Sapient Engineering
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationThe Incredible Automation Day
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsNeil Armstrong
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Avantages de TYPO3 dans un environnement LAMP
Avantages de TYPO3 dans un environnement LAMPAvantages de TYPO3 dans un environnement LAMP
Avantages de TYPO3 dans un environnement LAMPYannick Pavard
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniOlivier DASINI
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOWeLoveSEO
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshopCyril Balit
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020SEO CAMP
 
Confoo 2017 - Nouveau socle pour une nouvelle vie
Confoo 2017 - Nouveau socle pour une nouvelle vieConfoo 2017 - Nouveau socle pour une nouvelle vie
Confoo 2017 - Nouveau socle pour une nouvelle viemikaelrandy
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 

Similaire à Methodologie et outils d optimisation php mysql (20)

Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisation
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server Internals
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Avantages de TYPO3 dans un environnement LAMP
Avantages de TYPO3 dans un environnement LAMPAvantages de TYPO3 dans un environnement LAMP
Avantages de TYPO3 dans un environnement LAMP
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
 
Fusion io
Fusion ioFusion io
Fusion io
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshop
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
Confoo 2017 - Nouveau socle pour une nouvelle vie
Confoo 2017 - Nouveau socle pour une nouvelle vieConfoo 2017 - Nouveau socle pour une nouvelle vie
Confoo 2017 - Nouveau socle pour une nouvelle vie
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 

Methodologie et outils d optimisation php mysql