SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Capacity Planning
Mesurer la capacité de votre
système
Plan
1/ Une capacité ?
2/ Se préparer
3/ Construire vos tests
4/ Conseils supplémentaires
5/ Notre expérience
1/ Une capacité ?
Comprendre et définir le but à atteindre
Capacity Planning
• Le but :
• Mesurer la capacité de votre système
• Garantir un “domaine de vol”
• Les objectifs :
• ANTICIPER : éviter des problèmes évidents
• FOCALISER : ne pas travailler sur de faux problèmes
• CAPITALISER : pouvoir définir des seuils d’alerte
• EXPERTISE : maitrise du système en production
• Roder les relations Dev / Ops
Domaine de vol
• Le domaine de vol d'un avion est l'espace en
vitesse et altitude à l'intérieur duquel il peut
fonctionner en sécurité (vérifié)
• Pour un site :
• Altitude = Nombre d’utilisateurs
• Vitesse = pages vues/min
Traduire la capacité en chiffres
• Ce que le système doit fournir
• On part d’Indicateurs métier
• 2.000 ventes par jour
• Pic télé : 2000 visiteurs sur 10min
• Objectif annuel : 10 Millions de pages vues
• On traduit en indicateurs techniques
• 1.000.000 pages vues / j
• 10.000 pages vues / min en pic (5 min)
2/ Se préparer
La préparation de l’environnement de test
Préparer 1/5 : Définir le lieu des tests
• Soit en production
• Idéal car preuve formelle de la capacité
• Attention à la pollution des données
• Soit sur un environnement dédié
• Duplication de la production (hard / soft)
• Mocking sur les interfaces non ciblées
• Ne validera pas forcément tout
• VRAIMENT dédié !
Préparer 2/5 : Définir des scénarios
• Il faut des scénarios précis :
• Définit un cadre
• Valide les objectifs sur le papier (calculs)
• Grands impacts lorsqu’on le change
• Se concentrer sur le chemin critique (pas exhaustif)
• Nécessaires pour :
• Planifier les quantités de données à injecter
• Définir l’infrastructure de test (partie utile)
• Idée Assez similaire aux Tests Unitaires
Préparer 3/5 : Avoir du monitoring
• Avoir un monitoring de prod
• Doubler avec un monitoring plus fin
• Graphite (ou autre base RRD)
• JMXTrans l’alié de Graphite
• Collecte des logs
• Syslog, logstash, splunk, ... mais faut le faire
• Ces parties peuvent être des bottlenecks de
votre production (logs, backups, ...)
Préparer 4/5 : Outillage d’injection
• Mise en place et vérification de l’infrastructure
• Capacité d’injection :
• Outillage et Scripts d’injection
• Capacité de mesure : vérifier les chiffres mesurés
• Double système de mesure ?
• Règlages
• Ne faire varier qu’un seul paramètre à la fois
• Vérifier les hypothèses et expliquer les différences
• Jouer et publier les tests
• Rejouer 3 fois les tests (surtout en cas de soucis)
• Publier pour assurer la tracabilité
Préparer 5/5 : Reporting
• Etre capable de collecter toutes les données
• Archivage systématique pour chaque tir
• Consultation / vérifications a posteriori
• Espace pour ajouter des notes
• Cas idéal : on photographie l’état instantané
de l'infra
• A complèter au fil des besoins
Assurez-vous un minimum !
• Vérifiez la capacité de votre infrastructure de test
• Capacité d’injection (injecteurs performants)
• Capacité de charge hors applicatif
• L’outil magique : basic perf webapp
• Une application blanche
• Temps de réponse
• Taille de la réponse
• Valide votre capacité à tester
• Ne pas y passer 100h !
Démo Basic Web Perf
En local
3/ Construire vos tests
Choisissez vos outils
Outils d’injection
• A choisir avec soin !
•JMeter : good old friend
•LoadRunner : cher ami
•Gatling : La force brute
•TheGrinder : python
•Japex : micro benchmark
•Java : self made injector !
• Capacité de reproduire à grande échelle vos
scénarios et mesurer leur succès
JMeter
• Quelques bonnes recommandations JMeter
• Client HttpClient 4
• Stockage response en md5 (mémoire)
• JMeter plugins
• http://code.google.com/p/jmeter-plugins/
• UltimateThreadGroup
• Graphes ResponseCode / ResponseTime
• Console Status Logger
• Throughput Shaping Timer
Outillage d’automatisation
• Scripting
• Shell : l’éternel
• Ant/Maven
• Jenkins
• Scénarios, plugins
• Tracabilité, commentaires
• Amazon EC2
• Création de machines
• Démarrage/Arrêt
Monitoring
• Suivre le comportement de votre application
• Via JMX
• VisualVM, JMXTrans, ...
• Via les logs
• Outils de lecture des logs
• Conserver / Exporter vos mesures
• Graphite (base RRD)
• Zabbix / Munin
• Java Melody
4/ Notre expérience
Le cas de LesFurets.com
Le cas LesFurets.com
• Test sur la production avec 2 scénarios
• Scénario 1: Capacité du chemin critique
• Scénario 2: Pic télé
• Scénario 3: Assureurs unitairement
• Environnement LT et Production
• LT : Duplication de la prod
• Production : sans appels aux assureurs (mode
« benchmark »)
Le cas LesFurets.com
Travail sur les scripts :
• Fixer l’objectif et les metriques à utiliser
• Variabilisation des caches GWT
• Enregistrer les Selenium IDE, puis Java
• Variabiliser les scripts (pilotage, éviter le cache,
fiabiliser les data) → % de parcours
• Fiabiliser le script (ultimate thread group,
throughputs, scenarii variables, retour MD5)
• Anonymiser toutes les datas de test
• Création d'un « cahier de tests »
Le cas LesFurets.com
Clonage des environnements de PROD :
• Monter des machines semblables à celles de
prod (1/2 prod en capacité)
• Mocker les communications extérieures
• Mode « benchmark » déjà en place
• Besoin d'un script de nettoyage BDD pour la
prod
• Compléter la collection de sondes JMX
« métier »
Le cas LesFurets.com
Monitoring et reporting :
• Mise en place de Graphite / JMXTrans en LT et
en PROD
• Double monitoring Graphite / Zabbix
• Tests des injecteurs avec VisuelVM
• Stockage des données de monitoring pour
lecture ultérieure, sous référence du tir
• Reporting tir par tir, sur CONFLUENCE
Automatisation du procédé
• Automatisation du tir et collecte de résultats
• Construction de scripts shell
• Intégration jenkins des scripts
• Externalisation injection sur EC2
• AMI pour les injecteurs
• Plugin Jenkins EC2 et build flow
• Reporting
• Edition d'un rapport regroupant graphite,
Jmeter, lofs et JTL …
• Historisation et classement sur CONFLUENCE
Conséquences
• Mise en place CDN
• Travail sur la bande passante entre serveurs
• Fix de certains algorithmes synchrones
• Nouveaux réglages de JVM
• Suppression de verrous « système » (connec
TCP, I/O wait liées aux batches)
• Pistes non exploitées :
• Logs sur application consacrée
• Création de Sprites
• Optimisation GWT
• Utilisation du procédé à chaque recette
Des conseils supplémentaires
Attention aux pièges
A mesurer
• Les informations indispensables
• Requetes : Temps de réponse / Code de retour
• Mémoire : Max / Free : serveurs ET injecteurs
• CPU : serveurs ET injecteurs
• Réseau : I/O Disque, bande passante, ...
• SQL : Nb requetes, rq lentes SQL, ...
• Valeurs métier injectées ET cibles
• Utilisateurs / pages vues
• La capacité que vous cherchez
• Activité Garbage Collector
Enregistrement des tests
•Enregistrez la réalité
•Un script HUMAIN et MANUEL
•Puis anonymisation / suppression du superflu
•Puis variabilisation
•Puis paramétrage / installer le pilote
•A refaire à chaque version !
•Idée : Selenium puis JMeter
•Garantir que le test est réaliste + stabilité pour
chaque ré-enregristrement
Configuration Java
• Activez les traces log
• Activez le DumpOnOOME
• Versions de java et memoire attribué JVM a
calquer sur PROD si on utilise un clone
• Intégrez des mesures JMX
• Configuration de l’accès via VisualVM
• Produisez des Logs utiles !
• N’oubliez pas de les regarder
Menagez votre banc de test !
• S'assurer de la scalabilité de l'infra : pouvoir
tirer à dimension réduite !
• Scalabilité par serveur et par machine
• Monter en puissance doit être progressive
Attention aux fuites !
• Vérifiez
• Envois de Mails
• Anonymisation des données
• Connexion à des systèmes tiers
• Logs et accès aux bases de données
• Toujours prévenir l'équipe qu'une campagne de
tests est menée : les activités du groupe
peuvent influer sur l'environnement du test !
Ne laissez aucune trace !
• Vérifiez
• Données de test supprimées de la PROD
• Logs de test ôtés de la PROD
• Les métriques (trafic réseau, activité CPU, load
average, …) sont revenues à la normale

