Quand la performance crée de la valeur

Copyright : O'Reilly Conferences

Au cours de la première journée de keynotes de la conférence Velocity qui se tenait à Barcelone, j’ai assisté à la brillante prestation de Monica Pal, venue nous présenter The Impatience Economy, Where Velocity Creates Value. Monica Pal est une ingénieure hautement diplômée. Elle a commencé sa carrière dans le département de recherche et de développement d’Apple et travaille maintenant à la construction d’infrastructures commerciales chez Aerospike.

L’indice de l’impatience

Monica Pal décide très rapidement de mettre l’accent sur l’impatience. La notion d’impatience nous renvoie à l’incapacité de quelqu’un à pouvoir attendre quelque chose de manière calme et posée. Sur un ton enjoué, l’intervenante nous cite des cas d’impatience de la vie courante : celui d’un bébé qui n’obtient pas très rapidement ce qu’il souhaite ou celui d’une personne affamée qui n’arrive plus à garder les idées claires… Ces différentes analogies sont une parfaite introduction à The « Impatience Index », l’étude menée par Kana Software sortie au cours du mois de janvier 2014.

Kana Software est une entreprise proposant des services de monitoring et des solutions de cloud computing. On apprend, grâce à leur analyse, que la patience n’est plus une qualité très répandue de nos jours. En effet, il y a quelques années, les gens étaient capables d’attendre dix jours le facteur pour recevoir des informations de leurs proches. Aujourd’hui, la nouvelle génération considère que 10 minutes d’attente sont amplement suffisantes. Les 18-24 sont d’ailleurs les plus impatients : toutes les 9 minutes 50 secondes en moyenne, ils regardent leurs téléphones à l’affût de nouvelles notifications. Ils regardent leurs smartphones pour tuer le temps, quand ils sont dans une file d’attente, quand ils font du shopping, en regardant la télévision, quand ils étudient… Et, comme le dit si bien Monica Pal, même quand ils attendent, ils détestent attendre ! Cette idée avait d’ores-et-déjà été énoncée par Mike Krieger, le co-fondateur d’Instagram : « Mobile experiences fill gaps while we wait / No one wants to wait while they wait ».

Les attentes du client moyen

Monica Pal nous présente ensuite une vidéo YouTube de Luke Wroblewski, qui nous incite à trouver la meilleure navigation possible pour les utilisateurs d’un site mobile. Luke Wroblewski, auteur par exemple du fameux livre Mobile First pour A Book Apart, explique comment quelque chose de valorisant, quelque chose d’efficace, peut apporter en termes d’expérience utilisateur.

Decoding the new consumer mind : How and why we shop and buy est un livre, écrit par Kit Yarrow, plein de bon sens quant à l’évolution de la société de consommation. L’utilisateur moyen est plus facilement distrait que celui des années 90 et est moins tolérant pour quasi tout ce qui demande de la patience. Ce livre, que nous propose ainsi Monica Pal, est une nouvelle façon d’appréhender comment nos cerveaux, nos esprits et nos perceptions évoluent en parallèle des avancées technologiques. Ce monde de nouvelles plateformes qui émergent nous conditionne à vouloir de la rapidité dans tous nos échanges.

Le consommateur moyen de l’époque avait une approche intellectuelle et réfléchie vis-à-vis des interfaces. Aujourd’hui, les utilisateurs ont une approche bien plus instinctive, liée à l’émotionnel. Quotidiennement, l’utilisateur est dans un environnement digital de couleurs, d’images et de vidéos dans lesquelles il perçoit des gens faire quelque chose qu’il va « aimer », « suivre » et relayer. Il passe son temps à cliquer et à réagir instantanément plutôt qu’à taper sur son clavier. Et donc, selon Monica Pal, cette logique nous mènerait, nous développeurs, à toujours anticiper les comportements de nos utilisateurs. Nous devons sublimer nos interfaces et les rendre intelligibles pour un utilisateur moyen, qui lui, n’aura aucune envie de passer du temps à « comprendre » où se trouvent nos fonctionnalités. Nous devons personnaliser l’expérience utilisateur.

Une étude récente chez Radware démontre qu’une simple seconde de chargement de contenu plus rapide apporte de la valeur significative.

