JavaScript : Twitter a transf�r� tout son trafic mobile vers un nouveau stack
Node.js, Express et React
Un d�veloppeur de Twitter a publi� un tweet indiquant que le r�seau social a transf�r� tout son trafic mobile vers un nouveau stack Node.js, Express et React PWA. Toujours selon l�employ� du r�seau social, l��quipe de d�veloppement a travaill� pendant pr�s d�une ann�e pour assurer cette transition.
La pile JavaScript de Twitter a �t� en production depuis neuf mois, a dit Nicolas (pseudonyme du d�veloppeur). Lors des deux derni�res ann�es, l�architecture servant les visiteurs d�connect�s a �t� compos�e de Scala, Google Closure Templates, et un peu de JavaScript. Il y a quelques mois, un d�veloppeur front-end de Twitter a commenc� � tester Node.js avec une fraction de ces utilisateurs. Enfin cette semaine, un autre d�veloppeur a finalis� le transfert de l�ensemble du trafic vers l�application JavaScript.
L��quipe de d�veloppement n�a pas laiss� tomber Scala pour le c�t� serveur, il s�agit juste d�une impl�mentation de Node.js en tant qu�interm�diaire entre le front-end et le back-end. Cette approche dite BFF (Backend For Frontends) a quelques avantages notamment au niveau de la performance. Au lieu de communiquer avec l�ensemble des services du back-end, chaque application client � un serveur d�orchestration qui re�oit tous les appels.
�volution de Twitter
Lors de ses d�buts en 2006, Twitter avait utilis� Ruby on Rails pour son stack back-end. Rails est un framework web libre �crit en Ruby. Il suit le motif de conception mod�le-vue-contr�leur aussi nomm� MVC. En tant que framework, il propose une structure au programmeur qui lui permet de d�velopper plus vite et plus intuitivement.
En 2008, le r�seau social a d� impl�menter Memcache et Redis pour faire face � des probl�mes de performance. Mais c�est � partir de 2009 que la base d�utilisateurs du site a litt�ralement explos� favoris�e par plusieurs �v�nements comme la coupe du monde de 2010. Cette augmentation massive des visiteurs a r�v�l� de graves probl�mes et d�fis de l�architecture du r�seau social. Elle �tait fragile et les d�veloppeurs se plaignaient d�une API lente du service. Le service devait ajouter plus de serveurs pour r�pondre aux requ�tes de plus en plus nombreuses et garder la performance du site. Au lieu de se consacrer au d�veloppement et � l�impl�mentation de nouvelles fonctionnalit�s, les d�veloppeurs �taient dans l�obligation de faire un compromis entre flexibilit� et performance.
�volution du nombre d'utilisateurs de Twitter depuis son lancement
Le nombre d�utilisateurs continuait de croitre rapidement, pour cette raison, les ing�nieurs ont d�cid� d�explorer de nouvelles voies d�optimisation de l�architecture du site. Ils se plaignaient surtout de probl�mes de scalabilit� de Rails. Apr�s avoir test� JVM un moment, ils ont �t� �blouis par le niveau de performance atteint.
Rails est une solution parfaitement �volutive aujourd�hui, mais �a ne veut pas dire qu�elle peut magiquement s�adapter pour chaque type d�application donn�. Contrairement aux id�es re�ues, Twitter n�est pas pass� � Java, mais plut�t � Scala qui est pr�vu pour �tre compil� en bytecode Java (ex�cutable sur la JVM). Il faut savoir que Scala est parfaitement adapt�e pour les services de messagerie en temps r�el qui fonctionnent un peu comme Twitter.
L�utilisation de Rails au d�but de Twitter �tait-elle une erreur ?
Le passage de Twitter d�une technologie � une autre est souvent mal interpr�t� par les observateurs. Beaucoup pensent que le r�seau social a fait une erreur lorsqu�il a opt� pour Rails lors de ses d�buts. Bien �videmment ces dires ne tiennent pas, parce que le r�seau social tel qu�il est aujourd�hui est radicalement diff�rent et a donc besoin de diff�rentes technologies.
Twitter a �t� lanc� par deux personnes et la premi�re version du site a �t� d�velopp�e en quelques jours seulement. Ils avaient besoin d�une plateforme qui devait avoir un rendement consid�rable compte tenu des heures de d�veloppement investies. Cela leur a permis d�introduire des changements rapides pour r�pondre aux besoins des utilisateurs, car il n�avait aucune id�e sur l��volution � long terme de leur jeune plateforme. L�engouement pour Twitter �tait l�, mais personne ne savait quelle direction prendre.
Quelques ann�es plus tard et les choses ont chang� pour l��quipe de d�veloppement. Maintenant que le produit est plus stable et ne change plus au m�me rythme, leur principal souci aujourd�hui est de g�rer l��norme pression sur le service. La mise � jour en temps r�el de la fonctionnalit� de recherche par exemple a eu un vif succ�s que personne n�a anticip�.
Alors que Scala/Java est probablement adapt� aux besoins de Twitter aujourd�hui, il aurait �t� inconcevable de l�utiliser d�s le d�but de la plateforme pour plusieurs raisons. De un, Scala a �t� encore jeune et immature et parce qu�aussi Java n�aurait pas pu donner la flexibilit� et l�agilit� assur�es par Rails.
Source : Twitter
Et vous ?
Qu'en pensez-vous ?
Est-ce que vous aussi votre entreprise a migr� vers JavaScript c�t� serveur ou pas ?
Que pensez-vous de la performance de Node.js et Angular ?
Est-ce que vous aussi vous avez trouv� Ruby on Rails peu performant ? Si oui, qu'avez-vous utilis� ?
Partager