Pages

dimanche 5 juillet 2009

Sur Velocity 2009

Enfin des choses qui bougent sur le thème performance ...

La conférence Velocity "Web Performance and Operations Conference" s'est tenue du 22 au 24 juin à San Jose, CA.

On y trouvait des représentants des plus gros sites Web (Facebook, Google, Microsoft, Twitter, Yahoo, etc) réunis pour discuter des problématiques d'exploitation et souvent de performance de leurs sites.

Je n'y étais malheureusement pas mais fort heureusement beaucoup de présentations et même des vidéos de sessions sont en ligne.




Brooks Elliott

Qu'est ce qui ressort ?

Tout d'abord, ces sites sont tous des sites commerciaux, très fréquentés où les performances sont nécessairement un enjeu. D'ailleurs Performance n'a pas toujours le même sens selon les interventions : il peut signifier ROI, expérience de l'utilisateur ou efficacité technique.

D'une manière générale, les participants constatent que dans les applications "Web 2.0"/AJAX les problèmes de performance perçue proviennent pour une bonne part de la restitution dans le navigateur (environ 50% du temps total). La plupart des outils cités sont des outils d'analyse du comportement sur le poste client et d'optimisation du Web design.

Je ne pense pas qu'ils aient ignoré la partie serveur (on voit passer par ci par là des outils plus classiques), mais il existe déjà des outils pour la partie réseau/serveur et le sujet est peu à même de déplacer les foules. Ils sont inclus dans le mantra le mantra "mesurer, mesurer, mesurer, visualiser et analyser les données pour comprendre le problème" que l'on retrouve un peu partout. Juste pour préciser au cas où, mesurer la production.

Bien qu'Agile cela n'apparaisse pas directement, on sent que le développement de la plupart de ces application est Agile (résolutions itératives des problèmes, rythme rapide des mises à jour en particulier). On voit donc l'envers du décor, quand les projets sont livrés pour être exploités et ne marchent pas forcément aussi bien que l'on souhaiterait. Les solutions sont souvent différentes de celles qu'on rencontre dans des secteurs plus classiques. En particulier ce sont plus souvent des solutions mixant l'infrastructure et le développement de l'application (travail sur les caches et les proxies à différent niveaux de l'infrastructure par exemple).




Darren Hester

Mesurer, mesurer, mesurer et comprendre

Tout d'abord une session avec un titre interminable
The User and Business Impact of Server Delays, Additional Bytes, and HTTP Chunking in Web Search de Eric Schurman (Microsoft) et Jake Brutlag (Google) qui présentent les résultats de tests utilisateurs qu'ils ont menés sur leurs moteurs de recherche. C'est intéressant et assez abordable. Prenez le temps de regarder la vidéos car les slides seuls sont assez laconiques.

Ils ont dans les deux cas appliqués la méthodologie A/B Testing (ou Split A/B Testing) utilisée habituellement en marketing pour choisir entre différents designs. L'A/B Testing utilise dans l'arrière boutique des méthodes statistiques de tests d'hypothèses basées sur des comparaisons de séries (variante de test de Khi2 type GTest, ZTest). Il nécessite une infrastructure qui permet de servir différentes versions du site à différents utilisateurs et de collecter les mesures.

La page Wikipedia sur A/B testing est un peu jargon. Vous trouverez sur ces deux pages des explications destinées au marketing plus faciles à appréhender dans le contexte :

En l'occurrence, ils ont soumis les utilisateurs a des versions de site plus ou moins lentes, ou dont les pages ont été refactorées selon diverses techniques pour mesurer l'impact sur l'usage et donc les revenus du site. Les constats sont que les utilisateurs commencent à percevoir l'attente à partir de 500ms mais aussi qu'ils ne sont pas impactés de la même manière selon la façon dont s'affiche la page.

On trouve un peu plus de détails l'utilisation de l'A/B Testing et d'autres moyens utilisés dans la présentation Performance-Based Design - Linking Performance to Business Metrics de Aladdin Nassar (Microsoft - Hotmail) et une moisson de sigles aussi : PBD Performance Based Design, RPI Relative Performance Index, PLT (ah non celui là c'est juste Page Load Time). C'est aussi en vidéo.

Philip Dixon (Shopzilla) dans Shopzilla's Site Redo - You Get What You Measure fait un retour d'expérience sur la refonte complète de leur site. Peu technique mais intéressant quand même pour les problématiques et le vécu. C'est aussi en vidéo.





aussiegall

Les outils

Pas de bon artisan sans de bons outils.
Plusieurs présentations ont été consacrées à des outils d'analyse dans le client :

Performance Tools par Eric Goldsmith (AOL), Simon Perkins (Simtec Limited), Stoyan Stefanov (Yahoo! Inc), Jim Pierson (Microsoft), Jan Odvarko (Freelance). Attention il y a deux présentations attachées :
  • Performance Tools Presentation [ZIP] sur Page Test d'AOL
  • Performance Tools Presentation 1 [PPTX] sur VRTA de Microsoft
Page Speed par Bryan McQuade (Google), Richard Rabbat (Google, Inc.) sur Google Page Speed.

