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...
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...
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 Par...
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 develope...
1313
Architecte Senior
Pôle Devops
Expert optimisation système
Co-organisateur du concours
de performance Billion-user
cha...
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.a...
1616
La mesure de performance
doit être au cœur du
processus de
développement
informatique
Notre vision ?
Source : Les géa...
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
...
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
Enregist...
2121
Les outils utilisés aujourd’hui
Identifier les ressources en quantité limitante
Identifier les impacts sur les différ...
2222
Les outils en général
Identifier les ressources en quantité limitante
Identifier les impacts sur les différentes mach...
2323
Notre fil rouge : Happy Store
Navigateur Tomcat PgSQL
Une application comme on en
rencontre souvent, pas très loin de...
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:/...
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/turn...
2929
LES DIFFÉRENTS TYPES DE TEST
•Objectif : mesurer la performance unitaire
•Ex : le use case de souscription est testé ...
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é ...
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 thi...
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-
...
4141
Archi
Dev
Perf
PROD
DélaiMEP À L’ARRACHE
1. Conception
des tests
2. Automatisation
des tests
3. Développement
logicie...
4242
1. Conception
des tests
2. Automatisation
des tests
3. Développement
logiciel
4. Exécution auto-
matique des tests
#1...
4343
Intégrer les tests de performances au cycle de
développement?
Hyperviseur
Jenkins
AppServer
Chef
DbServer
Chef
1
3
2
...
4444
Jenkins
Deploiement d’environnement automatisé : exemple avec Chef & Capistrano
Git
Nexus
Capistrano
Node
Chef
Hyperv...
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é ...
4747
DÉMO
Test de rupture
4848
Architecture
TOOL SERVER APPLICATION SERVER
DATABASE SERVER
CI STACK
GRAPHITE STACK
Jenkins Gatling
Maven
Graphite
Co...
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é ...
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’i...
5656
Exemple de benchmark:
http://blog.octo.com/lart-du-benchmark/
Conférence sur l’industrialisation (USI 2013):
https://...
5757
Retrouvez nous la semaine prochaine
http://perfug.github.io/
Prochain épisode: Jeudi 24 avril
Performance Hadoop temp...
5858
5959
+Henri Tremblay
@henri_tremblay
htremblay@octo.com
+Marc Bojoly
@mbojoly
mbojoly@octo.com
+Mikael Robert
@mikaelrob
m...
Upcoming SlideShare
Loading in...5
×

Université de la performance - Devoxx France

420

Published on

Liens utiles

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
420
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Université de la performance - Devoxx France

  1. 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. 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. 3. 33
  4. 4. 44 Applicatif Système
  5. 5. 55
  6. 6. 66 Développement Production
  7. 7. 77 Méthodologie
  8. 8. 88 DÉMO
  9. 9. 99 Pause 2x10 minutes
  10. 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. 11. 1111 Architecte Senior Responsable pôle performance Responsable R&D Membre fondateur du PerfUG Marc Bojoly
  12. 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. 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. 14. 1414 Architecte Expert Infra & Devops Responsable de l’infrastructure OCTO Commiter : Master-chef Master-cap Mikaël Robert
  15. 15. 1515 Les performances d’un système sont une spécification fonctionnelle implicite du système Notre vision ? Source : www.arthursclipart.org
  16. 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. 17. 1717 Nous voulons des systèmes performants Notre vision ? Source : Les géants du Web
  18. 18. 1818 La démarche de test que nous utilisons TESTS DE CHARGE Mesurer Optimiser TESTS DE PERFORMANCE UNITAIRE
  19. 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. 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. 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. 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. 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 !
  24. 24. 2424 Architecture APPLICATION SERVER DATABASE SERVER JVM PostgreSQL Tomcat
  25. 25. 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
  26. 26. 2626 Finaliser sa commande http://localhost:8080/happystore/total? txId=1 Total
  27. 27. 2727 Calcul de l’inventaire sur un magasin Inventory http://localhost:8080/happystore/inventory? storeId=1234
  28. 28. 2828 Calcul du chiffre d’affaire par groupe de produits Turnover (group by+order by) http://localhost:8080/happystore/turnover? groupId=1
  29. 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
  30. 30. 3030 DÉMO Exécution test unitaire
  31. 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. 32. 3232 Cible de performance Cible : 100 utilisateurs concurrents Volumétrie de la base de données : 19,5 millions de lignes
  33. 33. 3333 DÉMO Remplissage des données
  34. 34. 3434 Architecture LOCAL SERVER APPLICATION SERVER DATABASE SERVER Gatling PostgreSQL JVM Tomcat
  35. 35. 3535 DÉMO Exécution test de charge
  36. 36. 3636 Premature optimization is the root of all evil - Donald Knuth
  37. 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!!!
  38. 38. 3838 Code Mesure OptimiseLà où c’est important
  39. 39. 3939 PROD Archi Dev Perf
  40. 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. 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. 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. 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. 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
  45. 45. 4545 DÉMO Automatisation des tests
  46. 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
  47. 47. 4747 DÉMO Test de rupture
  48. 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
  49. 49. 4949 DÉMO Metrics
  50. 50. 5050 Un exemple d’outil d’APM du marché : AppDynamics
  51. 51. 5151 DÉMO Tuning
  52. 52. 5252 Bonnie++
  53. 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
  54. 54. 5454 DÉMO Test d’endurance
  55. 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. 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. 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. 58. 5858
  59. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×