Les impacts d’une bonne structure

De nombreux sites et de nombreux acteurs dans le monde du media ont un système économique lié à la publicité digitale. Aujourd’hui, la publicité est ce qui crée de la valeur fondatrice de certaines expériences sociales, selon Monica Pal. Une des technologies les plus exploitées à l’heure actuelle consiste à allouer en temps réel une impression publicitaire à un annonceur et d’en déterminer le prix en fonction de son format et de son contexte. Cette nouvelle infrastructure, appelée le Real-Time Bidding (RTB), doit donc permettre aux annonceurs en seulement quelques millisecondes d’enchérir sur un emplacement publicitaire, selon les informations connues sur un utilisateur donné. En clair, en un court laps de temps, ils doivent pouvoir extraire des données précises sur cette personne afin de lui proposer un contenu personnalisé, qui va nécessairement modifier son expérience.

Aujourd’hui, quelque soit le site web que vous parcourez, quelle que soit l’application que vous utilisez, votre expérience utilisateur peut être à tout moment bouleversée par ces infrastructures. La rapidité d’exécution apparaît donc un facteur clé de réussite. Monica Pal nous prend l’exemple d’AppNexus, une société américaine spécialisée dans la publicité digitale en temps réel. AppNexus propose un nouveau degré de vitesse : leur base de données leur permet d’effectuer 3 millions de lectures et 1.5 million d’écritures par seconde.

AppLovin, une autre société proposant une technologie RTB orientée applications, traite plus de 20 milliards de requêtes par jour, représentant 100 millions de chiffre d’affaires. Ils utilisent une nouvelle technologie de stockage Flash, au lieu d’utiliser de la RAM, ce qui leur permet de bien répartir leur performance sans ajouter un nombre indécent de serveurs à leur infrastructure.

La mise en cache des données les plus utilisées (dites chaudes) dans une solution de stockage Flash permet de ne plus devoir lire les données à partir des disques durs, d’où une réduction des temps de latence et, de fait, une amélioration des performances des applications.

Christophe Menard, « Optez pour le stockage Flash »

Monica Pal tient donc à démontrer avec toute cette analyse, la nécessité de travailler la partie front-end d’un site web, mais surtout de ne pas négliger la vitesse d’infrastructure qui soutient cette plateforme, qui peut, elle aussi, être gage de performance. You, guys, are focused on the web front end, but there’s a new degree of velocity that is emerging, creating a new kind of value out there.

Problème #1 du Project Euler

Copyright : Pedro Ribeiro Simões

Avez-vous déjà entendu parler du fameux Project Euler ? Non, jamais ?! Vraiment ? Et pourtant, il rapproche plus de 440 000 utilisateurs dans le monde entier !

La popularité du projet Euler ne cesse de croître au fil des années auprès notamment des développeurs, des étudiants des filières scientifiques, ou simplement des adultes passionnés en mathématiques. Et pour cause…

Le project Euler

Le projet Euler commence le 5 octobre 2001 en tant que rubrique sur le site MathsChallenge.net. Cette initiative née du clavier de Colin Hughes est aussi une manière de rendre hommage au travail du mathématicien et physicien d’origine suisse Leonhard Euler.

Il consiste en une multitude de problèmes plus ou moins faciles à résoudre : il en existe plus de 500 aujourd’hui. L’objectif de tout développeur qui accepte de relever le défi est de proposer un algorithme simple et efficace en termes de performance pour parvenir à une réponse, correcte bien évidemment. Et vous verrez que plus vous avancerez dans le compte des problèmes proposés, plus difficile il sera pour vous de développer des mini programmes ultra rapides pour obtenir les solutions.

Bon, ça y’est : vous êtes convaincus de tenter l’expérience ?! Je vous propose ci-dessous la résolution du premier problème de cette longue liste du projet Euler. Le code que vous retrouverez ci-dessous est ma propre interprétation de ces énoncés en JavaScript. Mais libre à vous de me proposer votre manière de les résoudre, avec d’autres langages, ou d’améliorer mon code en le rendant plus rapide par exemple. J’accepte volontiers vos remarques ou suggestions !

