softshake 2015 - comment tester et optimiser la performance d'un si ?

65
Comment tester et optimiser la performance d'un SI ? 22 octobre 2015

Upload: cyrilpicat

Post on 06-Apr-2017

487 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Commenttesteretoptimiserlaperformanced'unSI?

22octobre2015

Page 2: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

MarcBOJOLY

CyrilPICAT

OCTOTechnologyLausanne,consultant

OCTOTechnologyParis,manageretconsultantCo-fondateurduPerformanceUserGroupParis

Page 3: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Leprojet:migrationd'unebanqueversunenouvelleplateformetitres

Page 4: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Quelqueschiffres

Clients:x10

Portefeuillestitres:x5

Positions:x3

Titres:+50%

OrdresdeBourse:x2

Page 5: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Leprojet:migrationd'unebanqueversunenouvelleplateformetitres

Page 6: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Autantattendrelamiseenproduction...

Page 7: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Méconnaissances

Nierl'existenceduproblème Onabientravaillé,çavapasser

Nierl'existencedesolutions C'estimpossibleàtestersaufenprod

Nierlafiabilitédessolutions Lachargeneserapasreprésentative

Mettreendoutesescapacités

Onn'yarriverajamais

Page 8: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Idéesreçuessurlespré-requis

Unepré-productionidentiqueàlaproductionSimulerl'ensembledesactivitésdelabanque

Page 9: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Idéesreçuessurlestestsdecharge

Testerenautomatique?Impossiblemêmeavec<unnomdeproduitici>

Page 10: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Idéesreçuessurlediagnostic

Lesproblèmessontsurlemainframe

Page 11: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Cesontdesidéesreçues

Notreobjectif,vousmontrer

commentadaptervospré-requisàvosenjeuxcommentaborderlestestsdechargedansunSIcommentnepasêtrepiégéparlesdiagnosticspréconçus

Page 12: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Dansunmondeparfait...

“Faisdetavieunrêve,etd'unrêveuneréalité.”AntoinedeSaint-Exupéry-Cahiers

deSaint-Exupéry(1900-1944)

Page 13: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Rêve:unevueintégréedelaperformance

Dynatrace

Page 14: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Réalité:Quilefaitauniveaud'unSI?

GoogleDapper

Page 15: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Réalité:Commencerpardesoutilssimples

Analysedelogs(python,pandas...)

Collected'outilssystèmes(nmon,vmstat...)

Page 16: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Rêve:Toutcequ'ilfautpourfairelestests

DesdéveloppementsterminésDesdonnéesmigréesDespersonnesdisponibles....etcolocalisées

Page 17: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Réalité:Lesintangibles

UnenvironnementopérationnelUnjeudedonnéesminimalUnezonedemesureisolée

Pourlereste...

Page 18: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Savoirfixersespriorités

Page 19: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Lesproblèmespeuventsembler

vertigineux

Page 20: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Ilfaut"cadrer"lechantier

FactualiserlesvolumesexistantsetciblesListerlesproblèmesexistantsBrainstormersurlesproblèmespotentiels

Page 21: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Lesproblèmes"usuels"

1. Capacitéentermedenombredetransactions/jour

2. Augmentationdevolumétrie(x2)

3. SLAtempsderéponseend-to-end

4. Lenteursactuelles5. Augmentationdu

nombred'utilisateurs6. Impactsurladuréedes

batchs7. Latenceettempsde

réponsepourlesutilisateursdistants

Page 22: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Etensuite?

Lacartevousaideàvisualiseretàprioriser,ellene"résout"paslesproblèmes

ChaqueproblèmerestecomplexeetliéauresteduSI

Page 23: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Diviserpourmieuxrégner

2patterns

Diviser/découpler:passerd'untestdeNsystèmesàuntestdek<Nsystèmes(idéalement1)

Simplifier:réduireladimensionnalité(casdetests,donnéesetc.)

Page 24: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Diviser/découpler:unexemple

