SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
11
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2014
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Université de la
Performance
22
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2014
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Agenda
33
44
Applicatif Système
55
66
Développement Production
77
Méthodologie
88
DÉMO
99
Pause
2x10 minutes
1010
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2014
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Présentation de
l’équipe
1111
Architecte Senior
Responsable pôle
performance
Responsable R&D
Membre fondateur du PerfUG
Marc Bojoly
1212
Architecte Senior
Référent technique pôle
performance
Responsable R&D
EasyMock lead developer
Objenesis lead developer
Membre fondateur du PerfUG
Henri Tremblay
1313
Architecte Senior
Pôle Devops
Expert optimisation système
Co-organisateur du concours
de performance Billion-user
challenge en 2011
Intervenant PerfUG
Ludovic Piot
1414
Architecte
Expert Infra & Devops
Responsable de l’infrastructure
OCTO
Commiter :
Master-chef
Master-cap
Mikaël Robert
1515
Les performances d’un
système sont une
spécification
fonctionnelle implicite
du système
Notre vision ?
Source : www.arthursclipart.org
1616
La mesure de performance
doit être au cœur du
processus de
développement
informatique
Notre vision ?
Source : Les géants du Web
1717
Nous voulons des systèmes
performants
Notre vision ?
Source : Les géants du Web
1818
La démarche de test que nous utilisons
TESTS DE CHARGE
Mesurer
Optimiser
TESTS DE PERFORMANCE
UNITAIRE
1919
La démarche de test que nous utilisons
TESTS DE CHARGE
TESTS DE PERFORMANCE
UNITAIRE
Mesurer
Optimiser
Mise en place
des mesures
et scénarios
Exécution des
scénarios
• Simulation
• Correction
• Mesure
Optimisation
Estimation des
gains potentiels
• Sur un poste de
développement
• Validation des
hypothèses
• Tuning des « hot
spots »
• Environnements de
production
• Scénarios
représentatifs
• Jeux de données
• Cible à atteindre
2020
Définition du plan et des
cas de test
Plan de test Cas de test
Création des scénarii et
des scripts de tests
Enregistrement des
métriques
Consolidation des
métriques et édition
d’un rapport de test
Analyse du rapport de
test et émission des
préconisations Rapport d’analyse
Métriques
Rapport de test
Contrôleur
Scripts de test Scénarii de test
Capture des
métriques
Application cible
Injecteurs
Données de test
Création des paliers
de données
Exécution : simulation
d’utilisateurs
Méthodologie d’un test de charge
1 1
2
3
3
3
4
5
2121
Les outils utilisés aujourd’hui
Identifier les ressources en quantité limitante
Identifier les impacts sur les différentes machines lorsque
l’application est distribuée
Corréler l’évolution des temps de réponse et les
consommations de ressources sur les différentes
machines
Enregistrer et rejouer de manière fidèle un ensemble
d’actions utilisateurs.
Variabiliser ces actions utilisateurs pour être représentatif
de l’usage réel
Simuler un grand nombre d’utilisateurs
Migrer les données depuis la production mais il faut
souvent l’anonymiser.
Générer un jeux de données mais il doit être représentatif
Rétablir le jeux de données dans son état initial une fois le
tir effectué
GÉNÉRER LES DONNÉES
TESTER EN CHARGE
MONITORER LA CONSOMMATION DE
RESSOURCES
2222
Les outils en général
Identifier les ressources en quantité limitante
Identifier les impacts sur les différentes machines lorsque
l’application est distribuée
Corréler l’évolution des temps de réponse et les
consommations de ressources sur les différentes
machines
Enregistrer et rejouer de manière fidèle un ensemble
d’actions utilisateurs.
Variabiliser ces actions utilisateurs pour être représentatif
de l’usage réel
Simuler un grand nombre d’utilisateurs
Migrer les données depuis la production mais il faut
souvent l’anonymiser.
Générer un jeux de données mais il doit être représentatif
Rétablir le jeux de données dans son état initial une fois le
tir effectué
GÉNÉRER LES DONNÉES
TESTER EN CHARGE
MONITORER LA CONSOMMATION DE
RESSOURCES
2323
Notre fil rouge : Happy Store
Navigateur Tomcat PgSQL
Une application comme on en
rencontre souvent, pas très loin de
l’état de l’art.. Sauf pour les
performances !
2424
Architecture
APPLICATION SERVER
DATABASE SERVER
JVM
PostgreSQL
Tomcat
2525
Acheter des produits
http://localhost:8080/happystore/transaction?
countryCode=FRA&productId=1234&storeId=1234
http://localhost:8080/happystore/transaction?
countryCode=FRA&productId=1234&storeId=1234&txId=1
2626
Finaliser sa commande
http://localhost:8080/happystore/total?
txId=1
Total
2727
Calcul de l’inventaire sur un magasin
Inventory
http://localhost:8080/happystore/inventory?
storeId=1234
2828
Calcul du chiffre d’affaire par groupe de produits
Turnover
(group by+order by)
http://localhost:8080/happystore/turnover?
groupId=1
2929
LES DIFFÉRENTS TYPES DE TEST
•Objectif : mesurer la performance unitaire
•Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque
étape du use case, on mesure le temps passé dans les différents
composants de l’application
Test de
performance
unitaire
•Objectif : mesurer la tenue en charge de l’application sur la population
cible
•Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle
pendant 2h
Test de
charge
•Objectif : déterminer les limites de l’application
•Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application
jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus
acceptables
Test de
rupture
•Objectif : déterminer la capacité de l’application à fonctionner sur une
période étendue
•Ex : on simule l’utilisation de l’application pendant 48h, avec une charge
constante et égale à la charge moyenne
Test de
vieillissement
3030
DÉMO
Exécution test unitaire
3131
LES DIFFÉRENTS TYPES DE TEST
•Objectif : mesurer la performance unitaire
•Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque
étape du use case, on mesure le temps passé dans les différents
composants de l’application
Test de
performance
unitaire
•Objectif : mesurer la tenue en charge de l’application sur la population
cible
•Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle
pendant 2h
Test de
charge
•Objectif : déterminer les limites de l’application
•Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application
jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus
acceptables
Test de
rupture
•Objectif : déterminer la capacité de l’application à fonctionner sur une
période étendue
•Ex : on simule l’utilisation de l’application pendant 48h, avec une charge
constante et égale à la charge moyenne
Test de
vieillissement
3232
Cible de performance
Cible : 100 utilisateurs concurrents
Volumétrie de la base de données : 19,5 millions de lignes
3333
DÉMO
Remplissage des données
3434
Architecture
LOCAL SERVER APPLICATION SERVER
DATABASE SERVER
Gatling
PostgreSQL
JVM
Tomcat
3535
DÉMO
Exécution test de charge
3636
Premature optimization is the
root of all evil - Donald Knuth
3737
Il voulait dire ça:
// Do not use the for(Object o : list)
// because I think it is probably
// slower than doing this… Probably…
for(int i = 0; i < list.size(); i++) {
Object o = list.get(i);
…
}
Stop guessing dam it!!!
3838
Code
Mesure
OptimiseLà où
c’est
important
3939
PROD
Archi
Dev
Perf
4040
PROD
Archi
Dev
Perf
1. Conception
des tests
2. Automatisation
des tests
3. Développement
logiciel
4. Exécution auto-
matique des tests
#1 #2 #3
4141
Archi
Dev
Perf
PROD
DélaiMEP À L’ARRACHE
1. Conception
des tests
2. Automatisation
des tests
3. Développement
logiciel
4. Exécution auto-
matique des tests
#1 #2 #3
4242
1. Conception
des tests
2. Automatisation
des tests
3. Développement
logiciel
4. Exécution auto-
matique des tests
#1 #2 #3
PROD
Archi
Dev
Tests de charge en continue
4343
Intégrer les tests de performances au cycle de
développement?
Hyperviseur
Jenkins
AppServer
Chef
DbServer
Chef
1
3
2
Créer environnement
Tir de performance
Destruction environnement
4444
Jenkins
Deploiement d’environnement automatisé : exemple avec Chef & Capistrano
Git
Nexus
Capistrano
Node
Chef
Hyperviseur
API hyperviseur
Node
Chef
Node
Chef
Dép. app.
2
1
1
3
• Capistrano demande VM à l’hyperviseur
• Installation OS par PXE ou clone
2 • Création & mise à disposition VMs
• SSH ouvert, IP temporaire
3
• Scripts de démarrage (maison, cloud-init…)
• Personnalisation VM, IP, Reseau etc
• Installation Chef
4
4
4
• Capistrano lance Chef sur Node
• Chef récupère les cookbooks via Git
• Installation packages et configurations
5
5
5
• Capistrano lance déploiement application
• Exécute sur machine téléchargement application
• Déploie application
• Administrateur
lance job
0
4545
DÉMO
Automatisation des tests
4646
LES DIFFÉRENTS TYPES DE TEST
•Objectif : mesurer la performance unitaire
•Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque
étape du use case, on mesure le temps passé dans les différents
composants de l’application
Test de
performance
unitaire
•Objectif : mesurer la tenue en charge de l’application sur la population
cible
•Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle
pendant 2h
Test de
charge
•Objectif : déterminer les limites de l’application
•Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application
jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus
acceptables
Test de
rupture
•Objectif : déterminer la capacité de l’application à fonctionner sur une
période étendue
•Ex : on simule l’utilisation de l’application pendant 48h, avec une charge
constante et égale à la charge moyenne
Test de
vieillissement
4747
DÉMO
Test de rupture
4848
Architecture
TOOL SERVER APPLICATION SERVER
DATABASE SERVER
CI STACK
GRAPHITE STACK
Jenkins Gatling
Maven
Graphite
Collectd
Carbon
Git
Collectd
Whisper
PostgreSQL
JVM
Tomcat
4949
DÉMO
Metrics
5050
Un exemple d’outil d’APM du marché : AppDynamics
5151
DÉMO
Tuning
5252
Bonnie++
5353
LES DIFFÉRENTS TYPES DE TEST
•Objectif : mesurer la performance unitaire
•Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque
étape du use case, on mesure le temps passé dans les différents
composants de l’application
Test de
performance
unitaire
•Objectif : mesurer la tenue en charge de l’application sur la population
cible
•Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle
pendant 2h
Test de
charge
•Objectif : déterminer les limites de l’application
•Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application
jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus
acceptables
Test de
rupture
•Objectif : déterminer la capacité de l’application à fonctionner sur une
période étendue
•Ex : on simule l’utilisation de l’application pendant 48h, avec une charge
constante et égale à la charge moyenne
Test de
vieillissement
5454
DÉMO
Test d’endurance
5555
Préparer les jeux de données Benerator
Exécuter une mesure unitaire Chrome developer tools
Identifier un problème d’index jstack, explan plan
Exécuter des tests de charge Gatling
Automatisation des tests de charge Jenkins, Capistrano, Chef
Problème de contention VisualVM, jstack
Mise en place du monitoring Metrics, collectd et Graphite
Tuning système Bonnie++
Identifier une fuite mémoire VisualVM
Résumé de la journée
5656
Exemple de benchmark:
http://blog.octo.com/lart-du-benchmark/
Conférence sur l’industrialisation (USI 2013):
https://www.youtube.com/watch?v=BXO3LYQ9Vic
Tests de performance SQLFire:
http://blog.octo.com/en/sqlfire-from-the-trenches/
Cet après-midi:
13h30: Hackergarten EasyMock
17h10: Microbenchmarking with JMH
Liens utiles
http://brownbaglunch.fr
5757
Retrouvez nous la semaine prochaine
http://perfug.github.io/
Prochain épisode: Jeudi 24 avril
Performance Hadoop temps réel
Sofian Djamaa (Criteo)
Sessions précédentes sur
le site
5858
5959
+Henri Tremblay
@henri_tremblay
htremblay@octo.com
+Marc Bojoly
@mbojoly
mbojoly@octo.com
+Mikael Robert
@mikaelrob
mrobert@octo.com
+Ludovic Piot
@lpiot
lpiot@octo.com

