BT

Microsoft Propose un Module pour Mettre à l'Echelle des Applications Node.js Temps Réel

par Richard Seroter , traduit par Matthieu Lux le 08 juin 2013 |

Une nouvelle contribution Open-Source de Microsoft utilise le Service Bus de Windows Azure pour permettre la mise à l'échelle d'applications Node.js temps-réel. Ce module, appelé socket.io-servicebus, connecte plusieurs serveurs exécutant le module si populaire : Socket.IO. Cette contribution est un nouvel exemple de l'implication de Microsoft dans Node.js et qui l'intègre avec ses services et produits.

Socket.IO a été créé par le très prolifique Guillermo Rauch. Il permet aux développeurs d'utiliser les WebSockets pour réaliser des applications temps-réel avec Node.js et qui fonctionnent avec la plupart des navigateurs. Ce module majeur a été downloadé plus de 150 000 fois par mois par les développeurs qui veulent envoyer des messages du serveur vers tous ou certains des clients connectés. Un unique Node.js serveur avec Socket.IO peut gérer des centaines de connexions concurrentes, mais le défi arrive lorsqu'il faut créer des applications qui fonctionnent sur plusieurs serveurs. Socket.IO a ajouté récemment le support de "stores" qui permettent un stockage intermédiaire qui peut être partagé par plusieurs serveurs. Le module socket.io-servicebus de Microsoft utilise le Service Bus de Windows Azure comme stockage que chaque serveur Node.js peut utiliser pour distribuer les messages à ses clients connectés.

Microsoft a développé une affection toute particulière pour Node.js durant ces dernières années. Ils ont un centre de développement dédié à Node.js dans leur portail Windows Azure et proposent de nombreux tutoriaux et références pour les développeurs qui déploient des applications Node.js dans le Cloud de Microsoft. Ils ont également créé un certain nombre de modules Open-Source pour les développeurs Node.js. Le SDK Open-Source d'Azure pour les modules Node donne aux développeurs un accès facile à un sous ensemble de services inclus dans Windows Azure Storage (tables/queues/blobs), Windows Azure Service Bus, et Windows Azure SQL Database. De plus, le driver Node.js de Microsoft pour SQL Server offre une interface basique à Microsoft SQL Server pour les applications Node.js s'exécutant sur Microsoft Windows. Le créatif module Edge.js, créé par Tomasz Janczuk de chez Microsoft, intègre le code .Net dans le code Node.js donnant aux développeurs accès au robuste framework .Net lorsque cela est nécessaire. Microsoft a même ajouté des capacités de développement et de déploiement Node.js à leur environnement de développement gratuit : WebMatrix.

Pour en apprendre plus à propos de ce nouveau module, InfoQ a contacté Glenn Block qui est Program Manager sénior dans l'équipe Windows Azure et évangéliste des initiatives Open Source de Microsoft.

InfoQ : Quel problème de Socket.IO ce module résout-il ?

Block : Le module permet de mettre à l'échelle des applications utilisant Socket.IO sur plusieurs instances de Node s'exécutant sur différentes machines physiques ou VMs. Il peut être utilisé pour mettre à l'échelle une seule application qui est localisée sur plusieurs instances d'un même datacenter, ou même synchroniser des données temps réelle avec des instances distribuées dans plusieurs datacenters y compris des datacenters privés. Les applications elles-mêmes n'ont pas à être hébergées dans Windows Azure ce qui pourra être utile plus tard.

InfoQ : Pourquoi le Windows Azure Service Bus ? Qu'est ce qui en fait le bon service Windows Azure pour fournir cette fonctionnalité ?

Block : Windows Azure Service Bus est hautement scalable et est une plateforme de messaging pub/sub redondé qui est hébergée dans Windows Azure qui est géolocalisé. Cela le rend idéal pour gérer ce genre de scénario de mise à l'échelle.

InfoQ : Comment cela fonctionne exactement ?

Block : Socket.IO propose une abstraction pour les "store" qui déterminent où les messages seront stockés. Avec notre nouveau modèle, nous proposons un SbStore qui va utiliser des services bus topics pour synchroniser de multiples instances de Socket.IO qui écoutent sur ce topic. Lorsqu'un message est reçu par un client Socket.IO, le message va être envoyé au store et voyage via Service Bus jusqu'aux autres instances. Chaque instance de Socket.IO communique directement avec les clients auxquels elle est connectée. Il est important de préciser qu'il s'agit de notre première release et que ce sera la première fois qu'on le diffusera. Il est très probable que nous améliorerons les performances à partir des retours des utilisateurs.

InfoQ : Pensez-vous que cette possibilité de mise à l'échelle va permettre de nouveaux scénarios où l'on pourra utiliser Socket.IO alors qu'on ne le pouvait pas avant ?

Block : Pour les applications hébergées sur Windows Azure, oui car le service lui-même est sur Azure. Il y a d'autres alternatives telle que le RedisStore qui permet d'utiliser Redis, une base de données mémoire qui, combiné à des services comme Redis to Go peut offrir une expérience similaire.

InfoQ : Microsoft donne l'impression de beaucoup apprécier Node.js. De nombreux modules intéressants et tutoriaux ont été créés et partagés. Pensez-vous que Node répond à un besoin spécifique qui n'est pas encore adressé par les autres produits Microsoft ? Où est ce que Microsoft s'approprie une plateforme populaire pour montrer leur capacité d'intégration ?

Block : C'est une très bonne question. Je ne vois pas cela comme l'un ou l'autre. Node est une plateforme très intéressante qui gagne en popularité et qui a un écosystème que certains développeurs préfèrent. Notre support de Node.js dans Windows Azure est réellement une volonté d'offrir des alternatives aux développeurs et amener plus de développeurs à notre plateforme en particulier ceux qui soit ne développent pas en .Net ou qui mettent en place des solutions hybrides.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2013 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT