CR Comptoir: La performance, enjeu de tous

le 18/10/2021 par Baptiste CHEZAUBERNARD
Tags: Évènements

Le premier juillet s’est tenu un nouvel épisode des comptoirs OCTO. Le replay est disponible ici.

Dans le talk, deux retours d’expérience ont été présentés : un sur une mission OCTO de mise en place d’une plateforme métier, et un second de Cdiscount au sujet de leur site de e-commerce.

Ces deux projets ont des enjeux métier, des envergures et des maturités différentes et donc des objectifs de performance différents. Cependant, ils partagent une conviction : une culture orientée performance et une certaine organisation permettent le succès sur le long terme.

Comment définir les objectifs de performance ?

La performance peut prendre plusieurs visages en fonction du contexte métier.  On peut utiliser l’analogie de l’utilisation d’un Rafale ou d’une Renault ZOE pour se déplacer :

D’un côté, le Rafale va vite, loin et est super puissant, mais le déplacement coûte cher !  C’est le cas de Cdiscount, qui bataille pour gagner des millisecondes, afin de garantir le meilleur service à tous les utilisateurs et ainsi de rester concurrentiel.

De l’autre, la ZOE va moins vite, mais est tout le temps disponible et ne consomme pas trop. C’est le cas du client OCTO, qui est parti de zéro et a pour objectif de tenir la charge en vue d’une augmentation du nombre d’utilisateurs. Son principal enjeu est d’éviter une interruption de service et de garantir une expérience utilisateur convenable.

La définition des objectifs de performance doit être faite en pensant aux utilisateurs avant tout pour leur garantir une bonne expérience en fonction du contexte métier.

Comment impulser le changement pour une prise en compte des enjeux de performance ?

Une fois les objectifs définis, l’amélioration des performances nécessite souvent un changement de mentalité de toutes les parties prenantes du produit.

Une prise de conscience subie

Sur les deux projets, les performances ont longtemps été dépriorisées, voire ignorées au profit de nouvelles features. Il aura fallu un élément déclencheur extérieur pour prendre conscience de la valeur des performances.

Dans le cas d’OCTO, cet élément a été plusieurs interruptions de services liées à de mauvaises performances, alors que le produit était toujours en phase d’expérimentation : 300 utilisateurs simultanés dégradaient fortement le service, alors que la cible à terme était de 30 000. Ces interruptions régulières ont poussé de nombreux chantiers pour améliorer les performances.

Pour Cdiscount, le déclencheur a été l’annonce de la prise en compte par Google de la rapidité des sites internet dans le référencement. Le site de e-commerce se pensait alors rapide, mais est apparu lent selon la classification Google. Cette catégorisation a provoqué une grande remise en question sur l’expérience utilisateur proposée aux clients.

Un besoin de mesurer les performances

Des deux côtés,  le besoin de mesurer les performances est très vite apparu, avec des métriques compréhensibles et accessibles par toutes les parties prenantes (techniques ou non).

Chez Cdiscount, les métriques étaient toutes trouvées : les Core Web Vitals, dont les règles de calculs accessibles publiquement étaient tout à fait appropriées. Ces métriques permettent de mesurer l’impact des performances sur l’expérience utilisateur d’un site. On y trouve par exemple le LCP  (Largest Contentful Paint) qui mesure le temps de chargement de la plus grosse image.

Côté OCTO, pour mesurer l’avancement par rapport à une cible : une estimation du nombre maximum d’utilisateurs simultanés. Cet indicateur permet en pratique de mesurer la distance restant à parcourir.

Une incertitude acceptée progressivement

Une fois les problèmes identifiés à l’aide de métriques, vient une phase de correction pour laquelle la complexité est difficilement anticipable. Les travaux correctifs suivent une approche expérimentale constante.

Il est tout à fait envisageable qu’une expérience améliore significativement les performances comme il est possible qu’elle les dégrade. Ou qu’en parallèle, une amélioration soit contrebalancée par l’ajout d’une nouvelle feature dégradant les performances.

