La semaine dernière nous avons eut l’occasion de participer à un open-space sur le sujet des métriques. La question posée était : “Quelles sont les métriques à monitorer pour améliorer la collaboration entre les équipes de Développement et les équipes d’Éxploitation ?”.

On as eut pas mal d’idées, divergés sur d’autres sujets mais nous avons notés une liste de métriques intéressantes à mettre en place dans ce but. Sans plus attendre, les voici:

Durée des tests Tout déploiement devrait d’abord être validé par les tests, un build court profite à tout le monde Le plus petit possible Mocker plus de services côté dev ou installer et configurer un serveur de DB en RAM
Durée de déploiement Plus un déploiement est long, plus on attendra pour avoir la dernière feature ou le dernier fix en production. Des déploiements plus courts c’est plus de déploiements possibles. Le plus petit possible Packager le code applicatif en ZIP / DEB / RPM ou installer un mirroir de package système / python / ruby pour accélerer les déploiements
Fréquence de déploiement Des déploiements plus fréquents, c’est des features qui arrivent plus tôt pour les clients et des commerciaux plus content Le plus proche du besoin produit Travailler le workflow, réduire les points de douleur dans le déploiement, côté code applicatif ou côté migration de données
Taux de réussite du déploiement Personne n’aime faire d’erreur mais ça arrive, il faut faire en sorte d’apprendre de ses erreurs 100% Monitorer les déploiements, passer à un outil de gestion de configuration, fixer chaque erreur pour éviter que ça se reproduise
Temps moyen pour déployer une nouvelle feature Souvent les nouvelles features stagnent en attendant une release ou sont reportées parce que les besoins ont étés mal anticipés, nouveau serveur, nouvelle technologie… Le plus petit possible Faire participer les équipes d’exploitation aux réunions d’architecture, travailler le workflow, faire collaborer les équipes sur l’écriture de recettes de déploiement
Pourcentage de serveurs automatisés Les serveurs non automatisés sont souvent ceux qui nous trahissent au plus mauvais moment 100% Écrire des recettes de configuration pour ces anciens serveurs
Pourcentage de tâches manuelles Il reste souvent des tâches manuelles à faire lors du déploiement, à la création d’un nouveau client, etc… Ces tâches sont une source probable d’erreurs, on peut les oublier, la personne qui les fait d’habitude peut-être en maladie, en vacances, etc… 0% Écrire des scripts, intégrer les tâches dans le code applicatif
Pourcentage d’écarts entre les environnments On ne peut pas souvent se permettre d’avoir des environnements parfaitement conforme à la production, souvent pour des question de coût. Ça peut-être une version de la DB différente, des règles réseau différentes. Ces différences sont une source de problèmes potentiels 0% Identifier les différences et les réduire. Donner la responsabilité de l’ensemble des environnements aux deux équipes
Temps de livraison d’une nouvelle machine / d’un nouvel environnement Même si les déploiements sont entièrement automatisés et rapide comme l’éclair, il reste parfois des opérations qu’on fait peut souvent, à la création d’une nouvelle machine ou d’un nouvel environnement, ce qui nous ralentit si elles ne sont pas automatisées Le plus petit possible Identifier ces opérations et qualifier le ration temps à automatiser / (temps à faire à la main) * fréquence
MTTR, mean time to recover Automatiser le déploiement c’est nécessaire, pouvoir fixer la production rapidement, ça l’est tout autant Le plus petit possible Améliorer le monitoring, automatiser la collection d’information, centraliser la collecte des logs, automatiser les actions courantes tel que mettre le site en maintenance, écrire et suivre une doc de réponse aux incidents

Toutes ces métriques sont utiles pour identifier des améliorations réalisable par les efforts combinés des équipes de dévelopements et les équipes d’exploitation. Néanmoins en fin de session, on s’est demandé si il n’y aurait pas des métriques intéressante pour l’ensemble du cycle de développement et celà s’est révélé plus difficile que pour les autres. Nous en avons réussi à en identifier une qui englobe au final plusieurs citées auparavant :

  • Temps moyen entre l’acceptation d’une feature et son déploiement

Cette métrique est intéressante par elle concerne à la fois la collboration entre le product owner et les développeurs et la collaboration entre les développeurs et les administrateurs système. Et vous avez-vous des idées de métriques que vous avez mis en place ou que vous pensez pertinentes ?

EN’oubliez pas que vous pouvez suivre les actualités de parisdevops sur le channel irc #parisdevops de freenode, sur le compte twitter @parisdevops et sur notre site web: parisdevops.fr

Merci à tous!