Page 25: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Diviser/découpler:unexemple

Page 26: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Etmaintenant?

Neprévoyezpasuntestdechargepourtouslesproblèmes!

Page 27: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Penseràd'autresoutils

Analysedel'existant

Modélisationetextrapolation

Testdechargedel'existant(données,systèmes)

Testdechargedelacible(données,systèmes)

Page 28: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Oùpouvez-vousvous"planter"?

Mauvaiseconnaissancedelaperformanceexistante

Mauvaiseconnaissancedesusagesexistants

Page 29: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Bonnespratiquesdetestsdecharges(applicationparapplication)

Page 30: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Délimiterlepérimètretesté

CaruntestdechargeresteuntestautomatiséCaruntestenerreurnesertàrien

Comment?

ChoisissezsoigneusementvotrejeudedonnéesOudéveloppezdesbouchons

Page 31: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Bouchonner

LescomposantsutiliséssystématiquementLeplussimplementpossible

Page 32: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Modéliserscientifiquement

Modéliserlecomportementdemesutilisateurs?

Combiend'utilisateurssimultanés?Qu'est-cequ'unutilisateursimultané?

Page 33: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Modélisationscientifique

LavéritéestenproductionUnmodèle:moyenneETpercentile99th

ExempledeloisdePoisson

Page 34: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Modélisaton:soyezprédictifs

Sivousn'avezpasdestatistiquesproduction,

proposezunmodèledeprévisiondunombred'utilisateurs

Page 35: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Modélisation:soyezprédictifs

Sivousn'avezpasdestatistiquesproduction,

proposezunmodèledeprévisiondeleurutilisation

Page 36: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Modélisation:commentl'utiliser?

Définissezdansvostestsd'injectionlocauxlenombred'utilisateurs"simultanés"etletempsderéflexion

val clientSearchChain = group("client_search_page") { exec(http("client_search_html") .get("""/ebankingAdmin/xxxxx/root/contract/contractlist/""")}).pause(7,8) //Pause between 7 and 8 seconds