Jiffy, une extension Firefox pour analyser le temps de réponse dans la partie client par Scott Ruthfield de Rooster Park Consulting.





geishaboy500

Optimiser le Web Design

Maintenant qu'on a compris d'où vient le problème, il faut lui trouver une solution.

Julien Lecomte (Yahoo!) présente dans High-performance Ajax Applications diverses techniques pour améliorer les temps de réponse du JavaScript. Attention c'est très technique et nécessite une bonne connaissance du développement JavaScript.

Si vous n'êtes pas un expert JavaScript vous préfèrerez probablement la présentation plus pédagogique de Douglas Crockford (Yahoo!) Ajax Performance.

Si vous n'en avez pas assez :
Go with the Reflow de Lindsey Simon (Google) est une présentation très spécifiquement sur le reflow en Javascript, c'est à dire le repositionnement des objects graphiques dans la page. Ce comportement du navigateur est cause d'un certain nombre de ralentissement dans le client.

Une très belle présentation sur CSS de Nicole Sullivan (Consultant) The Fast and the Fabulous: 9 ways engineering and design come together to make your site slow.

Et pour finir avec le Web design, Stoyan Stefanov (Yahoo!) présente dans Image Optimization: How Many of These 7 Mistakes Are You Making divers outils et techniques qui permettent d'améliorer le poids des images dans les pages Web.





ecstaticist

Rails

La présentation sur Twitter est particulièrement intéressante pour ceux qui s'intéressent à Rails. Fixing Twitter: Improving the Performance and Scalability of the World's Most Popular Micro-blogging Site par John Adams (Twitter) présente l'architecture, le reporting et le process de déploiement mis en place, les techniques de cache mises en oeuvre. C'est aussi en vidéo.





hounddiggity

Deployer

Passons un peu du coté de nos amis (si, si) de la production.

Une présentation très sympa sur les rapports devs/ops de John Allspaw & Paul Hammond (Yahoo!) 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr et la nécessité d'un respect mutuel pour faciliter les déploiements fréquents et rapides.

Pourquoi il ne faut pas compter sur l'administrateur Apache pour vous améliorer tout ça d'un coup de zip : Beyond Gzipping de Tony Gentilcore (Google) montre que la compression des flux n'est pas une panacée car 15% des utilisateurs ont quand même des réponses non compressées. Le problème est dû aux firewalls et proxies qui altèrent les headers HTTP.

Scalable Internet Architectures par Theo Schlossnagle (OmniTI) présente quelques slides intéressants sur les pratiques de cache et de partitionnement/sharding de base de données.

Introduction to Managed Infrastructure with Puppet présente l'outil de configuration management Puppet pour le déploiement d'application distribuées.





Chocolate Tools par JanneM

Les outils cités

J'ai regroupé ici divers outils cités dans ces présentations ou d'autres que je n'ai pas reportées.

JavaScript/DOM
  • HttpWatch analyse/profilage poste client, adon IE et Firefox (commercial)
  • PageTest analyse/profilage poste client, addon IE (AOL, opensource)
  • Jiffy analyse/profilage poste client, addon Firefox
  • Visual Round Trip Analyzer analyse/profilage poste client, add on IE (Microsoft, free)
  • Page Speed analyse/profilage/suggestions sur poste client, add-on Firebug (Google, opensource)
  • YSlow analyse de page Web - addon Firebug (Yahoo!, gratuit)
  • Firebug analyse/debug poste client - addon Firefox (opensource)
  • MSFast analyse/debug addon IE (opensource)
  • JSLint.com service en ligne d'analyse de code JavaScript
  • Cuzillion générateur de pages de test contenant diverses techniques JavaScript
Images
  • Smush.it service en ligne d'optimisation d'image
  • CSS Sprite Generator service en ligne de génération de CSS sprite à partir de plusieurs images dans le but de limiter le nombre de requêtes HTTP
  • SpriteMe idem
  • d'autres outils en ligne de commande sont cités dans la présentation Image Optimization
Réseau / HTTP
  • Fiddler analyse/debug http - addon IE (Microsoft, gratuit)
  • Charles HTTP proxy (commercial)
  • nExpert simulation de connexion réseau de différentes qualités (Windows)
  • WANSim simulation de connexion réseau de différentes qualités (Linux)
  • HTTP Analyzer sniffer HTTP Windows
  • Varnish cache HTTP
Surveillance
  • NetMon monitoring réseau Windows (commercial)
  • Ganglia surveillance de systèmes distribués Linux (opensource)
  • KITE service en ligne de mesure de performance sur les postes clients Web et RIA (Keynote, commercial avec un mode gratuit)
Configuration Management
  • Puppet configuration management (commercial)

J'en ai probablement ratés quelques uns et je n'ai pas systématiquement noté les outils connus (Squid ou Nagios par exemple) ou les outils système)



A suivre ...

Google et Yahoo! ont lancé chacun leur site pour regrouper les initiatives :

1 commentaire:

Yannick AMEUR a dit…

Merci pour cette exelent article. Yannick.