A place to cache linked articles (think custom and personal wayback machine)
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.md 23KB

12345
  1. title: Budget de performance : un indispensable à la rapidité des sites web
  2. url: https://medium.com/@DamienJubeau/budget-de-performance-indispensable-rapidite-sites-web-a771922e89e8
  3. hash_url: 6ee1dffe6a2acf9c55a5558550beb9cf
  4. <p name="8d9c" id="8d9c" class="graf--p graf-after--h2">Je vous propose de découvrir une notion essentielle pour adopter une véritable culture de la performance web sur vos projets : <strong class="markup--strong markup--p-strong">les budgets de performance</strong>.<br/>Ces derniers ne vont pas s’exprimer en euros, mais en secondes, en mégaoctects ou encore en nombre de fichiers !</p><p name="7c7a" id="7c7a" class="graf--p graf-after--p">Une notion qui mériterait d’être connue et d’être utilisée par tous les métiers du web, pour accompagner le cycle de vie des sites web et <strong class="markup--strong markup--p-strong">reprendre le contrôle de leur rapidité</strong>.</p><h3 name="9d92" id="9d92" class="graf--h3 graf-after--p">Le constat initial</h3><p name="dc56" id="dc56" class="graf--p graf-after--figure"><strong class="markup--strong markup--p-strong">Le web grossit</strong>. Les pages s’alourdissent, le nombre de ressources (images, scripts, css, etc) nécessaires pour afficher une page web ne cesse de croître.</p><p name="5c4d" id="5c4d" class="graf--p graf-after--p">Pourquoi ? Parce qu’aujourd’hui les sites web sont des applications à part entière, avec des fonctionnalités qui peuvent être très riches, et offrant de nombreux contenus multimédias.</p><p name="08bc" id="08bc" class="graf--p graf-after--p">A l’heure actuelle, si l’on considère les 1000 sites les plus visités au monde, voici le bilan dressé :</p><p name="003c" id="003c" class="graf--p graf-after--figure">Même si vous avez à coeur la performance lors du développement initial de votre site web, ce dernier <strong class="markup--strong markup--p-strong">va inexorablement évoluer </strong>: nouvelles fonctionnalités, nouveaux contenus, refactoring technique, etc.</p><p name="97a7" id="97a7" class="graf--p graf-after--p">Votre site va vivre et s’enrichir : A/B Testing, moteur de recommandations, retargeting, click-to-chat, etc, sont autant de fonctionnalités qui se répandent et sont à même d’intervenir dans le cycle de vie de votre site web.</p><p name="99f3" id="99f3" class="graf--p graf-after--p">Le budget de performance est un framework, un outil qui va vous permettre de <strong class="markup--strong markup--p-strong">placer la performance au coeur de vos préoccupations</strong> et d’<strong class="markup--strong markup--p-strong">éviter toute dérive</strong> qui conduirait à ralentir votre site, car n’oublions pas, <a href="https://www.dareboost.com/fr/webperf-impacts" data-href="https://www.dareboost.com/fr/webperf-impacts" class="markup--anchor markup--p-anchor" rel="nofollow">un site rapide est indispensable au succès de votre business.</a></p><h3 name="293f" id="293f" class="graf--h3 graf-after--p">La vitesse est une fonctionnalité</h3><p name="1732" id="1732" class="graf--p graf-after--h3">En 2010 Urs Hölzle a rapporté ce propos tenu par Larry Page, cofondateur de Google :</p><blockquote name="e842" id="e842" class="graf--blockquote graf--startsWithDoubleQuote graf-after--p">“<em class="markup--em markup--blockquote-em">As a product manager you should know that speed is product feature number one.”</em></blockquote><p name="debd" id="debd" class="graf--p graf-after--blockquote">(traduction : <em class="markup--em markup--p-em">en tant que responsable produit, tu devrais savoir que la vitesse est la fonctionnalité numéro un du produit</em>)</p><p name="b4e1" id="b4e1" class="graf--p graf-after--p">La <strong class="markup--strong markup--p-strong">vitesse</strong> est une philosophie chez Google, puisque considérée depuis les débuts comme une <strong class="markup--strong markup--p-strong">différenciation</strong> majeure.<br/>Je vous propose de découvrir pourquoi ce propos est plein de sens, et en quoi il nous amène à la notion de budget de performance.</p><p name="6b8e" id="6b8e" class="graf--p graf-after--p">Vous connaissez probablement la notion de suivi de disponibilité, qui consiste à s’assurer qu’un serveur web est bien disponible (uptime monitoring), sans quoi le site n’est tout simplement pas accessible. Il ne pourra donc pas produire de chiffre d’affaires dans cette période.<br/>Et cela peut représenter des pertes à long terme, vous risquez de vous priver à tout jamais des visiteurs qui n’auront pas pu accéder à vos pages.</p><p name="acde" id="acde" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">La vitesse de votre site, peut être vue comme un prolongement de sa disponibilité</strong> : à quoi bon avoir un site si ce dernier met 13 minutes à se charger ? Évidemment aucun. Il est très naturel de comprendre qu’un temps d’attente extrême ne produira aucun résultat.</p><p name="75a5" id="75a5" class="graf--p graf-after--p">Et si le temps de chargement de votre page était d’une minute ? Peut-être quelques âmes patientes attendraient jusque là, mais rares seraient-elles !</p><p name="e982" id="e982" class="graf--p graf-after--p">La <strong class="markup--strong markup--p-strong">perception de l’attente</strong> est un sujet complexe, et notre patience est impactée par de nombreux paramètres. Le premier et sans doute le plus fort : la valeur que nous attendons au bout du tunnel.</p><p name="5893" id="5893" class="graf--p graf-after--p">Qui serait prêt à attendre 3h à la caisse d’un supermarché ? Personne.<br/>Qui serait prêt à attendre 3h pour la sortie du dernier smartphone en vogue ? Ils sont nombreux !</p><p name="230f" id="230f" class="graf--p graf-after--p">Mais attention, tout le monde est loin d’être prêt à cela : <strong class="markup--strong markup--p-strong">notre perception de la valeur nous est personnelle</strong>.</p><p name="fcf6" id="fcf6" class="graf--p graf-after--figure">Reprenons les courageux qui patientent dans la file pendant 3h. Seraient-ils prêts à la même chose par une température de 45° ? ou bien sous une tempête de neige ? Sans doute pas : <strong class="markup--strong markup--p-strong">notre capacité à attendre est contextuelle</strong> !</p><p name="7722" id="7722" class="graf--p graf-after--p">La difficulté qui se présente à tout éditeur de site web, c’est de devoir faire abstraction de son propre contexte, pour prendre en compte, non pas sa propre expérience, mais bien la multitude de profils qui figure parmi ses visiteurs.</p><p name="dd1f" id="dd1f" class="graf--p graf-after--p">Alors que l’attente effective d’un internaute sur votre page pourra être impactée par sa localisation (cf <a href="http://blog.dareboost.com/fr/2015/06/la-latence-pourquoi-ralentit-elle-votre-site-web/" data-href="http://blog.dareboost.com/fr/2015/06/la-latence-pourquoi-ralentit-elle-votre-site-web/" class="markup--anchor markup--p-anchor" rel="nofollow">les effets de la latence</a>), son accès Internet, son périphérique ou encore son navigateur web, la perception de cette attente pourra être impactée par ses habitudes de navigation, son expérience récente (le site précédemment visité était-il très lent ? très rapide ?), ses préjugés sur votre marque ou encore tout simplement son humeur !</p><p name="198b" id="198b" class="graf--p graf-after--p">Pour chaque utilisateur, une fonctionnalité X ou Y aura<strong class="markup--strong markup--p-strong"> une valeur perçue différente</strong>.<br/>Toute fonctionnalité aura un impact technique sur votre site, et peut donc jouer sur l’attente à laquelle vous exposez un utilisateur.</p><p name="bbd7" id="bbd7" class="graf--p graf-after--p">Si, comme l’évoque Larry Page, vous pensez à la vitesse comme la fonctionnalité principale de votre produit, vous aurez au coeur de vos préoccupations ces différents éléments.</p><p name="d2ce" id="d2ce" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Une fonctionnalité n’a de sens pour un visiteur que si la valeur ajoutée apportée compense l’attente provoquée.</strong></p><p name="1451" id="1451" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">La notion de budget de performance</strong> va répondre à ce problème : non pas en vous imposant d’avoir un site rapide, mais en vous permettant de <strong class="markup--strong markup--p-strong">considérer chaque fonctionnalité comme devant respecter une contrainte de vitesse</strong>. Vous serez donc amené à faire les arbitrages nécessaires entre la valeur apportée par une fonctionnalité et ses impacts sur la vitesse.</p><h3 name="e6b6" id="e6b6" class="graf--h3 graf-after--p">Quels indicateurs utiliser pour les budgets de performance ?</h3><p name="6f37" id="6f37" class="graf--p graf-after--figure">La notion de budget n’est en soit pas complexe, et vous en comprendrez très simplement ces exemples :</p><ul class="postList"><li name="435c" id="435c" class="graf--li graf--startsWithDoubleQuote graf-after--p">“Notre page d’accueil doit faire moins d’1Mo”</li><li name="854a" id="854a" class="graf--li graf--startsWithDoubleQuote graf-after--li">“Sur mobile, en 3G, toutes nos pages doivent s’afficher en moins de 3 secondes”</li><li name="f84d" id="f84d" class="graf--li graf--startsWithDoubleQuote graf-after--li">“Le serveur web doit répondre en moins de 200ms”</li></ul><p name="7e01" id="7e01" class="graf--p graf-after--li">Comme nous l’évoquions, c’est un cadre que l’on va s’imposer de respecter, d’où la notion de “budget” : vous ne pouvez pas dépenser plus de X secondes, ou plus de Y Mo, etc.</p><p name="ad61" id="ad61" class="graf--p graf-after--p">Ce cadre peut-être plus ou moins précis, et les seuils que l’on va y apporter peuvent être de natures très différentes.</p><p name="9583" id="9583" class="graf--p graf-after--p">Le premier pas est probablement d’<strong class="markup--strong markup--p-strong">intégrer la notions de performance très en amont de vos projets</strong>, dès les premières expressions de besoins. J’apprécie énormément ce propos de <a href="http://bradfrost.com/blog/post/performance-as-design/" data-href="http://bradfrost.com/blog/post/performance-as-design/" class="markup--anchor markup--p-anchor" rel="nofollow">Brad Frost</a> à ce sujet :</p><blockquote name="ffac" id="ffac" class="graf--blockquote graf-after--p"><em class="markup--em markup--blockquote-em">Statements of work, project proposals and design briefs should explicitly and repeatedly call out performance as a primary goal. “The goal of this project is to create a stunning, flexible, lightning-fast experience…”</em></blockquote><p name="1076" id="1076" class="graf--p graf-after--blockquote"><em class="markup--em markup--p-em">(Les cahiers des charges, réponses à appels d’offres, et briefs de conception devraient explicitement et de manière répétée mentionner la performance comme objectif principal. “Le but de ce projet est de créer une expérience à couper le souffle, souple, rapide comme l’éclair …”)</em></p><p name="76f3" id="76f3" class="graf--p graf-after--p">On s’assure ainsi de ne jamais oublier ce critère et d’en faire un point de vigilance majeur. C’est nécessaire à toutes les étapes de votre projet.<br/><strong class="markup--strong markup--p-strong">Plus la prise en compte de la performance sera tardive, plus les efforts à mettre en oeuvre seront importants.</strong></p><p name="3e2d" id="3e2d" class="graf--p graf-after--p">Pour vous permettre d’exprimer vos budgets de performance, <a href="http://timkadlec.com/2014/11/performance-budget-metrics/" data-href="http://timkadlec.com/2014/11/performance-budget-metrics/" class="markup--anchor markup--p-anchor" rel="nofollow">Tim Kaldec</a> a proposé <strong class="markup--strong markup--p-strong">un découpage très intéressant des métriques disponibles</strong>, que je vous propose de découvrir ici :</p><h4 name="c0f5" id="c0f5" class="graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">Milestone timings (jalons temporels)</strong></h4><p name="f6ab" id="f6ab" class="graf--p graf-after--h4"><em class="markup--em markup--p-em">Exemples : Temps de réponse serveur; Temps de chargement total; Temps avant début de l’affichage;</em></p><p name="ca93" id="ca93" class="graf--p graf-after--p">Ces mesures ont l’avantage d’être faciles à suivre dans le temps, l’idéal pour mettre en place un cadre à respecter pour l’équipe technique. Attention cependant : le chargement d’une page ne se résume pas à un instant T, heureusement, le speedindex va venir en renfort.</p><h4 name="d0b2" id="d0b2" class="graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">SpeedIndex (indice de performance)</strong></h4><p name="b434" id="b434" class="graf--p graf-after--h4">Cet indice est largement reconnu par les experts en performance web, car <strong class="markup--strong markup--p-strong">il retranscrit comment la page va se charger avec une seule valeur</strong>, d’un point de vue utilisateur.</p><p name="dfc1" id="dfc1" class="graf--p graf-after--p">Il a donc mérité pour Tim une catégorie dédiée, et ce n’est pas un mal, même si j’aurais tendance à y ajouter le <em class="markup--em markup--p-em">Time To Interact</em> (qui fait partie de la catégorie précédente), car l’affichage de la page doit être complété de son interactivité pour que l’expérience utilisateur soit vraiment au rendez-vous.</p><p name="62ef" id="62ef" class="graf--p graf-after--p">Si vous souhaitez en savoir plus sur le speedindex, vous trouverez dans cet article des <a href="http://blog.dareboost.com/fr/2015/07/start-render-visually-complete-speedindex/" data-href="http://blog.dareboost.com/fr/2015/07/start-render-visually-complete-speedindex/" class="markup--anchor markup--p-anchor" rel="nofollow">explications ainsi que sur 2 autres métriques liées au rendu visuel.</a></p><h4 name="2926" id="2926" class="graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">Quantity based metrics (Mesures basées sur la quantité)</strong></h4><p name="198d" id="198d" class="graf--p graf-after--h4"><em class="markup--em markup--p-em">Exemples : Nombre de requêtes; Poids total de la page; Poids total des images</em></p><p name="04b7" id="04b7" class="graf--p graf-after--p">Nous avons ici des mesures sans lien direct de cause à effet sur l’expérience utilisateur. Cependant, l’énorme avantage est que<strong class="markup--strong markup--p-strong"> ce sont des valeurs que l’on anticipe beaucoup mieux que l’impact sur l’expérience utilisateur</strong>.</p><p name="3953" id="3953" class="graf--p graf-after--p">Comme nous l’indique Tim, il est bien plus facile de comprendre que l’ajout d’un script va augmenter le poids de la page, que d’anticiper l’impact de ce script sur le speedindex.</p><p name="34bd" id="34bd" class="graf--p graf-after--p">Un autre exemple, très en amont dans la chaîne de conception, que j’apprécie beaucoup, est apporté par <a href="http://danielmall.com/articles/how-to-make-a-performance-budget/" data-href="http://danielmall.com/articles/how-to-make-a-performance-budget/" class="markup--anchor markup--p-anchor" rel="nofollow">Daniel Mall</a> : lors du maquette graphique, limiter le nombre de polices de caractères qu’il est possible d’utiliser ! C’est un exemple typique de la nécessité d’intégrer des budgets au plus tôt : la maquette proposée par votre graphiste peut être esthétiquement superbe, mais vous conduire à des performances nécessairement désastreuses;</p><h4 name="d579" id="d579" class="graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">Rule based metrics (mesures basées sur des règles)</strong></h4><p name="e75c" id="e75c" class="graf--p graf-after--h4"><em class="markup--em markup--p-em">Exemples : score PageSpeed; score YSlow; score DareBoost</em></p><p name="12b0" id="12b0" class="graf--p graf-after--p">Plusieurs outils existent sur le marché pour vous permettre vérifier sur une pages web le respect des bonnes pratiques qui favorisent la rapidité. Ces scores résument donc la qualité technique de vos pages du point de vue de la performance (les ressources sont-elles compressées ? les images sont-elles optimisées ? etc) .</p><p name="6747" id="6747" class="graf--p graf-after--p">Là encore, il n’y a pas de relation directe avec l’expérience utilisateur, mais en intégrant ce type de scores dans vos budgets, vous vous assurez de <strong class="markup--strong markup--p-strong">détecter des régressions majeures</strong>, et de ne pas louper d’optimisation technique évidente.</p><h3 name="b9bc" id="b9bc" class="graf--h3 graf-after--p">Comment fixer le seuil d’un budget ?</h3><p name="100e" id="100e" class="graf--p graf-after--figure">Nous l’avons évoqué au cours des paragraphes précédents, les budgets de performance doivent être mis en place le plus tôt possible dans vos projets, et accompagner ceux-ci tout au long de leur cycle de vie.</p><p name="a5c0" id="a5c0" class="graf--p graf-after--p">Il faudra veiller à<strong class="markup--strong markup--p-strong"> adapter les indicateurs utilisés en fonction des étapes et des interlocuteurs.</strong></p><p name="5625" id="5625" class="graf--p graf-after--p">Mais quelles sont les méthodes pour fixer un budget ? Quelle vitesse devez-vous atteindre ? Comment choisir ces seuils qui vont accompagner vos projets et peuvent être des contraintes fortes à certaines étapes ?</p><p name="55df" id="55df" class="graf--p graf-after--p">Ces questions ont été l’objet de l’article <a href="http://timkadlec.com/2014/01/fast-enough/" data-href="http://timkadlec.com/2014/01/fast-enough/" class="markup--anchor markup--p-anchor" rel="nofollow"><em class="markup--em markup--p-em">Fast Enough </em></a>de Tim Kaldec, qui nous rappelle notamment <strong class="markup--strong markup--p-strong">la règle des 20%</strong> apportée par Steven Seow :<strong class="markup--strong markup--p-strong"> on ne perçoit une différence entre deux durées que si l’écart entre elles est supérieur à 20%.</strong></p><p name="f785" id="f785" class="graf--p graf-after--p">En vous basant sur cette règle, vous pourrez donc fixer vos budgets en vous positionnant <strong class="markup--strong markup--p-strong">par rapport à vos concurrents</strong>, que ce soit pour être meilleur (au moins, 20% plus rapide) ou à défaut, ne pas être être perçu comme plus lent ! (au plus, 20% plus lent).</p><p name="d0c5" id="d0c5" class="graf--p graf-after--p">Autre méthode intéressante, toujours mentionnée dans cet article : <strong class="markup--strong markup--p-strong">se baser sur la perception du temps</strong>. Une réponse en moins de 100ms parait instantanée, 1 seconde est la durée pendant laquelle un internaute conserve son attention au maximum, alors qu’au bout de 10 secondes il l’aura totalement perdue.</p><p name="d6bd" id="d6bd" class="graf--p graf-after--p">Vos budgets peuvent également être composés pour<strong class="markup--strong markup--p-strong"> prendre en compte les coûts pour vos visiteurs</strong> : dans de nombreux pays, les connexions mobiles sont encore limitées en bande passante, et naviguer sur des sites mobiles trop lourd est loin d’être anecdotique ! Pour en savoir plus, je vous invite à consulter cet excellent projet : <a href="http://whatdoesmysitecost.com/" data-href="http://whatdoesmysitecost.com/" class="markup--anchor markup--p-anchor" rel="nofollow">http://whatdoesmysitecost.com/</a></p><p name="df3e" id="df3e" class="graf--p graf-after--p">Ces quelques données vous aideront, mais encore une fois, la perception de l’attente est dépendante de la valeur attendue et obtenue, c’est donc dans cette optique que vous devez concevoir vos budgets !</p><h3 name="2613" id="2613" class="graf--h3 graf-after--p">S’adapter aux budgets ou adapter les budgets</h3><p name="638b" id="638b" class="graf--p graf-after--h3">Lorsque vous ajoutez une nouvelle fonctionnalité ou un nouveau contenu, il n’est pas étonnant que vos budgets puissent être mis à mal. Mais votre objectif doit être de les respecter à tout prix !</p><p name="e5ea" id="e5ea" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Lorsqu’un budget est enfreint</strong>, vous allez devoir successivement envisager ces différentes possibilités :</p><ul class="postList"><li name="d79d" id="d79d" class="graf--li graf-after--p"><strong class="markup--strong markup--li-strong">optimiser</strong> : que ce soit sur ce changement ou sur un élément déjà existant, pouvez-vous mettre en place des optimisations qui vont vous permettre de respecter à nouveau les différents budgets ?</li><li name="1eab" id="1eab" class="graf--li graf-after--li"><strong class="markup--strong markup--li-strong">épurer</strong> : peut-être qu’un ancien contenu ou une ancienne fonctionnalité n’est plus nécessaire et peut être supprimé ?</li><li name="decd" id="decd" class="graf--li graf-after--li"><strong class="markup--strong markup--li-strong">abandonner</strong> : la valeur ajoutée apportée est-elle suffisante pour justifier une violation des budgets ? Si ce n’est pas le cas, c’est peut-être tout simplement que cette nouveauté n’en vaut pas la peine</li><li name="4107" id="4107" class="graf--li graf-after--li"><strong class="markup--strong markup--li-strong">évoluer</strong> : si aucune des actions précitées n’est envisageable, il ne vous restera pas d’autre solution que de faire évoluer les budgets de performance problématiques. Il n’est pas question de les abandonner, mais bien de les faire évoluer pour pouvoir intégrer le changement. Vous aurez ainsi un nouveau cadre à respecter à l’avenir.</li></ul><p name="405d" id="405d" class="graf--p graf-after--li">Quelle que soit l’issue, <strong class="markup--strong markup--p-strong">le budget de performance en tant qu’outil aura fait son office</strong> : vous vous serez <strong class="markup--strong markup--p-strong">interrogé sur les impacts</strong> de cette évolution, et vous en aurez <strong class="markup--strong markup--p-strong">maîtrisé les conséquences</strong>.</p><p name="b3de" id="b3de" class="graf--p graf-after--p">J’espère que cet article vous aura convaincu de l’utilité de mettre en oeuvre les budgets de performance dans vos projets, pour que tous ensemble nous allions vers un web plus rapide !</p><blockquote name="74b7" id="74b7" class="graf--blockquote graf-after--p graf--last"><strong class="markup--strong markup--blockquote-strong"><em class="markup--em markup--blockquote-em">Damien Jubeau</em></strong><br/>CEO et co-fondateur du service en ligne <a href="https://www.dareboost.com" data-href="https://www.dareboost.com" class="markup--anchor markup--blockquote-anchor" rel="nofollow"><strong class="markup--strong markup--blockquote-strong">dareboost.com</strong></a> (diagnostic automatique de la performance web et surveillance quotidienne des budgets de performance)</blockquote>