Les deux retours d’expérience nous rassurent à propos de cette incertitude et nous donnent certains conseils pour l’accepter :

  • Donner les moyens aux équipes pour améliorer les performances. Les équipes de développement veulent bien faire, mais sont parfois pressées par des contraintes de temps et/ou de budget

  • Plus de souplesse: ne pas imposer les mêmes contraintes de planification / estimation pour les tickets contribuant à l’amélioration de la performance assure une plus grande souplesse

  • Déprioriser des features si besoin: se permettre de ne pas en livrer de nouvelles si elles dégradent la performance et donc le produit dans son intégralité.

Dans tous les cas, l’amélioration des performances est un compromis entre la valeur apportée et l’effort requis.

La performance : ownership d’une équipe ou de tous ?

Il existe deux stratégies pour améliorer en continue la performance : donner l’ownership et la responsabilité des performances, soit à une task force dédiée, soit à chaque équipe produit. Quel pattern organisationnel choisir ?

Une task force dédiée : une solution court-termiste

Cette équipe, constituée d’experts, est autonome et isolée des équipes produits.

Elle intervient en mode pompier pour améliorer les performances.

  • Comme les équipes produits délèguent la responsabilité des performances à la task force, on observe un manque d’autonomie et d’implication sur le sujet des performances.
  • La task force ne pilote pas les évolutions du produit, elle est spectatrice des changements et doit rattraper les pots cassés (elle intervient souvent pour la résolution d’urgences)
  • C’est donc comme remplir un seau percé : d’un côté, la task force œuvre à l’amélioration des performances, de l'autre les équipes métiers dégradent parfois malgré elles les performances lorsqu’elles ajoutent de nouvelles fonctionnalités.
  • Aussi, comme la task force est séparée des équipes produits, il est difficile de prioriser leurs travaux et de les introduire dans les roadmap. Le désaccord est fréquent entre la priorisation d’ajout de nouvelles fonctionnalités ou celle de travaux liés aux performances.

Bien que cela permette une réduction de la dette liée aux performances (dette technique, écart avec l’objectif de performance à atteindre), ce n’est pas une solution viable à long terme.

La performance fait partie du produit et doit être confiée aux équipes

Un autre pattern organisationnel consiste à donner l’ownership et la responsabilité des performances à chaque équipe produit. Comment y parvenir ?

Moyens techniques

La mise en place d'une plateforme dédiée aux performance permet de fournir l’infrastructure, l’outillage, ainsi que d’industrialiser et d’automatiser l'exécution des tirs de performance.

Expertise

Un accompagnement par des experts a permis d’infuser les connaissances et bonnes pratiques dans chaque équipe produit (notamment via des formations et du pair programming). Aussi, la montée en compétence s’est faite via de la R&D et de la veille.

Une évolution culturelle au cœur des objectifs de performance

Une sensibilisation et une acculturation de tous ont permis d’atteindre un état d’esprit où la performance est prise en compte par plus d’acteurs (business et tech) et plus tôt, via notamment :

  • La création de dashboards accessibles à tous pour suivre les indicateurs
  • L’anticipation et la priorisation des travaux liés aux performances
  • La création d’un rôle de “Performance Champion” par équipe, qui, à l’instar d’un “Security Champion” sera responsable de la prise en compte des sujets de performances.

Il est nécessaire de donner le temps et les moyens aux équipes, afin qu’elles puissent à la fois corriger des problèmes sur leur périmètre et prendre en compte les performances dès la conception.

Take away

Nos recommandations en synthèse :

  • Définir ses objectifs est une première étape essentielle
  • Le changement d'état d'esprit nécessaire pour améliorer les performances est long.
  • La mise en place de métriques claires et partagées par tous permet l’implication de chacun.
  • Donner les moyens et garantir plus de souplesse aux équipes favorise la prise en compte des sujets..
  • La taskforce extérieure permet de combler un manque mais n’est pas une solution pérenne.
  • Sur une longue période, privilégier la prise en charge des performances au sein des équipes
  • La création du rôle de “Performance Champion” permet de s’assurer que les performances sont prises en compte

Pour aller plus loin, nous vous recommandons :

  • de consulter la vidéo ainsi que les slides présentés lors du comptoir
  • d’assister aux Meetups PerfUG