Mais conteúdo relacionado

Mais procurados

Guss webcasts Tempdb Internals - june 2013
Guss webcasts   Tempdb Internals - june 2013Guss webcasts   Tempdb Internals - june 2013
Guss webcasts Tempdb Internals - june 2013David BAFFALEUF
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsAgile Tour 2009 Québec
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseAntonio Gomes Rodrigues
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?codedarmor
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 

Mais procurados (8)

Power Shell V2 Full
Power Shell V2 FullPower Shell V2 Full
Power Shell V2 Full
 
Spring Batch Avance
Spring Batch AvanceSpring Batch Avance
Spring Batch Avance
 
Guss webcasts Tempdb Internals - june 2013
Guss webcasts   Tempdb Internals - june 2013Guss webcasts   Tempdb Internals - june 2013
Guss webcasts Tempdb Internals - june 2013
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesse
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 

Destaque

Goldfische, Bitterlinge Und Teichmuscheln
Goldfische, Bitterlinge Und TeichmuschelnGoldfische, Bitterlinge Und Teichmuscheln
Goldfische, Bitterlinge Und TeichmuschelnAndy Cyberwuppi
 
L’Anglais et le Français, une liaison dangereuse?
L’Anglais et le Français, une liaison dangereuse?L’Anglais et le Français, une liaison dangereuse?
L’Anglais et le Français, une liaison dangereuse?Fernando Castro
 