Contenu connexe

Tendances

Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...Luc Desruelle
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)LeClubQualiteLogicielle
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisJason De Oliveira
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Devops Introduction au mouvement
Devops Introduction au mouvementDevops Introduction au mouvement
Devops Introduction au mouvementUlrich VACHON
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011Henri Gomez
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 

Tendances (20)

Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Test de charge avec Apache JMeter
Test de charge avec Apache JMeterTest de charge avec Apache JMeter
Test de charge avec Apache JMeter
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...
« LabVIEW : programmation et applications » ou comment apprendre à utiliser L...
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Devops Introduction au mouvement
Devops Introduction au mouvementDevops Introduction au mouvement
Devops Introduction au mouvement
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 

En vedette

Scenographie Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...
Scenographie  Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...Scenographie  Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...
Scenographie Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...Bâle Région Mag
 
Le monde en tasse: Cafeine et decafeine
Le monde en tasse: Cafeine et decafeineLe monde en tasse: Cafeine et decafeine
Le monde en tasse: Cafeine et decafeinePhilippeGysens
 
A la découverte de Drupal
A la découverte de DrupalA la découverte de Drupal
A la découverte de DrupalClaire Roubey
 
Un projet d’enquête sur les langues
Un projet d’enquête sur les languesUn projet d’enquête sur les langues
Un projet d’enquête sur les languesProjetPluriL
 
