Mesurer (par)tout,tout le temps
View Slide
Nous écrivons du code.
Notre travail est degénérer de la valeur.
Notre code estun sous-produit.
Notre code génère dela valeur quand il estexécuté, pas quandnous l’écrivons.
Que fait notre codequand il s’exécute ?
Mesurer.
Notre code ne secomporte pas commenous le pensons.
“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 nosdé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 poisonpass
def sort(self):# I’m evilraise RuntimeError
Mesurez-le,vous le saurez.
Moins de confusion,de meilleures décisions.
Mesurer,continuellement,en production.
Et python dans tout ça ?
pip installwhispercarbongraphite-webstatsdmetrology
libratonewrelic( )
GaugesCountersMetersHistogramsTimers
GaugesIl y a n workers actifs
statsd.gauge(“workers”, state.workers_count)
CountersIl y a n jobs en attente
counter = Metrology.counter('pending')counter.increment()counter.decrement()
MetersIl y a n requêtes/s
meter = Metrology.meter('requests')meter.mark()
HistogramsLa taille de la réponse
histogram = Metrology.histogram('response-sizes')histogram.update(len(response.content))
TimersTemps de réponse
timer = Metrology.timer('responses')with timer:make_response()
Collecter,Agréger,Monitorer.
Données historiques+ Déploiements+ Pannes+ Comportement en charge
Votre vision devotre code seraplus proche de laréalité.
Merci beaucoup !@cyberdelialanyrd.com/sxqqf(ne soyez pas timide, posez votrequestion)