How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...Jos Boumans
 
Apprendre anglais facilement
Apprendre anglais facilementApprendre anglais facilement
Apprendre anglais facilementdanysg
 
12 outils de vidéo + quiz
12 outils de vidéo + quiz12 outils de vidéo + quiz
12 outils de vidéo + quizRedaction SKODEN
 
Commissions bfem 2015
Commissions bfem 2015Commissions bfem 2015
Commissions bfem 2015MOUHAMAD SOW
 
Conception d'une chaine logistique
Conception d'une chaine logistiqueConception d'une chaine logistique
Conception d'une chaine logistiquelolihinda
 
Vocabulaire anglais : les prepositions
Vocabulaire anglais : les prepositionsVocabulaire anglais : les prepositions
Vocabulaire anglais : les prepositionsMonique SEGOL
 
Ppt ines f
Ppt ines fPpt ines f
Ppt ines fInès IG
 
Affiches tableau synoptique - juin 2015
Affiches tableau synoptique - juin 2015Affiches tableau synoptique - juin 2015
Affiches tableau synoptique - juin 2015CTB Burundi
 
Conócenos - Deusto Formación
Conócenos - Deusto Formación Conócenos - Deusto Formación
Conócenos - Deusto Formación Deusto Formación
 
Après l’armée devenir salarié
Après l’armée   devenir salariéAprès l’armée   devenir salarié
Après l’armée devenir salariéApres-armee.fr
 
