Livre Blanc Web temps réel - Node JS

  • View
    773

  • Download
    1

Embed Size (px)

Text of Livre Blanc Web temps réel - Node JS

  • 1. IntroductionOn parle beaucoup de Node.jsLes discussions autour de Node.js sont de plus en plusintenses, mme au sein de TheCodingMachine. Alorspourquoi Node.js fait-il tellement de buzz ?Au fait, Node.js, cest quoi ?Node.js est un environnement (un toolkit) permettantdedvelopper un serveur Event-Driven en JavaScript. Entermes plus simples, cela signifie que les oprations delecture ou dcriture sont parrallliss contrairementaufonctionnement en mode thread o les oprations sontensrie.A quoi a sert ?Les applications qui ncessitent du temps rel (par exempledes cours de bourse ou un chat), des applicationsconsommatrices en ressources telles que le streaming,lupload de fichiers etc. De manire gnrale, toutes lesapplications o la vitesse dexcution est un paramtre trsimportant. 2

2. Comment a marche ?Comprendre le fonctionnement du Event-drivenUne image frquemment employe pour dcrire le mode deprogrammation Event-driven est celle dune file de fast-food.Dans un modle fonctionnant dans un mode Thread (la plupartdes serveurs web actuels), le principe est dattendre pourcommander son menu puis dattendre que la commande soitprte. La personne situe derrire vous ne pourra pas passer sacommande tant que vous naurez pas reu la votre.Dans un mode Event-driven , lordre est pass et vousattendez votre commande en dehors de la queue. Ainsi, lapersonne situe derrire vous peut passer sa commande sansattendre.3 3. Comment a marche ?Illustration de la cinmatique Node.js1. Votre navigateur fait une demande pour recevoir lapage1. html au serveur Node.js2. Le serveur Node accepte votre requte et appelle unefonction pour renvoyer la page3. Tandis que le serveur Node attend la page (lecturedisque), il procde au traitement de la requte suivante4. Lorsque la page est retourne par la fonction, unefonction de callback est insre dans la file dattente duserveur Node5. Le serveur Node excute la fonction de callback qui,dans ce cas, renvoie la page1.html votrenavigateur. 4 4. AvantagesLintrt de cette nouvelle architecture ?1. Elle est trs rapide. Par exemple, une architectureNode.js/MongoDB permet denvoyer 600 e-mails en 3secondes tandis quune architecture classique PHP/MySQL le fait en 30 secondes.2. La plupart des dveloppeurs web connaissent JavaScript(au moins en surface). Aussi, trouver des comptencesest trs simple. Il ny a que la notion de callback ouclosure comprendre pour pouvoir dvelopper.3. Elle permet duniformiser le langage de dveloppementde toute la plateforme. Ct client (navigateur) et ctserveur.4. Les fonctionnalits que permettent cette nouvellearchitecture sont dans lair du temps. Par exemple, les filsde discussions qui se mettent jour automatiquement(rseaux sociaux), les outils de collaboration (chat,interactions sur un document etc.). Elle va dans le sensdune exprience utilisateur de plus en plus riche entermes dinteractions, simple (donc viter de changer depage par exemple) et dont la rponse est trs rapide.5. Flash est dclinant (au profit justement de JavaScript).Tandis que Node.js vient avec Socket.IO et permet doncde grer de manire efficace le temps rel.6. Parce que cette architecture est conome en termes deressources matrielles. et puis, personne naurait pari sur le fait que JavaScriptdevienne un standard pour les navigateurs ! 5 5. InconvnientsQuelles sont les limites ?Node.js a encore les dfauts de sa jeunesse. Cettearchitecture ne propose que peu doutils. Par exemple sur lagestion des tests, bibliothques de fonction etc. Mme sicette offre est en train de se constituer, il faudra du tempsavant que nmergent des standards.Dbugger des programmes crits en Node.js peut tre longet fastidieux. Au-del, maintenir un programme enJavaScript est complexe car ce langage est trs permissifaussi, la programmation doit faire preuve dune granderigueur.Par exemple, si vous ne devez que servir des pages webavec des besoins en performance raisonnable, nous vousrecommandons vivement de rester sur des architectures plusclassiques (par exemple Apache/PHP/MySQL). Cesarchitectures proposent aussi des outils complets danscertains domaines. Par exemple, si vous souhaitezdvelopper un site qui doit grer beaucoup de contenus oufaire du e-Commerce, ne pas utiliser Drupal ou Magentoserait dommage (pour ne pas dire plus).Parce quil ny a quun thread, une action en erreur peutavoir des rpercussions sur tout le serveur. Contrairement des langages comme PHP qui cloisonnent chaque requtedans un processus isol.6 6. Environnement Node.jsQui utilise Node.js ?Des entreprises telles que LinkedIn, Microsoft, Wallmart ouencore eBay commencent utiliser Node.jsA noter, une initiative intressante de Yahoo! qui proposeCocktail, un environnement qui permet de dvelopper desapplications web sur diffrents types de plateformes, le toutbas en JavaScript (qui comprend Node.js).http://developer.yahoo.com/blogs/ydn/posts/2011/11/yahoo-announces-cocktails--shaken-not-stirred/La communautUne 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, NodePackage Manager, est trs efficace.7 7. ConclusionNode.js a remis sur le devant de la scne larchitecture Event-driven et a prouv que cette architecture tait laplus efficace pour les performances. Cependant, parce queNode ne supporte que lapproche Event-driven et que celle-ci demande un effort de dveloppement Node.js risque dese cantonner son domaine de prdilection le web tempsrel. Dans le futur, nous parions quune technologieregroupant le meilleur de lEvent-driven et du Thread verra lejour. Mongrel2, bien quincomplet, en montre la voie.TheCodingMachine prconise dutiliser Node.js de maniretactique sur des architectures mixtes. Selon lesfonctionnalits que lon souhaite dvelopper, il suffit utiliserPHP pour les parties les plus classiques et Node.js pour lesparties ncessitant du temps rel ou bien trsconsommatrices en termes de ressources.En revanche, utiliser Node.js pour migrer des applications detypes desktop qui manipulent un grand nombre de donnesvers le web (qui sont encore dveloppes en swing danscertain grand groupe) peut avoir du sens.Une tentative de prdiction (cest souvent dangereux) pourterminer. Comme le flash est amen moyen terme disparatre et que le casual gaming reste une tendanceforte. La technologie serveur Le Node.js serait-elle lavenir deces futurs jeux ? 8 8. 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 licensors permission.9