Lesson 7 1 points lines planes
Lesson 7 1 points lines planesLesson 7 1 points lines planes
Lesson 7 1 points lines planesmlabuski
 
2014, l'année du m-commmerce
2014, l'année du m-commmerce2014, l'année du m-commmerce
2014, l'année du m-commmercePhilippe Dumont
 
Noël à l'ecomusée d'alsace_web
Noël à l'ecomusée d'alsace_webNoël à l'ecomusée d'alsace_web
Noël à l'ecomusée d'alsace_webBâle Région Mag
 
Lire en vendée 26 avril2013
Lire en vendée 26 avril2013Lire en vendée 26 avril2013
Lire en vendée 26 avril2013ecrivains-vendee
 
Àlex B i Mariano
Àlex B i MarianoÀlex B i Mariano
Àlex B i Marianoggracia2
 
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...Fanny Fontanet Briansó
 
Spanje
SpanjeSpanje
SpanjeJoranV
 
Eclairgroup Global services
Eclairgroup Global servicesEclairgroup Global services
Eclairgroup Global servicessamychandiramani
 
Les séniors et le crédit à la consommation
Les séniors et le crédit à la consommationLes séniors et le crédit à la consommation
Les séniors et le crédit à la consommationCA Consumer Finance
 
Mon amie ! (véronique)
Mon amie ! (véronique)Mon amie ! (véronique)
Mon amie ! (véronique)niknad0173
 

