Sunteți pe pagina 1din 10

Introduction

On parle beaucoup de Node.js


Les discussions autour de Node.js sont de plus en plus intenses, mme au sein de TheCodingMachine. Alors pourquoi Node.js fait-il tellement de buzz ?

Au fait, Node.js, cest quoi ?


Node.js est un environnement (un toolkit) permettant dvelopper un serveur Event-Driven en JavaScript. termes plus simples, cela signifie que les oprations lecture ou dcriture sont parrallliss contrairement fonctionnement en mode thread o les oprations sont srie. de En de au en

A quoi a sert ?
Les applications qui ncessitent du temps rel (par exemple des cours de bourse ou un chat), des applications consommatrices en ressources telles que le streaming, lupload de fichiers etc. De manire gnrale, toutes les applications o la vitesse dexcution est un paramtre trs important.

Comment a marche ?
Comprendre le fonctionnement du Event-driven
Une image frquemment employe pour dcrire le mode de programmation Event-driven est celle dune file de fast-food. Dans un modle fonctionnant dans un mode Thread (la plupart des serveurs web actuels), le principe est dattendre pour commander son menu puis dattendre que la commande soit prte. La personne situe derrire vous ne pourra pas passer sa commande tant que vous naurez pas reu la votre.

Dans un mode Event-driven , lordre est pass et vous attendez votre commande en dehors de la queue. Ainsi, la personne situe derrire vous peut passer sa commande sans attendre.

Comment a marche ?
Illustration de la cinmatique Node.js
1. Votre navigateur fait une demande pour recevoir la page1. html au serveur Node.js 2. Le serveur Node accepte votre requte et appelle une fonction pour renvoyer la page 3. Tandis que le serveur Node attend la page (lecture disque), il procde au traitement de la requte suivante 4. Lorsque la page est retourne par la fonction, une fonction de callback est insre dans la file dattente du serveur Node 5. Le serveur Node excute la fonction de callback qui, dans ce cas, renvoie la page1.html votre navigateur.

Avantages
Lintrt de cette nouvelle architecture ?
1. Elle est trs rapide. Par exemple, une architecture Node.js/MongoDB permet denvoyer 600 e-mails en 3 secondes tandis quune architecture classique PHP/ MySQL le fait en 30 secondes. 2. Une architecture comprenant Node.js est galement facilement scalable. En effet, contrairement des architectures classiques, il suffit d'ajouter une instance Node.js pour amliorer la capacit de rponse. Si l'on combine cela sa rapidit d'excution, Node js est un bon choix pour mettre en place une architecture de type Cloud. Cependant, comme la mmoire n'est pas partage entre les instances, il est ncessaire d'utiliser des petits "tricks" ou des modules comme Cluster qui permettent de simplifier le dploiement de plusieurs instances. 3. La plupart des dveloppeurs web connaissent JavaScript (au moins en surface). Aussi, trouver des comptences est trs simple. Il ny a que la notion de callback ou closure comprendre pour pouvoir dvelopper. 4. Elle permet duniformiser le langage de dveloppement de toute la plateforme. Ct client (navigateur) et ct serveur.

Avantages
Lintrt de cette nouvelle architecture ?
(suite) 5. Les fonctionnalits que permettent cette nouvelle architecture sont dans lair du temps. Par exemple, les fils de discussions qui se mettent jour automatiquement (rseaux sociaux), les outils de collaboration (chat, interactions sur un document etc.). Elle va dans le sens dune exprience utilisateur de plus en plus riche en termes dinteractions, simple (donc viter de changer de page par exemple) et dont la rponse est trs rapide. 6. Flash est dclinant (au profit justement de JavaScript). Tandis que Node.js vient avec Socket.IO et permet donc de grer de manire efficace le temps rel. 7. Parce que cette architecture est conome en termes de ressources matrielles. et puis, personne naurait pari sur le fait que JavaScript devienne un standard pour les navigateurs !

Inconvnients
Quelles sont les limites ?
Node.js a encore les dfauts de sa jeunesse. Cette architecture ne propose que peu doutils. Par exemple sur la gestion des tests, bibliothques de fonction etc. Mme si cette offre est en train de se constituer, il faudra du temps avant que nmergent des standards. Dbugger des programmes crits en Node.js peut tre long et fastidieux. Au-del, maintenir un programme en JavaScript est complexe car ce langage est trs permissif aussi, la programmation doit faire preuve dune grande rigueur. Par exemple, si vous ne devez que servir des pages web avec des besoins en performance raisonnable, nous vous recommandons vivement de rester sur des architectures plus classiques (par exemple Apache/PHP/MySQL). Ces architectures proposent aussi des outils complets dans certains domaines. Par exemple, si vous souhaitez dvelopper un site qui doit grer beaucoup de contenus ou faire du e-Commerce, ne pas utiliser Drupal ou Magento serait dommage (pour ne pas dire plus). Parce quil ny a quun thread, une action en erreur peut avoir des rpercussions sur tout le serveur. Contrairement des langages comme PHP qui cloisonnent chaque requte dans un processus isol.

Environnement Node.js
Qui utilise Node.js ?
Des entreprises telles que LinkedIn, Microsoft, Wallmart ou encore eBay commencent utiliser Node.js A noter, une initiative intressante de Yahoo! qui propose Cocktail, un environnement qui permet de dvelopper des applications web sur diffrents types de plateformes, le tout bas en JavaScript (qui comprend Node.js). http://developer.yahoo.com/blogs/ydn/posts/2011/11/ yahoo-announces-cocktails--shaken-not-stirred/

La communaut
Une trs forte communaut se dveloppe autour de Node.js. Dores et dj, plus de 17.000 librairies sont proposes http://npmjs.org - et le gestionnaire de package, Node Package Manager, est trs efficace.

Conclusion
Node.js a remis sur le devant de la scne larchitecture Event-driven et a prouv que cette architecture tait la plus efficace pour les performances. Cependant, parce que Node ne supporte que lapproche Event-driven et que celleci demande un effort de dveloppement Node.js risque de se cantonner son domaine de prdilection le web temps rel. Dans le futur, nous parions quune technologie regroupant le meilleur de lEvent-driven et du Thread verra le jour. Mongrel2, bien quincomplet, en montre la voie. TheCodingMachine prconise dutiliser Node.js de manire tactique sur des architectures mixtes. Selon les fonctionnalits que lon souhaite dvelopper, il suffit utiliser PHP pour les parties les plus classiques et Node.js pour les parties ncessitant du temps rel ou bien trs consommatrices en termes de ressources. En revanche, utiliser Node.js pour migrer des applications de types desktop qui manipulent un grand nombre de donnes vers le web (qui sont encore dveloppes en swing dans certain grand groupe) peut avoir du sens. Une tentative de prdiction (cest souvent dangereux) pour terminer. Comme le flash est amen moyen terme disparatre et que le casual gaming reste une tendance forte. La technologie serveur Le Node.js serait-elle l'avenir de ces futurs jeux ?

The licensor permits others to copy, distribute, display, and perform the work. In return, licenses must give the original author credit. The licensor permits others to copy, distribute, display, and perform the work. In return, licenses may not use the work for commercial purposes -- unless they get the licensor's permission.

10

S-ar putea să vă placă și