SlideShare une entreprise Scribd logo
Tests de perf en continu
Guillaume Arnaud
@guillarnaud
William Montaz
@willymontaz
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Plan
2
contexte méthodologie
outils Demo
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Anticiper
3
Multithreading dead lock	

isolation	

Contention
taille de pool	

sollicitation BDD
Système
mémoire	

cpu
DevOps
déploiement continu	

dimensionnement
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Loi de Little
4
L = λ.𝝉
L = nombre de requêtes
λ = fréquence
𝝉 = durée moyen des requêtes
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Loi de Little
5
serveur d’application
1 requête/sec
200 ms
5 requêtes
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Que teste-t-on ?
6
test de perf != test de charge
non exhaustif
temps de référence
reproductabilité
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Ecrire un scénario
7
dialogue simple
un service = un job
débit fixe
contrôle des réponses
données déterministes
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Environnement technique
8
serveur d’intégration continu
serveur de monitoring
serveur d’application
Diamond
graphite
déploie
ordonne
tire
récolte
alimente
alimente
alimente
récolte
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling
9
!
•Domain Specific Language (DSL) intuitive
•s’intègre bien avec Jenkins et Maven
•hype: scala, modèle actor
•peut être étendu
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling: DSL
10
val scn = scenario("My scenario")
.exec(http("My Page")
.get("http://mywebsite.com/page.html")
.param("username", "bill")
.check(status.is(200)))
!
setUp(scn.inject(
constantRate(20 usersPerSec) during (15 seconds)
))
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling
11
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Graphite
12
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Graphite
13
wildcard
target=server*.cpu
timeshift
target=server1.cpu&from=-30min&until=-10min
target=server1.cpu&target=timeShift(server1.cpu, "7d")
operations
target=sumSeries(server*.cpu, "7d")
target=derivative(gatling.hitcount)
format de sortie
target=server1.cpu&format=json
graphique
target=server*.cpu&bgcolor=blue&aeraMode=stacked
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Grafana
14
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
JMXTrans
15
{"servers" : [ {
"port" : "8004", "host" : "mysys.mydomain",
"queries" : [ {
"outputWriters" : [ {
"@class" : "com.g.j.m.output.GraphiteWriter",
"settings" : {"port" : 2003,"host" : "myhost",
"typeNames" : [ "name" ]}
} ],
"obj" : "Catalina:type=…,class=j.s.DataSource,name=*",
"resultAlias": "datasources",
"attr" : [ "numActive", "numIdle" ]
} ],
"numQueryThreads" : 2
} ]
}
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Diamond
16
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Metrics
17
public class QueueManager {
private final Queue queue;
!
public QueueManager(MetricRegistry metrics, String name) {
this.queue = new Queue();
metrics.register(MetricRegistry.name(QueueManager.class, name,
"size"),
new Gauge<Integer>() {
@Override
public Integer getValue() {
return queue.size();
}
});
}
}

Contenu connexe

PPTX
[FR] Présentatation d'Ansible
PDF
Debian usage at BlaBlaCar - Debian Paris meetup
PDF
BlaBlaCar - Going Native !
PDF
Tout sur PHP 7.3 et ses RFC
PPTX
PowerShell mtl-dev 2015
PDF
Modern DevOps - kill the bottleneck (part 1/2)
PDF
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
PDF
Php 7.3 et ses RFC (AFUP Toulouse)
[FR] Présentatation d'Ansible
Debian usage at BlaBlaCar - Debian Paris meetup
BlaBlaCar - Going Native !
Tout sur PHP 7.3 et ses RFC
PowerShell mtl-dev 2015
Modern DevOps - kill the bottleneck (part 1/2)
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
Php 7.3 et ses RFC (AFUP Toulouse)

Tendances (19)

PDF
La montée en charge
PDF
Modern DevOps - kill the bottleneck (part 2/2)
PPTX
Elasticsearch 5.0 les nouveautés
PDF
Hyper LogLog
PDF
PPTX
Le spaceship operator
PDF
Tout comprendre de Nuxeo Drive - Nuxeo Tour 2014 - workshop
PDF
201505 monitoring
PDF
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
DOCX
PDF
Zero Downtime Deploys avec ActiveRecord - Klaxit
PPTX
Implementing a key/value store
PDF
Meetup du 21 septembre 2017
PDF
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
PDF
nodejs vs vertx
PDF
20170706 Terraform, Rancher et AWS EFS
PPTX
Réduire la taille de son apk
PDF
Consul @Criteo - usages et patches
PDF
Cozy, a Personal PaaS
La montée en charge
Modern DevOps - kill the bottleneck (part 2/2)
Elasticsearch 5.0 les nouveautés
Hyper LogLog
Le spaceship operator
Tout comprendre de Nuxeo Drive - Nuxeo Tour 2014 - workshop
201505 monitoring
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Zero Downtime Deploys avec ActiveRecord - Klaxit
Implementing a key/value store
Meetup du 21 septembre 2017
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
nodejs vs vertx
20170706 Terraform, Rancher et AWS EFS
Réduire la taille de son apk
Consul @Criteo - usages et patches
Cozy, a Personal PaaS
Publicité

Similaire à Journée DevOps : Tests de performance en continu (20)

PDF
Perfug Guide de survie du développeur dans une application Java qui rame
PDF
BackDay Xebia : Microservices en démo
PDF
ReactiveX
PDF
DevoxxFR 2019: Consul @Criteo
KEY
Paris RailsCamp 2009
PPTX
PPTX
Monitoring applicatif : Pourquoi et comment ?
PDF
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
PDF
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
PDF
BBL - Monitoring - kyriba
PPTX
Meetup Google Cloud
PDF
Symfony à la télé
PPTX
Retour AFUP du forumphp 2017
PDF
Importer 500 millions de données de MySQL vers Neo4j
PDF
Récupération d’un Active Directory: comment repartir en confiance après une c...
PDF
SSL 2011 : Présentation de 2 bases noSQL
PDF
I don't always write reactive application but when I do, it run on raspberry pi
PPTX
Vincent biret azure functions et flow #AosCanadianTour (quebec)
KEY
La mobilité dans Drupal
PDF
Hacking your Home @bdx.io
Perfug Guide de survie du développeur dans une application Java qui rame
BackDay Xebia : Microservices en démo
ReactiveX
DevoxxFR 2019: Consul @Criteo
Paris RailsCamp 2009
Monitoring applicatif : Pourquoi et comment ?
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
BBL - Monitoring - kyriba
Meetup Google Cloud
Symfony à la télé
Retour AFUP du forumphp 2017
Importer 500 millions de données de MySQL vers Neo4j
Récupération d’un Active Directory: comment repartir en confiance après une c...
SSL 2011 : Présentation de 2 bases noSQL
I don't always write reactive application but when I do, it run on raspberry pi
Vincent biret azure functions et flow #AosCanadianTour (quebec)
La mobilité dans Drupal
Hacking your Home @bdx.io
Publicité

Plus de Publicis Sapient Engineering (20)

PDF
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
PDF
Xebicon'18 - IoT: From Edge to Cloud
PDF
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
PDF
XebiCon'18 - Modern Infrastructure
PDF
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
PDF
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
PDF
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
PDF
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
PDF
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
PDF
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
PDF
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
PDF
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
PDF
XebiCon'18 - Le développeur dans la Pop Culture
PDF
XebiCon'18 - Architecturer son application mobile pour la durabilité
PDF
XebiCon'18 - Sécuriser son API avec OpenID Connect
PDF
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
PDF
XebiCon'18 - Spark NLP, un an après
PDF
XebiCon'18 - La sécurité, douce illusion même en 2018
PDF
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
PDF
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
XebiCon'18 - Modern Infrastructure
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...

Journée DevOps : Tests de performance en continu

  • 1. Tests de perf en continu Guillaume Arnaud @guillarnaud William Montaz @willymontaz
  • 2. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Plan 2 contexte méthodologie outils Demo
  • 3. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Anticiper 3 Multithreading dead lock isolation Contention taille de pool sollicitation BDD Système mémoire cpu DevOps déploiement continu dimensionnement
  • 4. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Loi de Little 4 L = λ.𝝉 L = nombre de requêtes λ = fréquence 𝝉 = durée moyen des requêtes
  • 5. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Loi de Little 5 serveur d’application 1 requête/sec 200 ms 5 requêtes
  • 6. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Que teste-t-on ? 6 test de perf != test de charge non exhaustif temps de référence reproductabilité
  • 7. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Ecrire un scénario 7 dialogue simple un service = un job débit fixe contrôle des réponses données déterministes
  • 8. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Environnement technique 8 serveur d’intégration continu serveur de monitoring serveur d’application Diamond graphite déploie ordonne tire récolte alimente alimente alimente récolte
  • 9. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling 9 ! •Domain Specific Language (DSL) intuitive •s’intègre bien avec Jenkins et Maven •hype: scala, modèle actor •peut être étendu
  • 10. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling: DSL 10 val scn = scenario("My scenario") .exec(http("My Page") .get("http://mywebsite.com/page.html") .param("username", "bill") .check(status.is(200))) ! setUp(scn.inject( constantRate(20 usersPerSec) during (15 seconds) ))
  • 11. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling 11
  • 12. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Graphite 12
  • 13. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Graphite 13 wildcard target=server*.cpu timeshift target=server1.cpu&from=-30min&until=-10min target=server1.cpu&target=timeShift(server1.cpu, "7d") operations target=sumSeries(server*.cpu, "7d") target=derivative(gatling.hitcount) format de sortie target=server1.cpu&format=json graphique target=server*.cpu&bgcolor=blue&aeraMode=stacked
  • 14. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Grafana 14
  • 15. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC JMXTrans 15 {"servers" : [ { "port" : "8004", "host" : "mysys.mydomain", "queries" : [ { "outputWriters" : [ { "@class" : "com.g.j.m.output.GraphiteWriter", "settings" : {"port" : 2003,"host" : "myhost", "typeNames" : [ "name" ]} } ], "obj" : "Catalina:type=…,class=j.s.DataSource,name=*", "resultAlias": "datasources", "attr" : [ "numActive", "numIdle" ] } ], "numQueryThreads" : 2 } ] }
  • 16. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Diamond 16
  • 17. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Metrics 17 public class QueueManager { private final Queue queue; ! public QueueManager(MetricRegistry metrics, String name) { this.queue = new Queue(); metrics.register(MetricRegistry.name(QueueManager.class, name, "size"), new Gauge<Integer>() { @Override public Integer getValue() { return queue.size(); } }); } }