Un post pour ouvrir le capot et parler du moteur utilisé pour la chatroom de niptech.
Même si les fonctionnalités sont assez classiques pour l’instant, comme nous sommes fun chez niptech, nous utilisons un ensemble de technologies modernes et puissantes qui ont été créées pour supporter des volumes très importants. Pour information, ce sont les technologies qu’utilisent twitter, Klout ou LinkedIn.
Pourquoi utiliser de nouvelles technologies ?
Tout d’abord un peu d’histoire… Jusqu’à 2007/2008, les générations successives de processeurs voyaient leur fréquence augmenter régulièrement si bien que les applications gagnaient en performance à chaque upgrade machine. Le problème est que plus la fréquence est élevée, plus les processeurs chauffent et il n’a plus été possible d’augmenter la fréquence tout en conservant ou diminuant la taille des machines. Ca cramait… Les fondeurs ont donc multiplié le nombre de coeurs par processeur pour augmenter la capacité de traitement. Sauf que les stacks applicatifs et les applications n’étaient pas conçus pour faire les traitements en parallèle et pour la première fois, on va vu les performances diminuer avec les nouvelles générations de processeurs. Il a donc fallu utiliser d’autres choses…
Parmi ces autres choses, il y a notamment le langage Scala qui est fonctionnel, le framework Akka qui permet de faire des traitements en parallèle sans avoir à gérer soi-même les threads et la stack web PlayFramework. Ce sont ces outils que nous utilisons pour la chatroom niptech. Ils sont packagés et supportés par la société Typesafe et ont en commun d’être légers et de ne pas encapsuler la complexité mais plutôt d’offrir des outils puissants pour la gérer. Typesafe est l’une des sociétés de la Silicon Valley actuellement les plus regardées par les développeurs, les éditeurs et les investisseurs. Elle compte parmi ses équipes des personnages aussi prestigieux que James Gosling l’inventeur de Java (Advisor), Rod Johnson, le créateur de Spring et ancien CEO de SpringSource (Board of Directors), Jonas Boner CTO et créateur de Akka ou Martin Odersky le créateur du langage Scala. L’une des originalités du Stack est que tous les éléments ont été créés par des européens. Martin Odersky est suisse et professeur à l’EPFL, Jonas Boner est suédois et Guillaume Bort le créateur de PlayFramework est français.
Pourquoi ces outils sont-ils puissants ?
Parce qu’ils permettent de faire de la programmation asynchrone, non bloquante et reactive. Décortiquons chaque terme en restant lisible pour les non professionnels du développement quitte à faire quelques approximations.
La programmation asynchrone consiste à créer des algorithmes qui lancent l’exécution de traitements sans devoir attendre le résultat de chacun pour poursuivre l’exécution. Elle permet de réaliser des appels non bloquants, c’est à dire d’utiliser les ressources du système (disque, réseau, …) et de continuer de bosser pendant que le reste du système travaille. Enfin, la programmation reactive permet de traiter les flux de données au fil de l’eau sans devoir attendre que la totalité des données soit chargée pour commencer le traitement. En gros, on peut faire du streaming sur tout type de données.
Tout ça est possible et surtout naturel avec le stack Typesafe alors que c’est très galère et pas naturel du tout avec les technologies classiques. Et si l’on veut faire des applications qui utilisent du BigData ou qui peuvent accepter des milliers de requêtes concurrentes sans devoir claquer tout l’argent des investisseurs dans un abonnement Amazon et tout redévelopper une fois qu’on dépasse 1000 utilisateurs, on est obligé d’utiliser ce type de technologies.
Pour aller plus loin
Pour aller plus loin, vous pouvez commencer par installer le stack Typesafe (http://typesafe.com/stack/download-agreed), forker le projet de la chatroom sur github (https://github.com/Niptech/niptech-live) et jouer avec le code. Ensuite si vous avez des questions je suis à votre service. Si vous avez apprécié l’article, dites le dans les commentaires. J’en rédigerai un prochain qui ira plus en détail sur le design de la chatroom et avec du vrai code dedans…
9 réponses à “Sous le capot de la chatroom niptech”
J’ai vraiment apprécié l’article !
C’est une fierté nationale en Suisse, Scala, puisque le langage a été conçu en partie à Lausanne! Ca colle donc tout naturellement pour NipTech ;) http://fr.wikipedia.org/wiki/Scala_%28langage%29
Super article, j’aime toujours voir les coulisses et le fonctionnement d’une machine, ici un machine à live. Merci Fabrice beau travail.
Merci Fabrice pour cet article ! Cela m’a donné envie de tenter la même chose avec Tornado/Python pour comparer les performances sur des exemples simples comme celui là ;-)
Fabrice, un gros merci! C’était très bien vulgarisé! Quel type d’hébergement il faut pour « la salle d’échange Niptech » (oui je pense qu’il nous faut un nom français :D ) ?
Tu peux utiliser Heroku par exemple. J’ai visionné un très chouette introduction à Scala par Typesafe hier, ça vaut la peine pour comprendre les fondamentaux (mais c’est évidemment une fois de plus en anglais): https://www.youtube.com/watch?v=RTK4eOZEsog
Vivement le prochain article !
concis, précis … on a tout compris, merci !
juste un message pour dire que je suis fan du « nouveau » niptech : nouvelle chatroom, nouveau blog, plus ou moins nouvelle façon de presenter l’emission …
bravo