La métrique, ce n'est pas que pour le devops

Preview:

DESCRIPTION

De plus en plus de techniciens se lancent dans l'entrepreneuriat, mais leurs projets échouent trop souvent par une identification du besoin erronée, un entêtement irrationnel ou une mauvaise exécution. La méthode Lean Startup donne des pistes pour essayer de réduire ces risques afin que la solution proposée réponde au besoin réel du client. Cette présentation décrit brièvement cette méthode, insiste sur des points négligés par les développeurs et fournit des outils à utiliser tout au long du projet.

Citation preview

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● olivier@catchy.io● olivier@lol.cat

Olivier Garcia

Patrick Allaert● CTO de catchy.io● Travaille avec PHP/Linux depuis '98● Auteur de l'extension PHP APM

● @patrick_allaert● patrick@catchy.io● patrickallaert@php.net

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.

Recommended