Le réseau de micro-blogging Twitter, qui a annoncé récemment avoir atteint les 50 millions de « tweets » (les messages du réseau) par jour, cherche à modifier son infrastructure, en changeant de base de données. La célèbre MySQL, utilisée depuis les premiers jours, cède donc sa place à la base de données non-SQL Cassandra.
Une croissance toujours problématique
Lancé dans le courant de l'année 2006, Twitter a connu une croissance de plus en plus forte, tant en nombre d'utilisateurs qu'en activité. Une récente étude du cabinet RJMetrics parle ainsi de 75 millions d'utilisateurs fin 2009, qui, même s'ils ne sont pas tous actifs, constituent une charge de plus en plus difficile à supporter. Les administrateurs du site sont donc amenés à chercher de nouvelles solutions pour supporter cette charge.
De même que de très gros sites comme Facebook, Google ou Yahoo, les ingénieurs de Twitter doivent donc réfléchir à la façon dont le site est conçu, et éventuellement remettre en question leurs choix initiaux. Ainsi, si le site était initialement développé avec la technologie Ruby on Rails, le site a petit à petit migré vers une technologie jugée plus fiable, à savoir le langage Scala, développé au sein de l'EPFL. Celui-ci est utilisé conjointement avec la technologie Java, et assure selon Twitter de meilleures performances.
Mais l'adoption de Scala ne fait pas tout : les performances d'un site tel que Twitter sont intimement liées à celles de sa base de données. Jusqu'à présent, MySQL était utilisée, conjointement au système de cache memcached. Le rôle d'un tel système est de soutenir la base de données en gardant en mémoire vive un maximum de données, que l'on peut de plus distribuer sur plusieurs serveurs. Les performances sont ainsi accrues, car la base de données est sollicitée moins souvent qu'auparavant.
De MySQL à Cassandra
Économiser les serveurs
Cette approche a fait ses preuves : memcached est utilisé par des sites aussi divers que Facebook, Youtube ou Wikipedia, conjointement avec MySQL. Mais pour Twitter, elle équivaut à déployer de plus en plus de serveurs. Selon Ryan King, un des ingénieurs responsables de la migration, un tel choix coûte de plus en plus cher en termes de main d'œuvre. Pour l'équipe, la solution était de changer de base de données, c'est à dire d'abandonner MySQL.
Plusieurs solutions ont été comparées, selon une liste de critères précis : serait-il nécessaire, et, si oui, suffisamment facile d'ajouter de nouvelles machines ? Est-ce que le système risquait de dépendre de composants dont les pannes seraient fatales à tout le site ? Est-ce que le nouveau système supporterait correctement une importante charge en écriture (par exemple liée à la réception de beaucoup de tweets en même temps) ? MySQL ne correspondait plus à ces critères, mais un certain nombre de bases de données d'un genre encore peu connu ont en revanche été consciencieusement examinées : les bases de données dites non-SQL.
Cassandra, une base de données non-SQL
Les bases de données non-SQL sont assez récentes, le mouvement NoSQL ayant à peine un an. Cette appellation regroupe en fait un ensemble de bases de données plus ou moins similaires, qui visent à rompre avec les caractéristiques habituelles des bases de données relationnelles (dont les bases de données SQL font partie), dans le but d'assurer de meilleures performances ou une meilleure capacité de déploiement. Si ces bases de données sont encore jeunes, elles sont pourtant soutenues (voire développées) et utilisées par de gros acteurs du web tels Google, Facebook ou Amazon.
Cassandra, la base de données ayant été retenue, a ainsi été initialement développée par Facebook dans le langage Java, puis publiée sous licence libre en juillet 2008. Elle est aujourd'hui maintenue par la Fondation Apache, par laquelle elle est d'ailleurs considérée depuis le 17 février 2010 comme étant un projet prioritaire. Son but est d'être décentralisée, de supporter facilement la montée en charge en écriture ainsi que l'addition de nouveaux serveurs sans interruption de service.
Une migration déjà effective
C'est donc exactement ce que recherchait l'équipe de Twitter, ainsi que le confirme Ryan King. Pour l'instant cependant, la migration de MySQL vers Cassandra n'est pas achevée : l'équipe expérimente la mise en production de la nouvelle base de données, en testant cette dernière en parallèle de MySQL. La première table bénéficiant de la migration, la plus importante, est la table des statuts, c'est à dire celle des tweets. Mais les ingénieurs semblent déjà enthousiasmés par les premiers résultats, puisqu'ils parlent déjà de faire migrer les autres tables vers cette base de données, ce qui les conduirait ainsi à ne plus utiliser MySQL.
Twitter n'est pas le premier site à faire un tel choix. En effet, le site Digg.com avait déjà choisi de passer de MySQL à Cassandra, et avait publié un avis plutôt positif sur cette migration. Avec Facebook, cela représente donc une sérieuse base d'utilisateurs pour Cassandra, qui se voit ainsi promettre un bel avenir.
Partager