ElectR

Il y a peu d'événements aussi excitants ou aussi périlleux qu'une soirée électorale pour une équipe Web. Dans les minutes qui suivent la fermeture des bureaux de vote, des dizaines de milliers d'internautes accèdent au site Web simultanément pour suivre en temps réel le dévoilement des résultats. Chaque nouvelle élection provinciale ou fédérale est l'occasion pour Radio-Canada.ca d'établir un nouveau record historique d'achalandage.

Pour un produit Web et son infrastructure, c'est le test ultime. Les requêtes aux bases de données doivent être optimisées, les pare-feu doivent soutenir de hauts niveaux de trafic, les serveurs doivent répondre à chacun des usagers qui sont connectés. Heureusement, la croissance des offres infonuagiques ces dernières années apporte une réponse attrayante à ces défis. Pour les deux ou trois heures que dure une soirée électorale, on peut se bâtir, pour un prix très modéré, une infrastructure virtuelle qui multiplie les capacités de notre infrastructure physique et nous permet de répondre à cette demande exceptionnelle.

Mais une fois ces considérations réglées, reste le travail le plus important : offrir une expérience riche, agréable et complète aux usagers. De nos jours, cela veut dire proposer dans un même écran le signal en direct de la radio, celui de la télé, les discussions des médias sociaux et, bien sûr, les résultats personnalisables. Depuis 2007, Radio-Canada.ca utilisait pour ce faire une application de résultats basée sur la technologie Flex qui faisait bien son travail, mais qui commençait à trahir son âge et qui avait le désavantage de ne pas fonctionner sur tous les types d'appareils mobiles.

Devant la possibilité d'une nouvelle élection provinciale au Québec cet automne, il était temps de donner un peu d'amour à notre tableau de bord électoral. La librairie SignalR[1] utilisée pour fabriquer l'application est à l'origine du surnom donné au projet. On l'appelle affectueusement chez nous ElectR.

La solution ElectR

Figure 1 – La version pour tablettes d’ElectR

ElectR a l'ambition d'offrir une destination unique pour vivre en temps réel une soirée électorale. Elle le fait grâce à une interface adaptée à toutes les tailles d'écran et de façon transparente pour les usagers. La librairie SignalR est une extension du cadre d'application (framework) ASP.NET[2] de Microsoft. Elle implante les fonctionnalités du protocole WebSocket[3], ce qui lui permet de livrer simultanément des données en temps réel à tous les usagers connectés à un serveur. Contrairement à notre ancienne application, ElectR ne dépend pas d'une fréquence de rafraîchissement prédéfinie. Dès qu'il y a de nouvelles données, tous ceux qui ont la page ouverte les reçoivent.

Dans une application Web traditionnelle, le client (votre fureteur) envoie des requêtes au serveur qui, lui, répond en envoyant des données (texte, images, etc.) qui vous sont présentées. Avec la technologie SignalR, chacun des clients (ordinateurs, appareils mobiles, tablettes) garde une connexion ouverte avec le serveur et c'est le serveur qui pousse les données vers ces clients. Il s'agit donc d'un renversement complet du paradigme.

Le projet ElectR a été initié par deux membres de l'équipe de développement de Musique et Services numériques, notre architecte d'applications, Bruno Rovito, et notre développeur aux opérations (Devops), Dominic Marchand. Après la réalisation d'une preuve de concept, le prototype a été présenté aux responsables de l'information Web pour finaliser les requis et lancer le développement du produit final.

Figure 2 – ElectR pour appareils mobiles

Mais, si beau et si adapté soit le produit, pour s'assurer de passer une soirée électorale sans maux de tête, il faut pouvoir soutenir les dizaines de milliers d'usagers simultanés (en 2012, Radio-Canada.ca a connu une pointe de 200 000 connexions simultanées) et il n'y a qu'une façon de mesurer cela : le test de charge.

Pour réaliser un test de charge, il faut d'un côté simuler des usagers qui se connectent au site et de l'autre mettre en place une infrastructure représentant ce qui sera disponible lors de la soirée électorale. Encore une fois, ce sont les services infonuagiques qui viennent à la rescousse. Chaque serveur représentant les usagers peut établir mille connexions client. Reste donc à mesurer combien de ces « clients » peut supporter un serveur. Le test en circuit fermé peut être répété plusieurs fois et il est aussi l'occasion de simuler la panne d'un serveur, la perte d'un lien réseau et de mesurer comment réagit l'application, quelle expérience vivraient les usagers en pareil cas.

Avec de telles précautions et tous les apprentissages fournis par les tests, il ne restera idéalement qu'une chose à faire pour l'équipe de Musique et Services numériques le soir des élections : ce sera de regarder sans inquiétude l'arrivée des résultats, la montée en charge des serveurs. Parce que, disons-le franchement, la seule fébrilité qu'on devrait ressentir lors d'une soirée électorale c'est celle de savoir qui formera le prochain gouvernement et la seule décision cruciale que devraient prendre les équipes de développement c'est de savoir s'ils préfèrent un club sandwich ou un quart cuisse.

Références

Outil de soulignement de texte