Presentation Adinlive Cantine Numérique
Presentation Adinlive Cantine NumériquePresentation Adinlive Cantine Numérique
Presentation Adinlive Cantine Numériquesnarf22
 
DDchange: Fehlerverursachende Änderungen
DDchange: Fehlerverursachende ÄnderungenDDchange: Fehlerverursachende Änderungen
DDchange: Fehlerverursachende ÄnderungenMartin Burger
 
Gestion information internet_presentation2
Gestion information internet_presentation2Gestion information internet_presentation2
Gestion information internet_presentation2Robin Masur
 

Destaque (20)

Goldfische, Bitterlinge Und Teichmuscheln
Goldfische, Bitterlinge Und TeichmuschelnGoldfische, Bitterlinge Und Teichmuscheln
Goldfische, Bitterlinge Und Teichmuscheln
 
L’Anglais et le Français, une liaison dangereuse?
L’Anglais et le Français, une liaison dangereuse?L’Anglais et le Français, une liaison dangereuse?
L’Anglais et le Français, une liaison dangereuse?
 
How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...
 
Apprendre anglais facilement
Apprendre anglais facilementApprendre anglais facilement
Apprendre anglais facilement
 
12 outils de vidéo + quiz
12 outils de vidéo + quiz12 outils de vidéo + quiz
12 outils de vidéo + quiz
 
Commissions bfem 2015
Commissions bfem 2015Commissions bfem 2015
Commissions bfem 2015
 
WebSocket soutenance de stage
WebSocket   soutenance de stageWebSocket   soutenance de stage
WebSocket soutenance de stage
 
Conception d'une chaine logistique
Conception d'une chaine logistiqueConception d'une chaine logistique
Conception d'une chaine logistique
 
Vocabulaire anglais : les prepositions
Vocabulaire anglais : les prepositionsVocabulaire anglais : les prepositions
Vocabulaire anglais : les prepositions
 
Ppt ines f
Ppt ines fPpt ines f
Ppt ines f
 
Affiches tableau synoptique - juin 2015
Affiches tableau synoptique - juin 2015Affiches tableau synoptique - juin 2015
Affiches tableau synoptique - juin 2015
 
Dys et anglais
Dys et anglaisDys et anglais
Dys et anglais
 
Conócenos - Deusto Formación
Conócenos - Deusto Formación Conócenos - Deusto Formación
Conócenos - Deusto Formación
 
Après l’armée devenir salarié
Après l’armée   devenir salariéAprès l’armée   devenir salarié
Après l’armée devenir salarié
 
Presentation Adinlive Cantine Numérique
Presentation Adinlive Cantine NumériquePresentation Adinlive Cantine Numérique
Presentation Adinlive Cantine Numérique
 
DDchange: Fehlerverursachende Änderungen
DDchange: Fehlerverursachende ÄnderungenDDchange: Fehlerverursachende Änderungen
DDchange: Fehlerverursachende Änderungen
 
Gestion information internet_presentation2
Gestion information internet_presentation2Gestion information internet_presentation2
Gestion information internet_presentation2
 
Courchevel Polo Master 2011
Courchevel Polo Master 2011Courchevel Polo Master 2011
Courchevel Polo Master 2011
 
Dieter Rehwinkel (Centrum für Corporate Citizenship Deutschland)
Dieter Rehwinkel (Centrum für Corporate Citizenship Deutschland)Dieter Rehwinkel (Centrum für Corporate Citizenship Deutschland)
Dieter Rehwinkel (Centrum für Corporate Citizenship Deutschland)
 
Slideshare - 3 files
Slideshare - 3 filesSlideshare - 3 files
Slideshare - 3 files
 

Semelhante a Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans peur ! (Sylvain Courcelle et Dimitri BAELI)

Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EEAntonio Gomes Rodrigues
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
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
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihm
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihmTelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihm
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihmMarc Hage Chahine
 
"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
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développementsLeClubQualiteLogicielle
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 

