Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mesurer (par)tout, tout le temps
Search
Timothée Peignier
September 16, 2012
Programming
2
550
Mesurer (par)tout, tout le temps
Timothée Peignier
September 16, 2012
Tweet
Share
More Decks by Timothée Peignier
See All by Timothée Peignier
Dr. Rubocop
tim
0
140
Et votre backoffice ?
tim
0
250
Mobile Web Performance
tim
1
300
Un site web mobile en Django
tim
1
410
Other Decks in Programming
See All in Programming
Ruby Pattern Matching
bkuhlmann
0
920
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
180
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
360
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
220
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
370
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.2k
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
130
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
422
63k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
Being A Developer After 40
akosma
57
580k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Happy Clients
brianwarren
92
6.4k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
We Have a Design System, Now What?
morganepeng
43
6.7k
Visualization
eitanlees
136
14k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Transcript
Mesurer (par)tout, tout le temps
Nous écrivons du code.
Notre travail est de générer de la valeur.
Notre code est un sous-produit.
Notre code génère de la valeur quand il est exécuté,
pas quand nous l’écrivons.
Que fait notre code quand il s’exécute ?
Mesurer.
Notre code ne se comporte pas comme nous le pensons.
None
“Ce code ne peut pas échouer”
(et pourtant il échoue) “Ce code ne peut pas échouer”
“Ce code ne peut pas fonctionner”
(et pourtant il fonctionne) “Ce code ne peut pas fonctionner”
Cela affecte nos décisions.
def sort(obj_list): time.sleep(10) obj_list.sort() def sort(obj_list): obj_list.sort() Lequel est le
plus rapide ? ❶ ❷
def sleep(): # I’m poison pass
def sort(self): # I’m evil raise RuntimeError
Mesurez-le, vous le saurez.
Moins de confusion, de meilleures décisions.
Mesurer, continuellement, en production.
Et python dans tout ça ?
pip installwhisper carbon graphite-web statsd metrology
librato newrelic ( )
Gauges Counters Meters Histograms Timers
Gauges Il y a n workers actifs
statsd.gauge(“workers”, state.workers_count)
Gauges Counters Meters Histograms Timers
Counters Il y a n jobs en attente
counter = Metrology.counter('pending') counter.increment() counter.decrement()
Gauges Counters Meters Histograms Timers
Meters Il y a n requêtes/s
meter = Metrology.meter('requests') meter.mark()
Gauges Counters Meters Histograms Timers
Histograms La taille de la réponse
histogram = Metrology.histogram('response-sizes') histogram.update(len(response.content))
Gauges Counters Meters Histograms Timers
Timers Temps de réponse
timer = Metrology.timer('responses') with timer: make_response()
Collecter, Agréger, Monitorer.
Données historiques + Déploiements + Pannes + Comportement en charge
None
None
None
None
Votre vision de votre code sera plus proche de la
réalité.
Merci beaucoup ! @cyberdelia lanyrd.com/sxqqf (ne soyez pas timide, posez
votre question)