Mesurer (par)tout, tout le temps

Mesurer (par)tout, tout le temps

5a810a7779b19a5ac9e6cffa8531eee6?s=128

Timothée Peignier

September 16, 2012
Tweet

Transcript

  1. Mesurer (par)tout, tout le temps

  2. Nous écrivons du code.

  3. Notre travail est de générer de la valeur.

  4. Notre code est un sous-produit.

  5. Notre code génère de la valeur quand il est exécuté,

    pas quand nous l’écrivons.
  6. Que fait notre code quand il s’exécute ?

  7. Mesurer.

  8. Notre code ne se comporte pas comme nous le pensons.

  9. None
  10. “Ce code ne peut pas échouer”

  11. (et pourtant il échoue) “Ce code ne peut pas échouer”

  12. “Ce code ne peut pas fonctionner”

  13. (et pourtant il fonctionne) “Ce code ne peut pas fonctionner”

  14. Cela affecte nos décisions.

  15. def sort(obj_list): time.sleep(10) obj_list.sort() def sort(obj_list): obj_list.sort() Lequel est le

    plus rapide ? ❶ ❷
  16. def sleep(): # I’m poison pass

  17. def sort(self): # I’m evil raise RuntimeError

  18. Mesurez-le, vous le saurez.

  19. Moins de confusion, de meilleures décisions.

  20. Mesurer, continuellement, en production.

  21. Et python dans tout ça ?

  22. pip installwhisper carbon graphite-web statsd metrology

  23. librato newrelic ( )

  24. Gauges Counters Meters Histograms Timers

  25. Gauges Il y a n workers actifs

  26. statsd.gauge(“workers”, state.workers_count)

  27. Gauges Counters Meters Histograms Timers

  28. Counters Il y a n jobs en attente

  29. counter = Metrology.counter('pending') counter.increment() counter.decrement()

  30. Gauges Counters Meters Histograms Timers

  31. Meters Il y a n requêtes/s

  32. meter = Metrology.meter('requests') meter.mark()

  33. Gauges Counters Meters Histograms Timers

  34. Histograms La taille de la réponse

  35. histogram = Metrology.histogram('response-sizes') histogram.update(len(response.content))

  36. Gauges Counters Meters Histograms Timers

  37. Timers Temps de réponse

  38. timer = Metrology.timer('responses') with timer: make_response()

  39. Collecter, Agréger, Monitorer.

  40. Données historiques + Déploiements + Pannes + Comportement en charge

  41. None
  42. None
  43. None
  44. None
  45. Votre vision de votre code sera plus proche de la

    réalité.
  46. Merci beaucoup ! @cyberdelia lanyrd.com/sxqqf (ne soyez pas timide, posez

    votre question)