Semelhante a Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans peur ! (Sylvain Courcelle et Dimitri BAELI) (20)

Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Perf university
Perf universityPerf university
Perf university
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
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
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihm
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihmTelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihm
TelecomValley 2017 05-18-ARMAGNACQ_automatisation+test_ihm
 
my_resume(fre)
my_resume(fre)my_resume(fre)
my_resume(fre)
 
"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
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 
Hello Xcode 4 v2
Hello Xcode 4 v2Hello Xcode 4 v2
Hello Xcode 4 v2
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 

Mais de Normandy JUG

Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Normandy JUG
 
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonCodeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonNormandy JUG
 
What makes groovy groovy codeurs en seine - 2013 - light size
What makes groovy groovy   codeurs en seine - 2013 - light sizeWhat makes groovy groovy   codeurs en seine - 2013 - light size
What makes groovy groovy codeurs en seine - 2013 - light sizeNormandy JUG
 
[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloudNormandy JUG
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
 
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Normandy JUG
 
Soirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudSoirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudNormandy JUG
 
Soirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheSoirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheNormandy JUG
 
Couche Base par Tugdual Grall
Couche Base par Tugdual GrallCouche Base par Tugdual Grall
Couche Base par Tugdual GrallNormandy JUG
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Annotations Java par Olivier Croisier
Annotations Java par Olivier CroisierAnnotations Java par Olivier Croisier
Annotations Java par Olivier CroisierNormandy JUG
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011Normandy JUG
 
ATR2011 - Planning poker
ATR2011 - Planning pokerATR2011 - Planning poker
ATR2011 - Planning pokerNormandy JUG
 
ATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesNormandy JUG
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingNormandy JUG
 
Soirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaSoirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaNormandy JUG
 

Mais de Normandy JUG (20)

Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
 
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonCodeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
 
What makes groovy groovy codeurs en seine - 2013 - light size
What makes groovy groovy   codeurs en seine - 2013 - light sizeWhat makes groovy groovy   codeurs en seine - 2013 - light size
What makes groovy groovy codeurs en seine - 2013 - light size
 
[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
 
Soirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudSoirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane Epardaud
 
Soirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheSoirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry Leriche
 
Couche Base par Tugdual Grall
Couche Base par Tugdual GrallCouche Base par Tugdual Grall
Couche Base par Tugdual Grall
 
Java7 normandyjug
Java7 normandyjugJava7 normandyjug
Java7 normandyjug
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Annotations Java par Olivier Croisier
Annotations Java par Olivier CroisierAnnotations Java par Olivier Croisier
Annotations Java par Olivier Croisier
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011
 
ATR2011 - Planning poker
ATR2011 - Planning pokerATR2011 - Planning poker
ATR2011 - Planning poker
 
ATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées Normandes
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
Git
GitGit
Git
 
Soirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaSoirée BPM - Introduction Logica
Soirée BPM - Introduction Logica
 

Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans peur ! (Sylvain Courcelle et Dimitri BAELI)

  • 1. Capacity Planning Mesurer la capacité de votre système
  • 2. Plan 1/ Une capacité ? 2/ Se préparer 3/ Construire vos tests 4/ Conseils supplémentaires 5/ Notre expérience
  • 3. 1/ Une capacité ? Comprendre et définir le but à atteindre
  • 4. Capacity Planning • Le but : • Mesurer la capacité de votre système • Garantir un “domaine de vol” • Les objectifs : • ANTICIPER : éviter des problèmes évidents • FOCALISER : ne pas travailler sur de faux problèmes • CAPITALISER : pouvoir définir des seuils d’alerte • EXPERTISE : maitrise du système en production • Roder les relations Dev / Ops
  • 5. Domaine de vol • Le domaine de vol d'un avion est l'espace en vitesse et altitude à l'intérieur duquel il peut fonctionner en sécurité (vérifié) • Pour un site : • Altitude = Nombre d’utilisateurs • Vitesse = pages vues/min
  • 6. Traduire la capacité en chiffres • Ce que le système doit fournir • On part d’Indicateurs métier • 2.000 ventes par jour • Pic télé : 2000 visiteurs sur 10min • Objectif annuel : 10 Millions de pages vues • On traduit en indicateurs techniques • 1.000.000 pages vues / j • 10.000 pages vues / min en pic (5 min)
  • 7. 2/ Se préparer La préparation de l’environnement de test
  • 8. Préparer 1/5 : Définir le lieu des tests • Soit en production • Idéal car preuve formelle de la capacité • Attention à la pollution des données • Soit sur un environnement dédié • Duplication de la production (hard / soft) • Mocking sur les interfaces non ciblées • Ne validera pas forcément tout • VRAIMENT dédié !
  • 9. Préparer 2/5 : Définir des scénarios • Il faut des scénarios précis : • Définit un cadre • Valide les objectifs sur le papier (calculs) • Grands impacts lorsqu’on le change • Se concentrer sur le chemin critique (pas exhaustif) • Nécessaires pour : • Planifier les quantités de données à injecter • Définir l’infrastructure de test (partie utile) • Idée Assez similaire aux Tests Unitaires
  • 10. Préparer 3/5 : Avoir du monitoring • Avoir un monitoring de prod • Doubler avec un monitoring plus fin • Graphite (ou autre base RRD) • JMXTrans l’alié de Graphite • Collecte des logs • Syslog, logstash, splunk, ... mais faut le faire • Ces parties peuvent être des bottlenecks de votre production (logs, backups, ...)
  • 11. Préparer 4/5 : Outillage d’injection • Mise en place et vérification de l’infrastructure • Capacité d’injection : • Outillage et Scripts d’injection • Capacité de mesure : vérifier les chiffres mesurés • Double système de mesure ? • Règlages • Ne faire varier qu’un seul paramètre à la fois • Vérifier les hypothèses et expliquer les différences • Jouer et publier les tests • Rejouer 3 fois les tests (surtout en cas de soucis) • Publier pour assurer la tracabilité
  • 12. Préparer 5/5 : Reporting • Etre capable de collecter toutes les données • Archivage systématique pour chaque tir • Consultation / vérifications a posteriori • Espace pour ajouter des notes • Cas idéal : on photographie l’état instantané de l'infra • A complèter au fil des besoins
  • 13. Assurez-vous un minimum ! • Vérifiez la capacité de votre infrastructure de test • Capacité d’injection (injecteurs performants) • Capacité de charge hors applicatif • L’outil magique : basic perf webapp • Une application blanche • Temps de réponse • Taille de la réponse • Valide votre capacité à tester • Ne pas y passer 100h !
  • 14. Démo Basic Web Perf En local
  • 15. 3/ Construire vos tests Choisissez vos outils
  • 16. Outils d’injection • A choisir avec soin ! •JMeter : good old friend •LoadRunner : cher ami •Gatling : La force brute •TheGrinder : python •Japex : micro benchmark •Java : self made injector ! • Capacité de reproduire à grande échelle vos scénarios et mesurer leur succès
  • 17. JMeter • Quelques bonnes recommandations JMeter • Client HttpClient 4 • Stockage response en md5 (mémoire) • JMeter plugins • http://code.google.com/p/jmeter-plugins/ • UltimateThreadGroup • Graphes ResponseCode / ResponseTime • Console Status Logger • Throughput Shaping Timer
  • 18. Outillage d’automatisation • Scripting • Shell : l’éternel • Ant/Maven • Jenkins • Scénarios, plugins • Tracabilité, commentaires • Amazon EC2 • Création de machines • Démarrage/Arrêt
  • 19. Monitoring • Suivre le comportement de votre application • Via JMX • VisualVM, JMXTrans, ... • Via les logs • Outils de lecture des logs • Conserver / Exporter vos mesures • Graphite (base RRD) • Zabbix / Munin • Java Melody
  • 20. 4/ Notre expérience Le cas de LesFurets.com
  • 21. Le cas LesFurets.com • Test sur la production avec 2 scénarios • Scénario 1: Capacité du chemin critique • Scénario 2: Pic télé • Scénario 3: Assureurs unitairement • Environnement LT et Production • LT : Duplication de la prod • Production : sans appels aux assureurs (mode « benchmark »)
  • 22. Le cas LesFurets.com Travail sur les scripts : • Fixer l’objectif et les metriques à utiliser • Variabilisation des caches GWT • Enregistrer les Selenium IDE, puis Java • Variabiliser les scripts (pilotage, éviter le cache, fiabiliser les data) → % de parcours • Fiabiliser le script (ultimate thread group, throughputs, scenarii variables, retour MD5) • Anonymiser toutes les datas de test • Création d'un « cahier de tests »
  • 23. Le cas LesFurets.com Clonage des environnements de PROD : • Monter des machines semblables à celles de prod (1/2 prod en capacité) • Mocker les communications extérieures • Mode « benchmark » déjà en place • Besoin d'un script de nettoyage BDD pour la prod • Compléter la collection de sondes JMX « métier »
  • 24. Le cas LesFurets.com Monitoring et reporting : • Mise en place de Graphite / JMXTrans en LT et en PROD • Double monitoring Graphite / Zabbix • Tests des injecteurs avec VisuelVM • Stockage des données de monitoring pour lecture ultérieure, sous référence du tir • Reporting tir par tir, sur CONFLUENCE
  • 25. Automatisation du procédé • Automatisation du tir et collecte de résultats • Construction de scripts shell • Intégration jenkins des scripts • Externalisation injection sur EC2 • AMI pour les injecteurs • Plugin Jenkins EC2 et build flow • Reporting • Edition d'un rapport regroupant graphite, Jmeter, lofs et JTL … • Historisation et classement sur CONFLUENCE
  • 26. Conséquences • Mise en place CDN • Travail sur la bande passante entre serveurs • Fix de certains algorithmes synchrones • Nouveaux réglages de JVM • Suppression de verrous « système » (connec TCP, I/O wait liées aux batches) • Pistes non exploitées : • Logs sur application consacrée • Création de Sprites • Optimisation GWT • Utilisation du procédé à chaque recette
  • 28. A mesurer • Les informations indispensables • Requetes : Temps de réponse / Code de retour • Mémoire : Max / Free : serveurs ET injecteurs • CPU : serveurs ET injecteurs • Réseau : I/O Disque, bande passante, ... • SQL : Nb requetes, rq lentes SQL, ... • Valeurs métier injectées ET cibles • Utilisateurs / pages vues • La capacité que vous cherchez • Activité Garbage Collector
  • 29. Enregistrement des tests •Enregistrez la réalité •Un script HUMAIN et MANUEL •Puis anonymisation / suppression du superflu •Puis variabilisation •Puis paramétrage / installer le pilote •A refaire à chaque version ! •Idée : Selenium puis JMeter •Garantir que le test est réaliste + stabilité pour chaque ré-enregristrement
  • 30. Configuration Java • Activez les traces log • Activez le DumpOnOOME • Versions de java et memoire attribué JVM a calquer sur PROD si on utilise un clone • Intégrez des mesures JMX • Configuration de l’accès via VisualVM • Produisez des Logs utiles ! • N’oubliez pas de les regarder
  • 31. Menagez votre banc de test ! • S'assurer de la scalabilité de l'infra : pouvoir tirer à dimension réduite ! • Scalabilité par serveur et par machine • Monter en puissance doit être progressive
  • 32. Attention aux fuites ! • Vérifiez • Envois de Mails • Anonymisation des données • Connexion à des systèmes tiers • Logs et accès aux bases de données • Toujours prévenir l'équipe qu'une campagne de tests est menée : les activités du groupe peuvent influer sur l'environnement du test !
  • 33. Ne laissez aucune trace ! • Vérifiez • Données de test supprimées de la PROD • Logs de test ôtés de la PROD • Les métriques (trafic réseau, activité CPU, load average, …) sont revenues à la normale