En vedette (20)

Scenographie Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...
Scenographie  Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...Scenographie  Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...
Scenographie Studio Adeline Rispal pour le Museum für Wohmkultur de Bâle " S...
 
Le monde en tasse: Cafeine et decafeine
Le monde en tasse: Cafeine et decafeineLe monde en tasse: Cafeine et decafeine
Le monde en tasse: Cafeine et decafeine
 
C Est Bo Vvvvv
C Est Bo VvvvvC Est Bo Vvvvv
C Est Bo Vvvvv
 
CV Michel Mlacrino 2015
CV Michel Mlacrino 2015CV Michel Mlacrino 2015
CV Michel Mlacrino 2015
 
A la découverte de Drupal
A la découverte de DrupalA la découverte de Drupal
A la découverte de Drupal
 
Un projet d’enquête sur les langues
Un projet d’enquête sur les languesUn projet d’enquête sur les langues
Un projet d’enquête sur les langues
 
2012 gap between rich and poor fr
2012 gap between rich and poor fr2012 gap between rich and poor fr
2012 gap between rich and poor fr
 
Lesson 7 1 points lines planes
Lesson 7 1 points lines planesLesson 7 1 points lines planes
Lesson 7 1 points lines planes
 
2014, l'année du m-commmerce
2014, l'année du m-commmerce2014, l'année du m-commmerce
2014, l'année du m-commmerce
 
Noël à l'ecomusée d'alsace_web
Noël à l'ecomusée d'alsace_webNoël à l'ecomusée d'alsace_web
Noël à l'ecomusée d'alsace_web
 
Lire en vendée 26 avril2013
Lire en vendée 26 avril2013Lire en vendée 26 avril2013
Lire en vendée 26 avril2013
 
Exel habilidad
Exel habilidadExel habilidad
Exel habilidad
 
M5 es
M5 esM5 es
M5 es
 
Àlex B i Mariano
Àlex B i MarianoÀlex B i Mariano
Àlex B i Mariano
 
