Download - La métrique, ce n'est pas que pour le devops
“
Personne, jamais.
Tout a fonctionnédu premier coup
Personne, jamais.
Tout a fonctionnédu premier coup
“
”
La métrique, ce n’est pas que pour le devops
Forum PHP Paris 2014Olivier Garcia, Patrick Allaert
● CEO de catchy.io● Co-créateur de www.psychologue.pro● Co-organisateur de l’Agile Tour à Lille (Le 18/11, venez nombreux !)
● @0livier● [email protected]● [email protected]
Olivier Garcia
Patrick Allaert● CTO de catchy.io● Travaille avec PHP/Linux depuis '98● Auteur de l'extension PHP APM
● @patrick_allaert● [email protected]● [email protected]
Geek + Garage + ? = Profit
Quit $EDITOR : Get out of the building
J’ai formalisé le Lean Startup
Hi, I’m Eric Ries.
● Production par étape “Just In Time”
● Offre adaptée à la demande
● Focalisé sur la production de valeur
● Amélioration continue
Lean Startup, basée sur le Lean/Toyotisme
Vous le faites déjà (en partie)
● Itérations sur un projet
● Interactions client pour mieux cerner le besoin
● Scoring des stories pour prioritiser
● Rétrospective
while(1) {Build(); Measure(); Learn();}
Mesurer ce qui importe
● Métriques AAA
● Métriques AAA
○ Actionable
○ Auditable
○ Accessible
Mesurer ce qui importe
● Métriques AAA
● Métriques de vanité
Mesurer ce qui importe
Vanité AAA
Vanité
● Nombre de lignes de code
AAA
● Ratio code mort
Vanité
● Nombre de lignes de code
● Followers sur Twitter
AAA
● Ratio code mort
● Interactions avec followers
Vanité
● Nombre de lignes de code
● Followers sur Twitter
● Nombre de visiteurs
AAA
● Ratio code mort
● Interactions avec followers
● Visiteurs qui s’inscrivent
Vanité
● Nombre de lignes de code
● Followers sur Twitter
● Nombre de visiteurs
● Utilisateurs
AAA
● Ratio code mort
● Interactions avec followers
● Visiteurs qui s’inscrivent
● Utilisateurs actifs / 6 mois
Bonnes pratiques
● Mesurez (absolument?) tout !
● Focalisez-vous sur des métriques en fonction
de l’avancement du projet / sa réussite
AARRR
AARRR
AARRR
A.cquisition Comment les utilisateurs viennent?
AARRR
A.cquisition Comment les utilisateurs viennent?
Exemple “site de recrutement des Chemins de Fer Belges”:Une personne visite le site pendant plus de 2 minutes
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?
Site de recrutement:
L’internaute complète son profil et postule pour un job.
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?
Site de recrutement:
Les chercheurs d’emploi reviennent pour consulter de
nouveaux jobs.
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?R.eferral Font-ils venir d’autres utilisateurs?
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?R.eferral Font-ils venir d’autres utilisateurs?
Site de recrutement:1. Combien de personnes partagent-elles un job?2. Combien de ces partages mènent-ils à une candidature?
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?R.eferral Font-ils venir d’autres utilisateurs?R.evenu Quels impacts sur le €€€ ?
AARRR
A.cquisition Comment les utilisateurs viennent?A.ctivation Est-ce qu’ils s’enregistrent ?R.etention Est-ce qu’ils reviennent/sont actifs?R.eferral Font-ils venir d’autres utilisateurs?R.evenu Quels impacts sur le €€€ ?
Site de recrutement:Combien de personnes ont-elles été engagées? … et ce pour plus de 6 mois?
Outils de récolte de métriques
Le plus connu?
Google Analytics
Google Analytics - Mise en place<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject' ]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName (o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js' ,'ga');
ga('create', 'UA-XXXX-Y', 'auto'); // Creates a tracker. ga('send', 'pageview'); // Sends a pageview.
</script>
Google Analytics - Dashboards standards
Google Analytics - Surveiller des évènements
Google Analytics - Surveiller des évènements
ga('send', 'event', 'category', 'action');
ga('send', 'event', 'category', 'action', 'label');
ga('send', 'event', 'category', 'action', 'label', value); // value is a number.
Google Analytics - Surveiller des évènements
ga('send', 'event', 'user', 'register');
ga('send', 'event', 'category', 'action', 'label');
ga('send', 'event', 'category', 'action', 'label', value); // value is a number.
Google Analytics - Surveiller des évènements
ga('send', 'event', 'user', 'register');
ga('send', 'event', 'user', 'apply_job', 'job_123');
ga('send', 'event', 'category', 'action', 'label', value); // value is a number.
Google Analytics - Surveiller des évènements
ga('send', 'event', 'user', 'register');
ga('send', 'event', 'user', 'apply_job', 'job_123');
ga('send', 'event', 'user', 'share_job', 'job_123', 3); // value is a number.
Google AnalyticsCréer des dashboards personnalisés: Embed API
Démo en ligne:http://ga-dev-tools.appspot.com/demos/https://github.com/googleanalytics/embed-api-demos
Google Analytics Query Explorer
http://ga-dev-tools.appspot.com/explorer/
Google Analytics Query Explorer
Google Analytics Query Explorer
Google Analytics Query Explorer
Google Analytics Query Explorer
Google Analytics Query Explorer
Google AnalyticsCréer des dashboards personnalisés: Embed API
{ ids: "ga:6172121", dimensions: "ga:date,ga:eventCategory", metrics: "ga:totalEvents", filters: "ga:eventCategory==Account creation", start-date: "2014-09-01", end-date: "2014-10-01"}
Le plus en vogue?
StatsD + Graphite
StatsD + Graphite
Application
StatsD + Graphite
Application StatsD
UDP
StatsD + Graphite
Application StatsD
UDP
StatsD + Graphite
Application StatsD
UDP
inc(login)
StatsD + Graphite
Application StatsD
UDP
inc(login) echo "login:1|c" |nc -w 1 -u graphite.example.com 8125
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
inc(login)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
inc(login)
duration(search, 300ms)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
inc(login)
duration(search, 300ms)
duration(search, 100ms)
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
inc(login)
duration(search, 300ms)
duration(search, 100ms)
10 secondes:
inc(login, 3);inc(register, 1);duration( search, 3, { min: 100, max: 300, avg: 200, mean: 200});
StatsD + Graphite
Application StatsD
UDP
inc(login)
inc(login)
inc(register)
duration(search, 200ms)
inc(login)
duration(search, 300ms)
duration(search, 100ms)
Graphite
TCP
10 secondes:
inc(login, 3);inc(register, 1);duration( search, 3, { min: 100, max: 300, avg: 200, mean: 200});
StatsD + Graphite
Graphite
StatsD + Graphite
Graphite
24h:/10 secondes
StatsD + Graphite
Graphite
24h:/10 secondes
2 semaines:/1 minute
StatsD + Graphite
Graphite
24h:/10 secondes
2 semaines:/1 minute
6 mois:/10 minutes
StatsD + Graphite
Graphite
24h:/10 secondes
2 semaines:/1 minute
6 mois:/10 minutes
5 ans:/1 heure
StatsD + Graphite
Graphite
24h:/10 secondes
2 semaines:/1 minute
6 mois:/10 minutes
5 ans:/1 heure
Outils de visualisation Graphite
● Grafana● Tessera● Graphiti● Giraffe● Graphene● … plus sur: http://graphite.readthedocs.
org/en/latest/tools.html#visualization
Grafana
Tessera
Et les autres…
Et les autres…
● Mixpanel● Pirate Metrics● KISSmetrics
En résuméLe succès dépend d’un feedback mesurable.
En résuméLe succès dépend d’un feedback mesurable.
LeanStartup et AARRR donnent des pistes pour s’appuyer sur des métriques fiables.
En résuméLe succès dépend d’un feedback mesurable.
LeanStartup et AARRR donnent des pistes pour s’appuyer sur des métriques fiables.
Il existe des outils facilement intégrables en PHP pour créer ces indicateurs.
Mercihttps://joind.in/11937 http://lanyrd.com/sddybk
Creditswww.flickr.com/photos/kk (Lil’ pirates)
www.flickr.com/photos/betsyweber (Eric Ries)
www.flickr.com/photos/highersights (Listen...)
www.flickr.com/photos/75001512@N00/4228976596 (Geek)
www.flickr.com/photos/phobia (Fail Stamp)