211service.com
Le secret de la croissance de Twitter
Au Salon Web 2.0 Aujourd'hui à San Francisco aujourd'hui, Alex Payne de Twitter a discuté des détails techniques du langage de programmation qu'il espère pouvoir aider son entreprise à gérer la hausse du trafic qu'elle a connue au cours des dernières années. La société laisse derrière elle un langage de programmation qui lui a causé beaucoup de souffrance dans le passé, et adopte à la place un nouveau langage quelque peu obscur appelé Scala.
Un peu de contexte : Twitter, un service qui permet aux gens de publier des messages de 140 caractères à des amis et au public, a été lancé en 2006 et compte aujourd'hui environ huit millions d'utilisateurs uniques. Lorsqu'une personne publie un court message sur Twitter, le service le publie sur le Web et l'envoie aux téléphones portables et aux applications logicielles Twitter. Le concept est simple, mais sous le capot, la technologie est plus compliquée.
Le langage de programmation Web populaire Ruby on Rails est responsable de l'apparence de l'interface utilisateur de Twitter, ainsi que de celle de nombreux autres sites Web. Étant donné que l'interface utilisateur, connue sous le nom de frontal, reposait sur Ruby, il était également logique d'utiliser Ruby pour les opérations de back-end telles que la mise en file d'attente des messages. Mais à mesure que la popularité de Twitter augmentait, le back-end construit par Ruby n'était pas en mesure de gérer le torrent de messages qui lui arrivait – une situation qui a créé la popularité soudaine du Échec Baleine , le message d'erreur que Twitter envoie aux utilisateurs chaque fois que le service plante.
L'équipe Twitter s'est donc tournée vers Échelle , un langage de programmation avec ses origines au travail par Martin Odersky , professeur à EPFL à Lausanne, en Suisse, vers 2003. Au cours de sa présentation, Payne, qui écrit également un livre sur la langue, a expliqué que Scala présente de nombreux avantages des autres langues, mais sans les inconvénients. Certaines des caractéristiques qui rendent Scala si attrayant pour Twitter sont qu'il est capable de gérer efficacement le traitement simultané, c'est-à-dire des instructions distinctes qui doivent utiliser les ressources du système en même temps. Ceci est utile lorsque les messages de millions de personnes doivent être envoyés instantanément à différents appareils dans le monde entier.
Il est également flexible à utiliser pour les programmeurs, explique Payne. Si un programmeur veut plus de structure, alors Scala propose une structure, mais s'il veut plus de programmation libre, cela le permet également. Et surtout, pour Payne et les ingénieurs de Twitter, Scala est un nouveau langage passionnant et magnifique qui maintient l'engagement de l'équipe. Les programmeurs ont encore la possibilité de sentir qu'ils contribuent au développement de quelque chose de nouveau et de frais. Ce n'est pas le cas avec des langages plus établis, comme Java ou C++.
Scala n'est pas parfait, note Payne, mais ses avantages dépassent de loin ses inconvénients. L'inconvénient le plus flagrant est qu'il est quelque peu difficile à apprendre car il a une tonne de fonctionnalités et une syntaxe avec laquelle certains programmeurs pourraient ne pas être familiers, dit-il. De plus, il s'agit d'un produit relativement nouveau, ce qui signifie qu'il n'a pas fait ses preuves. Mais Payne dit que lui et Twitter sont prêts à prendre le risque car le langage a déjà bien fonctionné dans un certain nombre de cas de test.
À l'heure actuelle, le service de Twitter est un hybride de langages de programmation, dit Payne. L'interface utilisateur fonctionne sur Ruby on Rails, ce qui est bien pour les personnes qui cliquent sur les pages Web, dit-il. Mais d'ici la fin de l'année, Twitter espère disposer d'un ensemble de services en arrière-plan entièrement écrits en Scala. Et c'est le plan de l'entreprise de s'assurer que tous les services tiers qui se connectent à Twitter via l'interface de programmation d'application (API) passent par le code Scala, en contournant complètement Ruby on Rails. Lorsque vous parlez d'un tas de programmes atteignant rapidement l'API, Payne dit : Nous avons découvert que nous pouvons mieux optimiser les choses… en utilisant Scala.