Le problème #1

« If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000. »

Le problème 1 est probablement le plus simple à résoudre du projet Euler. Il s’agit de déterminer la somme des nombres inférieurs à 1000 qui sont des multiples de 3 ou de 5. Par définition, si le nombre b est un multiple du nombre a, cela signifie que a est un diviseur du nombre b. Et que donc, la division b/a n’admet pas de reste.

D’après cette formule, la solution à implémenter paraît évidente. Et qu’importe le langage choisi, les programmes écrits pour parvenir à la solution de ce problème ont tendance à se ressembler. Pour ma part, j’ai donc créé en JavaScript une boucle for testant successivement tous les nombres inférieurs à 1000 et vérifiant si le reste de la division de ce nombre par 3 ou de ce nombre par 5 est nul. Si l’une de ces conditions est vraie, alors j’ajoute ce nombre à la somme totale.

function problem1(){
  var sum = 0;
  for (var i = 3; i < 1000; i++){
    if(i%3==0 || i%5==0) sum += i;
  }
  return sum;
}
problem1();

Ce petit programme s'exécute en 17 millisecondes sur mon ordinateur. Ça vous semble convenable, n'est-ce-pas ? Il existe pourtant une façon bien plus efficace de parvenir à la solution de ce problème !

Vous pouvez décider de calculer de manière indépendante la somme des nombres divisibles par 3 inférieurs à 1000 et la somme des nombres divisibles par 5 inférieurs également à 1000. De l'addition de ces deux sommes, il suffit de retirer la somme des nombres divisibles par 15, pour ne pas comptabiliser en double les multiples de 15, 15 représentant le produit de 3 par 5.

Observons de près ces deux sommes : si on additionne tous les multiples de 3 inférieurs à 1000, on a : 3 + 6 + 9 + ... + 999 soit le produit 3 x (1 + 2 + 3 + ... + 333). Et si nous additionnons tous les multiples de 5 inférieurs à 1000, nous obtenons : 5 + 10 + 15 + ... + 995 soit 5 x (1 + 2 + 3 + ... + 199).

Sachant que la somme de tous les nombres de 1 à n est égale à la formule n*(n+1)/2, il ne manque plus qu'à déterminer le plus grand des multiples du nombre souhaité en dessous de 1000 pour pouvoir effectuer le bon produit. Pour le chiffre 5, le plus grand des multiples en dessous de 1000 est 995, soit l'équivalent de la soustraction de ce nombre par le reste de la division 999/5. Je divise ensuite ce nombre par 5, pour obtenir le fameux 199. La somme des nombres de 1 à 199 est égale à (199x200)/2 soit 19 900. Je multiple ce nombre par 5 est le tour est joué !

function sumdivisibleby(x){
  var target = 999 - (999%x),
      n = target/x;
  return x*(n*(n+1))/2;
}

function problem1(){
  return sumdivisibleby(3) + sumdivisibleby(5) - sumdivisibleby(15);
}

Ce nouveau programme s'exécute en 6 millisecondes ! La différence peut vous sembler infime... Mais testez à nouveau ces deux fonctions, cette fois, pour trouver les multiples de 3 et 5 en dessous de 10 000 000 : la deuxième fonction s'exécute, chez moi, en 5 millisecondes, tandis que la première possède une durée d'exécution de 85.04 millisecondes. Une différence de plus en plus conséquente !

Comme vous le démontre l'exemple précédent, les possibilités sont grandes, et tous les moyens sont bons pour arriver au résultat tant convoité d'un problème. Certains algorithmes seront par contre plus efficaces que d'autres, et le projet Euler est une bonne manière de réfléchir aux enjeux de la performance lors du développement d'une fonctionnalité, et ce, quelque soit le langage que vous utilisez au quotidien.

Conférence Velocity

Copyright : christelle.

Tous les acteurs du web souffrent des mêmes problématiques, à savoir réussir à proposer aux utilisateurs de leurs sites un chargement de leurs pages rapide, posséder une infrastructure leur permettant d’être sereins quelque soit la charge de leurs serveurs, proposer sans cesse une fiabilité sans pareille de leurs services, etc.. C’est dans l’objectif de fournir quelques éléments de solutions à ces questions que se tenait, il y a un peu plus de deux mois, la conférence Velocity dans la ville de Barcelone en Espagne.

