Les coulisses techniques de Twitter Scala s'impose comme le langage n°1 de Twitter

Twitter a été longtemps le service de référence pour la communauté Ruby on Rails. Monorail, son application centrale, était développée dans ce langage. Depuis, la plateforme technique de Twitter a été ré-architecturée sous forme de services et une plus grande diversité de langage règne chez les développeurs du site. Ruby est toujours présent, mais le langage a dû céder du terrain, notamment face à Scala.

Beaucoup des nouveaux développements menés par les équipes de Twitter sont aujourd'hui réalisés en Scala, essentiellement pour gagner en performances, mais ce choix n'est pas uniforme. Ainsi, au moment de l'adoption de Scala, le but était de laisser le frontend Twitter.com en Ruby on Rails et réaliser en priorité le redéveloppement du backend en Scala. Finalement, Scala s'est aussi imposé sur le frontend tant les problèmes de montée en charge explosive de Twitter étaient difficiles à gérer en Ruby. 

architecture du frontend de twitter.
Architecture du frontend de Twitter. © Twitter

Scala cohabite avec Java sur le backend Twitter

C'est avec Storm que Twitter identifie, au fil de l'eau, les tendances émergentes

Côté backend, Scala n'a pas été imposé aux développeurs. Ainsi, pour créer leur outil de calcul temps réel Storm, les ingénieurs du site ont préféré la solution Java / Clojure. Cette plateforme logicielle permet à Twitter de réaliser des calculs en temps réel pour traiter les flux de tweets, par exemple. C'est avec Storm que Twitter identifie, au fil de l'eau, les "Tending Topics" / tendances émergentes. Twitter a aussi retenu Java pour redévelopper son moteur de recherche, Blender, une architecture fortement distribuée inspirée de Lucene.

Néanmoins si beaucoup de lignes de code Ruby on Rails ont été remplacées par du code Scala, c'est aussi le cas du côté de l'infrastructure Big Data où Scala remplace peu à peu les traitements qui étaient jusqu'ici développé en langage Pig. Les développeurs utilisent l'IDE IntelliJ IDEA avec son plugin pour SBT (Simple Build Tool). Pour tester ses applications Twitter s'appuie sur la solution de génération de charge Iago. Celle-ci, en lien avec Apache Mesos qui pilote les serveurs, génère la charge de traitement voulue par les testeurs afin de stresser le composant et voir s'il pourra passer l'épreuve de la production sans encombre.

Twitter n'utilise pas Docker pour déployer les applications sur son infrastructure, mais les solutions Apache Aurora et Mesos pour gérer ses data centers. Ces briques open source permettent aux ingénieurs d'automatiser au maximum la gestion de leurs serveurs.

Twitter / Ruby on Rails