val scn = scenario("AdminSimulation").repeat(1) { exitBlockOnFail { exec(loginChain).exec(clientSearchChain)//No logout, 90% of users don't }}

setUp(scn.inject(rampUsers(120).over(60))).protocols(httpProtocol) //This will go from 0 to 120 users in 60 seconds

Page 37: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Testsdechargeparapplication

UnebriquedebasedelaperformanceduSI

Commentfait-onpourmangerunéléphant?Bouchéeparbouchée.

Page 38: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Maisilfaut(quandmême)testerenend-to-end

Page 39: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

DEMOQuizz:quelestletempsderéponsed'uneapplication?

70ms.detraitement

7appelsenbasededonnées,14ms.chacun

Page 40: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Tempsderéponse~190ms.

$ ./sh/poc1.sh% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 253 100 161 100 92 789 450 --:--:-- --:--:-- --:--:-- 789Call HTTP Ressources : For an HTTP ressources total of 0.0 ms.Call the database 7 times during 14 ms. each for a total of 118 ms.CPU intensive compute 186 ms.

Page 41: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

DEMO&Quizz:quelestletempsderéponsed'unechaîneapplicativedansunSI

?

7applicationsidentiquesàlaprécédente(70ms.detraitement,7x14ms.deBD)

Appelssynchronesséquentiels

Page 42: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Tempsderéponse:1s.

$ ./sh/poc2.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 1417 100 1171 100 246 881 185 0:00:01 0:00:01 --:--:-- 881Call HTTP Ressources : { Call HTTP Ressources : For an HTTP ressources total of 0.0 ms. Call the database 7 times during 14 ms. each for a total of 113 ms. CPU intensive compute 68ms.{,{ Call HTTP Ressources : For an HTTP ressources total of 0.0 ms.

Page 43: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

DEMO&Quizz:quelestletempsderéponsedelamêmechaînedansune

modélisationplusprochedelaréalité?

Page 44: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Tempsderéponse:3s.

$ ./sh/poc2.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1417 100 1171 100 246 328 69 0:00:03 0:00:03 --:--:-- 328 Call HTTP Ressources : { Call HTTP Ressources : For an HTTP ressources total of 0.0 ms. Call the database 7 times during 14 ms. each for a total of 394 ms. CPU intensive compute 69ms. {, { Call HTTP Ressources : For an HTTP ressources total of 0.0 ms. Call the database 7 times during 14 ms. e

Page 45: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

ImplémentationdeceQuizz

Diokles:AnInformationSystemscaleperformancesimulator

https://github.com/mbojoly/diokles

Page 46: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

L'outilutilisé

Page 47: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Desproblèmes"mineurs"peuventdevenircritiquesàl'échelled'unSI

LatenceN+1SQLrequêtesN+1appelsàdesapplicationsexternes

Lestests"end-to-end"sontobligatoirescarcertainsrésultatspeuventdéfierl'intuition

Page 48: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Boîteàoutilspourlestests"end-to-end"

Disclaimer

Lestestsend-to-endsontcomplexes.Cecineseveutpasuneméthodesystémiquemaisuninventaired'outilsàdisposition,ainsiqu'unREXsurleurefficacité

Page 49: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:Analysedelaproductionexistante

Analysedeslatencesentresystèmes

Identificationdugouletd'étranglement

Découvertedesproblèmesdedesign

Évaluationdelacapacitédusystème

Page 50: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:Analysedelaproductionexistante

Exempledel'évaluationdelacapacitédusystème

Page 51: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:Analysedelaproductionexistante

Exempledel'évaluationdelacapacitédusystème

Page 52: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:Analysedelaproductionexistante

Exempledel'évaluationdelacapacitédusystème

Page 53: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:Analysedelaproductionexistante

Exempledel'évaluationdelacapacitédusystème

Page 54: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:attentionauxchiffres!

Volume Tempsderéponsemoyen

1000transactions 15s

2000transactions 40s

Page 55: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#1:attentionauxchiffres!

Page 56: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#2:Benchmarkunitaire

Définition:mesuredelaréponseàunetransactionunitaire

Page 57: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#2:Benchmarkunitaire

Exempled'analyse

Page 58: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#3:lepicdetransactions

Page 59: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#3:lepicdetransactions

Exempled'analyse

Page 60: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#4:"rejeu"d'unejournéedeproduction

simplifiéebiensûr!

Page 61: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Outil#5:mettreenproduction

Toutcequipeutêtremisenproductionparavancedoitl'être

Pensezvotrestratégiedemigrationpourmonterenchargeprogressivement

Inspirez-vousdes"GéantsduWeb"

Page 62: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Take-away

Faitesdestests,mêmeimparfaitsMesurezscientifiquementRevenez-enàdesproblèmessimplesExtrapolez,enayantconsciencedeslimites

Page 63: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

"Touslesmodèlessontfaux,certainssontutiles"

Page 64: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Sicelavousaintéressé

[email protected]

Page 65: Softshake 2015 - Comment tester et optimiser la performance d'un SI ?

Sources

Touslesslides:icônes(c)OCTOTechnology(2015)

:

: et

:

:

:

:

:

:

:

:

:

Autantattendrelamiseenproduction Morguefile

Vivresesrêvess ginacn.blogspot.fr Wikipedia

APM OutilDynatrace

GoogleDapper Dapper,aLarge-ScaleDistributedSystemsTracingInfrastructure

Bonnespratiques GéantsduWeb,l'obsessiondelamesure

Exemplesdeloisdepoisson Wikipedia

Cycledediffusiondel'innovation Wikipedia

TrafficsurInternet Libstat

Testsend-to-end Youtube:SpectacularDominoRallyStuntScreenLink4:51

Touslesmodèlessontfauxcertainssontutiles Morguefile

TheOCTOWay (c)OCTOTechnology2015