J’ai eu l’extrême chance de pouvoir y participer, et c’est dans ce cadre que j’ai réellement pu prendre conscience des énormes progrès qu’il nous reste tous à faire en matière de performance dans le monde du web.

Un évènement O’Reilly

Velocity, c’était avant tout un évènement regroupant plusieurs sérieux protagonistes du web organisé par la maison d’éditions O’Reilly. Le groupe O’Reilly Media a été fondé en 1978 par Tim O’Reilly, un passionné des technologies dont le plan original était de simplement produire un travail de qualité pour des personnes ayant besoin de profiter d’un savoir dans un domaine précis ayant attrait à l’univers de la programmation. Son leitmotiv était le suivant : « Make interesting work for interesting people ».

Tim O’Reilly commence donc à se faire un nom en écrivant des livres techniques, qu’il décide de publier de son propre chef. Âgé de 60 ans aujourd’hui, cet écrivain et chroniqueur continue la publication de livres avec sa maison d’éditions, qui est considérée comme l’une des meilleures à l’international en matière de livres de programmation, voire même de livres autour de l’informatique de manière générale. Il est aujourd’hui l’invité de conférences autour du web dans le monde entier.

Une liste de speakers hautement qualifiée

Pour moi qui découvrais la conférence Velocity en même temps que je découvrais Barcelone, c’était vraiment une expérience enrichissante durant laquelle j’ai longuement pu remettre en question ma manière d’envisager le web de demain. De très nombreux intervenants provenant du monde entier sont venus partager leur expérience dans la matière, et c’était vraiment un honneur pour moi de pouvoir bénéficier de leurs conseils de façon si instantanée, grâce à leur proximité.

J’ai par exemple adoré l’intervention de Patrick Hamann, un ingénieur client-side qui travaille pour le magazine britannique The Guardian. Sa présentation, Breaking News at 1000ms, était un résumé de l’ensemble des tâches qui ont permis à ce magazine, ou plutôt à la version web de celui-ci, de passer sous la barre des 1000 millisecondes pour le chargement de leurs pages : une décision qui a été prise suite à un sondage auprès de 3000 de leurs utilisateurs quant aux différents axes d’amélioration qui pourraient rendre leur navigation plus agréable. La performance est apparue comme un sujet primordial, qui les a conduit à penser la partie responsive de leur site selon l’expression suivante : « Core content should be delivered first », un résultat que vous pourrez apprécier en navigant ici sur http://next.theguardian.com.

J’ai également apprécié retrouver Estelle Weyl, une consultante et développeuse plutôt front dont les compétences ne font plus l’ombre d’un doute. Elle présentait RWD is not a panacea, presque une mise en garde contre tous ces développeurs qui proposent encore qu’une version statique de leur site. Telle était son approche : « Just because no one uses your mobile site, doesn’t mean you don’t need to improve it. Maybe no one uses it because the experience is so bad. ». Pour elle, penser au mobile à l’heure actuelle n’est plus une recommandation, mais une réelle nécessité vis-à-vis du nombre de devices sans cesse en augmentation. D’ailleurs, même Google va se mettre à pénaliser les sites non mobile-friendly

Bien d’autres développeurs, consultants, écrivains et chercheurs se trouvaient à cette conférence, au milieu de nous tous, comme s’ils étaient finalement que des personnes normales, accessibles de tous. Parmi eux se trouvaient entre autres Tammy Everts, Kent Alstad, chercheurs pour Radware, Lyza Gardner, fondatrice de la start-up Cloud Four et co-auteure de Head First Mobile Web, Pamela Fox développeuse et passionnée Ilya Grigorik développeur chez Google, Mark Zeman fondateur de SpeedCurve, Joshua Hoffman administrateur systèmes pour Soundcloud, ou encore Yoav Weiss qui n’est autre que celui qui aura révolutionné le monde des images pour le responsive avec l’attribut srcset et notamment son apport au support de cette fonctionnalité jusqu’alors expérimentale sur Chrome et Robert Treat, un développeur notamment connu pour ses travaux sur PostgreSQL.

