Lors de la conférence NoSQL Europe, les présentations théoriques côtoyaient les sessions de retour d’expérience. C’est lors de l’une de ces dernières que deux architectes du site d’information anglais The Guardian ont présenté les réponses qu’ils ont apportées aux enjeux techniques qu’ils ont rencontrés.
Ce site Web présente des articles aux visiteurs et génère un trafic très majoritairement en lecture. Les volumes de données servis sont importants, le trafic est soutenu et peut connaître des pics selon l’actualité du moment. Fort logiquement, la problématique de stockage est primordiale dans ce contexte.
Leur présentation a mis en avant l’utilisation qu’il était possible de faire du Cloud Computing et des nouvelles technologies de persistance non relationnelles pour servir de nouveaux types de besoins fonctionnels et techniques.
Problématiques rencontrées
Le site Guardian.co.uk n’a cessé de monter en charge depuis sa création. Il y a encore peu de temps, son infrastructure était composée d’une couche de serveurs Web en façade des serveurs d’applications qui eux mêmes étaient en liaison avec une base de données Oracle.
Année après année la base de données Oracle était soumise à une charge de plus en plus importante jusqu’à atteindre 800 requêtes par seconde en moyenne. De toute évidence, ce point de contention devait être corrigé.
Une problématique plus générale s’est posée quant à faire entrer ce site d’information dans l’Internet moderne au travers d’une plus grande interaction avec les utilisateurs.
Une architecture en évolution
Matthew Wall et Simon Willison ont ainsi présenté la nouvelle architecture qui a été mise en œuvre. La figure ci-dessous en présente les composantes et l’on peut ainsi rapidement constater le chemin parcouru et les choix audacieux qui ont été faits.

Memcached pour soulager Oracle
La nature du trafic sur un site d’information est telle qu’un certain nombre de données représente la majorité des requêtes. Un cache est donc particulièrement adapté à cette situation.
Memcached a été installé en amont de la base de données. La capacité totale du cache mis en œuvre est de 20 Go. Il a permis de grandement délester la base de données Oracle. Matthew Wall parle ainsi d’une réduction globale des requêtes en lecture de 65 %.
Recherches élastiques avec Solr et EC2
Solr a pris un rôle important en délestant la bases de données de beaucoup de requêtes complexes. Il est utilisé bien sûr pour les recherches effectuées par les utilisateurs mais également pour les accès aux articles comportant un même tag. Solr propose une réplication master-slave qui permet de propager les évolutions de l’index de recherche entre les différents nœuds. La complexité de la réplication des bases de données est ici minimisée compte-tenu de la nature des indexes de recherche : il sera facilement tolérable qu’un délai de plusieurs minutes soit observé entre l’ajout d’un article et son apparition dans les résultats d’une recherche.
Les architectes du Guardian ont donc exploité cette flexibilité de réplication en positionnant un nœud Solr master au sein de leur infrastructure, et une série de nœuds slave sur Amazon EC2. Ainsi, il leur est possible de multiplier le nombre de slaves au besoin, selon le trafic (fluctuant selon l’actualité du moment).
Cette utilisation intelligente du Cloud Computing a particulièrement séduit l’auditoire et démontré qu’il était possible de marier infrastructure interne et IaaS (Infrastructure as a Service).
Applications individuelles sur Google App Engine
Google AppEngine (GAE) est ici utilisé pour développer des applications à durée de vie limitée, en rapport avec l’actualité du moment. En particulier, Simon Willison a cité l’exemple d’une application qui a permis de suivre les opinions des internautes au cours d’un débat télévisé entre 3 hommes politiques britanniques. Durant les deux heures de débat, l’application a été soumise logiquement à une forte charge, notamment pour persister les votes des visiteurs : plus d’un million de votes ont été enregistrés durant ce débat, avec une pointe à 400 votes / seconde. La persistance de ces votes était assurée par le Datastore de GAE à l’aide du pattern Sharded counters.
Le déploiement sur Google AppEngine a permis à Guardian.co.uk de déléguer la gestion de ce pic de charge, tout en profitant d’une bonne productivité de développement pour cette application simple, grâce à l’environnement intégré de GAE.

Analyse de données avec Redis
Redis est une base de données clé-valeur en mémoire. A ce titre il est similaire à Memcached mais se caractérise par le fait qu’il persiste sur disque, de manière asynchrone, toutes les écritures qui sont faites.
L’utilisation de Redis chez The Guardian est plus anecdotique mais pour le moins originale. Simon Willison a ainsi donné l’exemple d’un ensemble de données qui lui était parvenu comprenant quelques centaines de milliers d’adresses postales qu’il devait corréler pour en extraire des statistiques. Il expliquait avoir effectué cette tâche sur son ordinateur portable à l’aide d’un langage de script et de Redis en tant que table de hachage persistante. Redis lui apportait ainsi la sauvegarde de sa session de travail. Il lui était alors possible d’analyser les données (ce qui nécessitait un traitement de plusieurs minutes), de persister les résultats avec Redis, et de pouvoir réutiliser, quelques jours plus tard, l’environnement de calcul déjà exécuté. Ce type d’utilisation de Redis est tout à fait exotique et non représentative de l’utilisation courante, orientée serveur, qui en est faite ; mais l’approche n’en est pas moins plaisante.
Conclusion
Cette présentation à NoSQL Europe a été particulièrement appréciée du public qui a pu voir ce que ces nouvelles technologies pouvaient apporter dans un cas concret. Clairement, Matthew Wall et Simon Willison ne souhaitent pas s’arrêter là : ils expliquent vouloir peu à peu déplacer les données les plus sollicitées de leur base de données Oracle vers d’autres technologies de persistance ; ils pensent notamment à CouchDB pour le stockage des articles sous forme de documents.