Examen proximedia
Examen proximedia Examen proximedia
Examen proximedia
 
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...
Innovación metodológica en la Asociación Estel Tàpia: un proceso de inclusión...
 
Spanje
SpanjeSpanje
Spanje
 
Eclairgroup Global services
Eclairgroup Global servicesEclairgroup Global services
Eclairgroup Global services
 
Les séniors et le crédit à la consommation
Les séniors et le crédit à la consommationLes séniors et le crédit à la consommation
Les séniors et le crédit à la consommation
 
Mon amie ! (véronique)
Mon amie ! (véronique)Mon amie ! (véronique)
Mon amie ! (véronique)
 

Similaire à Université de la performance - Devoxx France

Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionDEFO KUATE Landry
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
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
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelAgile Montréal
 
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteGab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteAZUG FR
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsStephane Woillez
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...Arcbees
 
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
 
Développer ou debugger ?
Développer ou debugger ? Développer ou debugger ?
Développer ou debugger ? Microsoft
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...Publicis Sapient Engineering
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Load test & performance profiling
Load test & performance profilingLoad test & performance profiling
Load test & performance profilingMSDEVMTL
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...TelecomValley
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...TelecomValley
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterGuillaume Deshayes
 

Similaire à Université de la performance - Devoxx France (20)

Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de production
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
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...
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
 
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteGab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
 
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...
 
Développer ou debugger ?
Développer ou debugger ? Développer ou debugger ?
Développer ou debugger ?
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Load test & performance profiling
Load test & performance profilingLoad test & performance profiling
Load test & performance profiling
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
 

Plus de Marc Bojoly

Restructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiRestructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiMarc Bojoly
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?Marc Bojoly
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un siMarc Bojoly
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataMarc Bojoly
 
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyL'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyMarc Bojoly
 
Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Marc Bojoly
 
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Marc Bojoly
 
Performance ug#2 hands-on lab
Performance ug#2 hands-on labPerformance ug#2 hands-on lab
Performance ug#2 hands-on labMarc Bojoly
 

Plus de Marc Bojoly (9)

Restructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiRestructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoi
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
 
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyL'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
 
Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?
 
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
 
Performance ug#2 hands-on lab
Performance ug#2 hands-on labPerformance ug#2 hands-on lab
Performance ug#2 hands-on lab
 

Université de la performance - Devoxx France

  • 1. 11 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2014 50, avenue des Champs-Elysées 75008 Paris - FRANCE Université de la Performance
  • 2. 22 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2014 50, avenue des Champs-Elysées 75008 Paris - FRANCE Agenda
  • 3. 33
  • 5. 55
  • 10. 1010 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2014 50, avenue des Champs-Elysées 75008 Paris - FRANCE Présentation de l’équipe
  • 11. 1111 Architecte Senior Responsable pôle performance Responsable R&D Membre fondateur du PerfUG Marc Bojoly
  • 12. 1212 Architecte Senior Référent technique pôle performance Responsable R&D EasyMock lead developer Objenesis lead developer Membre fondateur du PerfUG Henri Tremblay
  • 13. 1313 Architecte Senior Pôle Devops Expert optimisation système Co-organisateur du concours de performance Billion-user challenge en 2011 Intervenant PerfUG Ludovic Piot
  • 14. 1414 Architecte Expert Infra & Devops Responsable de l’infrastructure OCTO Commiter : Master-chef Master-cap Mikaël Robert
  • 15. 1515 Les performances d’un système sont une spécification fonctionnelle implicite du système Notre vision ? Source : www.arthursclipart.org
  • 16. 1616 La mesure de performance doit être au cœur du processus de développement informatique Notre vision ? Source : Les géants du Web
  • 17. 1717 Nous voulons des systèmes performants Notre vision ? Source : Les géants du Web
  • 18. 1818 La démarche de test que nous utilisons TESTS DE CHARGE Mesurer Optimiser TESTS DE PERFORMANCE UNITAIRE
  • 19. 1919 La démarche de test que nous utilisons TESTS DE CHARGE TESTS DE PERFORMANCE UNITAIRE Mesurer Optimiser Mise en place des mesures et scénarios Exécution des scénarios • Simulation • Correction • Mesure Optimisation Estimation des gains potentiels • Sur un poste de développement • Validation des hypothèses • Tuning des « hot spots » • Environnements de production • Scénarios représentatifs • Jeux de données • Cible à atteindre
  • 20. 2020 Définition du plan et des cas de test Plan de test Cas de test Création des scénarii et des scripts de tests Enregistrement des métriques Consolidation des métriques et édition d’un rapport de test Analyse du rapport de test et émission des préconisations Rapport d’analyse Métriques Rapport de test Contrôleur Scripts de test Scénarii de test Capture des métriques Application cible Injecteurs Données de test Création des paliers de données Exécution : simulation d’utilisateurs Méthodologie d’un test de charge 1 1 2 3 3 3 4 5
  • 21. 2121 Les outils utilisés aujourd’hui Identifier les ressources en quantité limitante Identifier les impacts sur les différentes machines lorsque l’application est distribuée Corréler l’évolution des temps de réponse et les consommations de ressources sur les différentes machines Enregistrer et rejouer de manière fidèle un ensemble d’actions utilisateurs. Variabiliser ces actions utilisateurs pour être représentatif de l’usage réel Simuler un grand nombre d’utilisateurs Migrer les données depuis la production mais il faut souvent l’anonymiser. Générer un jeux de données mais il doit être représentatif Rétablir le jeux de données dans son état initial une fois le tir effectué GÉNÉRER LES DONNÉES TESTER EN CHARGE MONITORER LA CONSOMMATION DE RESSOURCES
  • 22. 2222 Les outils en général Identifier les ressources en quantité limitante Identifier les impacts sur les différentes machines lorsque l’application est distribuée Corréler l’évolution des temps de réponse et les consommations de ressources sur les différentes machines Enregistrer et rejouer de manière fidèle un ensemble d’actions utilisateurs. Variabiliser ces actions utilisateurs pour être représentatif de l’usage réel Simuler un grand nombre d’utilisateurs Migrer les données depuis la production mais il faut souvent l’anonymiser. Générer un jeux de données mais il doit être représentatif Rétablir le jeux de données dans son état initial une fois le tir effectué GÉNÉRER LES DONNÉES TESTER EN CHARGE MONITORER LA CONSOMMATION DE RESSOURCES
  • 23. 2323 Notre fil rouge : Happy Store Navigateur Tomcat PgSQL Une application comme on en rencontre souvent, pas très loin de l’état de l’art.. Sauf pour les performances !
  • 27. 2727 Calcul de l’inventaire sur un magasin Inventory http://localhost:8080/happystore/inventory? storeId=1234
  • 28. 2828 Calcul du chiffre d’affaire par groupe de produits Turnover (group by+order by) http://localhost:8080/happystore/turnover? groupId=1
  • 29. 2929 LES DIFFÉRENTS TYPES DE TEST •Objectif : mesurer la performance unitaire •Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application Test de performance unitaire •Objectif : mesurer la tenue en charge de l’application sur la population cible •Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2h Test de charge •Objectif : déterminer les limites de l’application •Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables Test de rupture •Objectif : déterminer la capacité de l’application à fonctionner sur une période étendue •Ex : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne Test de vieillissement
  • 31. 3131 LES DIFFÉRENTS TYPES DE TEST •Objectif : mesurer la performance unitaire •Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application Test de performance unitaire •Objectif : mesurer la tenue en charge de l’application sur la population cible •Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2h Test de charge •Objectif : déterminer les limites de l’application •Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables Test de rupture •Objectif : déterminer la capacité de l’application à fonctionner sur une période étendue •Ex : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne Test de vieillissement
  • 32. 3232 Cible de performance Cible : 100 utilisateurs concurrents Volumétrie de la base de données : 19,5 millions de lignes
  • 34. 3434 Architecture LOCAL SERVER APPLICATION SERVER DATABASE SERVER Gatling PostgreSQL JVM Tomcat
  • 36. 3636 Premature optimization is the root of all evil - Donald Knuth
  • 37. 3737 Il voulait dire ça: // Do not use the for(Object o : list) // because I think it is probably // slower than doing this… Probably… for(int i = 0; i < list.size(); i++) { Object o = list.get(i); … } Stop guessing dam it!!!
  • 40. 4040 PROD Archi Dev Perf 1. Conception des tests 2. Automatisation des tests 3. Développement logiciel 4. Exécution auto- matique des tests #1 #2 #3
  • 41. 4141 Archi Dev Perf PROD DélaiMEP À L’ARRACHE 1. Conception des tests 2. Automatisation des tests 3. Développement logiciel 4. Exécution auto- matique des tests #1 #2 #3
  • 42. 4242 1. Conception des tests 2. Automatisation des tests 3. Développement logiciel 4. Exécution auto- matique des tests #1 #2 #3 PROD Archi Dev Tests de charge en continue
  • 43. 4343 Intégrer les tests de performances au cycle de développement? Hyperviseur Jenkins AppServer Chef DbServer Chef 1 3 2 Créer environnement Tir de performance Destruction environnement
  • 44. 4444 Jenkins Deploiement d’environnement automatisé : exemple avec Chef & Capistrano Git Nexus Capistrano Node Chef Hyperviseur API hyperviseur Node Chef Node Chef Dép. app. 2 1 1 3 • Capistrano demande VM à l’hyperviseur • Installation OS par PXE ou clone 2 • Création & mise à disposition VMs • SSH ouvert, IP temporaire 3 • Scripts de démarrage (maison, cloud-init…) • Personnalisation VM, IP, Reseau etc • Installation Chef 4 4 4 • Capistrano lance Chef sur Node • Chef récupère les cookbooks via Git • Installation packages et configurations 5 5 5 • Capistrano lance déploiement application • Exécute sur machine téléchargement application • Déploie application • Administrateur lance job 0
  • 46. 4646 LES DIFFÉRENTS TYPES DE TEST •Objectif : mesurer la performance unitaire •Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application Test de performance unitaire •Objectif : mesurer la tenue en charge de l’application sur la population cible •Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2h Test de charge •Objectif : déterminer les limites de l’application •Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables Test de rupture •Objectif : déterminer la capacité de l’application à fonctionner sur une période étendue •Ex : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne Test de vieillissement
  • 48. 4848 Architecture TOOL SERVER APPLICATION SERVER DATABASE SERVER CI STACK GRAPHITE STACK Jenkins Gatling Maven Graphite Collectd Carbon Git Collectd Whisper PostgreSQL JVM Tomcat
  • 50. 5050 Un exemple d’outil d’APM du marché : AppDynamics
  • 53. 5353 LES DIFFÉRENTS TYPES DE TEST •Objectif : mesurer la performance unitaire •Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application Test de performance unitaire •Objectif : mesurer la tenue en charge de l’application sur la population cible •Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2h Test de charge •Objectif : déterminer les limites de l’application •Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables Test de rupture •Objectif : déterminer la capacité de l’application à fonctionner sur une période étendue •Ex : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne Test de vieillissement
  • 55. 5555 Préparer les jeux de données Benerator Exécuter une mesure unitaire Chrome developer tools Identifier un problème d’index jstack, explan plan Exécuter des tests de charge Gatling Automatisation des tests de charge Jenkins, Capistrano, Chef Problème de contention VisualVM, jstack Mise en place du monitoring Metrics, collectd et Graphite Tuning système Bonnie++ Identifier une fuite mémoire VisualVM Résumé de la journée
  • 56. 5656 Exemple de benchmark: http://blog.octo.com/lart-du-benchmark/ Conférence sur l’industrialisation (USI 2013): https://www.youtube.com/watch?v=BXO3LYQ9Vic Tests de performance SQLFire: http://blog.octo.com/en/sqlfire-from-the-trenches/ Cet après-midi: 13h30: Hackergarten EasyMock 17h10: Microbenchmarking with JMH Liens utiles http://brownbaglunch.fr
  • 57. 5757 Retrouvez nous la semaine prochaine http://perfug.github.io/ Prochain épisode: Jeudi 24 avril Performance Hadoop temps réel Sofian Djamaa (Criteo) Sessions précédentes sur le site
  • 58. 5858
  • 59. 5959 +Henri Tremblay @henri_tremblay htremblay@octo.com +Marc Bojoly @mbojoly mbojoly@octo.com +Mikael Robert @mikaelrob mrobert@octo.com +Ludovic Piot @lpiot lpiot@octo.com