Cette conférence, c’était aussi l’occasion de retrouver des acteurs plutôt connus du monde du web : O’Reilly naturellement, Keynote Systems, EdgeCast, Dynatrace, GitHub, Limelight, mais aussi Akamai Technologies Inc., AppDynamics, Pingdom, Telefónica ou encore Aerospike, ThousandEyes, Etsy, Facebook, Mozilla, Google et Cedexis, un groupe que l’on retrouve également en France qui propose des outils de monitoring pour le web. Les technologies RUM, Real User Monitoring, étaient d’ailleurs largement représentées tout au long de ses trois jours. Car, oui, je ne vous l’ai pas mentionné plus tôt : Velocity, c’était trois jours intenses de veille autour de la performance pour le web.

Durant les deux premiers jours, des sessions de « keynotes » étaient programmées le matin, et l’après-midi des conférences sur des thèmes comme l’amélioration des performances pour le mobile, l’arrivée du responsive dans le web et ses conséquences en matière de start render et temps complet de chargement des pages, la mise en place d’infrastructures visant à améliorer la qualité des services pour le web, etc., nous étaient proposées. Le troisième et dernier jour était composé de sessions d’une heure et trente minutes visant à comprendre de manière concrète quelles étaient les mesures prises pour « construire une nouvelle version du web plus forte et rapide » : « Building a faster, stronger web ». En clair, des sessions de tutoriaux nous étaient proposées sur par exemple, la compression des images avec un rapport qualité/poids correct, l’optimisation des requêtes réalisées sur des bases de données internes, l’utilisation d’algorithmes très spécifiques pour réduire le poids des éléments affichés sur une page web… Suivez ce lien pour retrouver le programme des conférences disponibles à cette occasion.

J’ai pu profiter de nombreuses recommandations dont cet article ne fait pas une liste exhaustive. J’ai bien l’intention d’écrire d’autres articles sur l’ensemble des notes que j’ai pu prendre lors de ces différents discours notamment sur l’organisation du code front préconisé par les intervenants, sur la manière dont doit être mise en place un projet responsive – une des choses qui m’a semblé extrêmement pertinente à ce sujet, est de faire travailler les designers et les développeurs en parallèle sur ces travaux, pour ne pas perdre de temps, et renforcer la crédibilité et la mise en place d’un nouveau design, sur l’utilisation de véritables données pour un suivi quotidien de la performance et ce, aussi bien pour les serveurs que pour les fichiers utilisant des technologies diverses.

Une expérience multi culturelle

En bref, Velocity, c’était vraiment un chouette évènement pour directement rentrer un contact avec des grands acteurs du web. C’était aussi l’occasion de parler un peu anglais, un tout petit peu espagnol, et très peu français pour échanger sur le web actuel.

Par ailleurs, Barcelone est vraiment une ville fascinante, où se mêlent bien différentes cultures, et où le dynamisme de la ville semble donner libre cours à l’imagination de tous ses architectes tant ces rues espagnoles sont différentes en termes de design de tout celles que j’ai pour habitude de parcourir. Les barcelonais que nous avons pu croiser maîtriser plus ou moins les trois langues précitées, ce qui n’est clairement pas notre cas, ici à Paris. Un petit plus pas désagréable non plus : à Barcelone, on peut accéder au WiFi gratuitement dans toute la ville ! C’est bien l’une des choses qui m’a pas mal fascinée parmi tant d’autres ! Et il faisait clairement dix degrés de plus qu’à Paris au moment où se tenait la conférence.

Velocity m’aura permis de rencontrer des personnes évoluant dans mon milieu, que je n’ai pas hésité à aborder pour en connaître plus sur leurs actions à venir, ou simplement pour pouvoir récupérer quelques goodies ! La communauté O’Reilly semble définitivement bien solide, puisque Velocity a lieu quatre fois au cours de l’année. D’ailleurs, en 2015, elle se tiendra entre le 27 et 29 à Santa Clara en Californie, le 11 et le 11 août à Pékin, du 12 au 14 octobre à New York, et enfin du 11 au 13 novembre à Amsterdam.