SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Introduction


On parle beaucoup de Node.js

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


Au fait, Node.js, c’est quoi ?

Node.js est un environnement (un toolkit) permettant      de
développer un serveur «  Event-Driven  » en JavaScript.   En
termes plus simples, cela signifie que les opérations     de
lecture ou d’écriture sont parrallélisés contrairement    au
fonctionnement en mode thread où les opérations sont      en
série.


A quoi ça sert ?

Les applications qui nécessitent du temps réel (par exemple
des cours de bourse ou un chat), des applications
consommatrices en ressources telles que le streaming,
l’upload de fichiers etc. De manière générale, toutes les
applications où la vitesse d’exécution est un paramètre très
important.




                                                           2	
  
Comment ça marche ?

Comprendre le fonctionnement du Event-driven

Une image fréquemment employée pour décrire le mode de
programmation « Event-driven » est celle d’une file de fast-food.
Dans un modèle fonctionnant dans un mode Thread (la plupart
des serveurs web actuels), le principe est d’attendre pour
commander son menu puis d’attendre que la commande soit
prête. La personne située derrière vous ne pourra pas passer sa
commande tant que vous n’aurez pas reçu la votre.




Dans un mode «  Event-driven  », l’ordre est passé et vous
attendez votre commande en dehors de la queue. Ainsi, la
personne située derrière vous peut passer sa commande sans
attendre.




                                                                3	
  
Comment ça marche ?

Illustration de la cinématique Node.js

1.  Votre navigateur fait une demande pour recevoir la
    « page1. html » au serveur Node.js
2.  Le serveur Node accepte votre requête et appelle une
    fonction pour renvoyer la page
3.  Tandis que le serveur Node attend la page (lecture
    disque), il procède au traitement de la requête suivante
4.  Lorsque la page est retournée par la fonction, une
    fonction de callback est insérée dans la file d’attente du
    serveur Node
5.  Le serveur Node exécute la fonction de callback qui,
    dans ce cas, renvoie la «  page1.html  » à votre
    navigateur.




                                                             4	
  
Avantages

L’intérêt de cette nouvelle architecture ?

1.  Elle est très rapide. Par exemple, une architecture
    Node.js/MongoDB permet d’envoyer 600 e-mails en 3
    secondes tandis qu’une architecture classique PHP/
    MySQL le fait en 30 secondes.
2.  La plupart des développeurs web connaissent JavaScript
    (au moins en surface). Aussi, trouver des compétences
    est très simple. Il n’y a que la notion de callback ou
    closure à comprendre pour pouvoir développer.
3.  Elle permet d’uniformiser le langage de développement
    de toute la plateforme. Côté client (navigateur) et côté
    serveur.
4.  Les fonctionnalités que permettent cette nouvelle
    architecture sont dans l’air du temps. Par exemple, les fils
    de discussions qui se mettent à jour automatiquement
    (réseaux sociaux), les outils de collaboration (chat,
    interactions sur un document etc.). Elle va dans le sens
    d’une expérience utilisateur de plus en plus riche en
    termes d’interactions, simple (donc éviter de changer de
    page par exemple) et dont la réponse est très rapide.
5.  Flash est déclinant (au profit justement de JavaScript).
    Tandis que Node.js vient avec Socket.IO et permet donc
    de gérer de manière efficace le temps réel.
6.  Parce que cette architecture est économe en termes de
    ressources matérielles.


… et puis, personne n’aurait parié sur le fait que JavaScript
devienne un standard pour les navigateurs !




                                                               5	
  
Inconvénients

Quelles sont les limites ?

Node.js a encore les défauts de sa jeunesse. Cette
architecture ne propose que peu d’outils. Par exemple sur la
gestion des tests, bibliothèques de fonction etc. Même si
cette offre est en train de se constituer, il faudra du temps
avant que n’émergent des standards.


Débugger des programmes écrits en Node.js peut être long
et fastidieux. Au-delà, maintenir un programme en
JavaScript est complexe car ce langage est très permissif
aussi, la programmation doit faire preuve d’une 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
développer un site qui doit gérer beaucoup de contenus ou
faire du e-Commerce, ne pas utiliser Drupal ou Magento
serait dommage (pour ne pas dire plus).


Parce qu’il n’y a qu’un thread, une action en erreur peut
avoir des répercussions sur tout le serveur. Contrairement à
des langages comme PHP qui cloisonnent chaque requête
dans un processus isolé.




                                                            6	
  
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 intéressante de Yahoo! qui propose
Cocktail, un environnement qui permet de développer des
applications web sur différents 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 très forte communauté se développe autour de Node.js.
D’ores et déjà, plus de 17.000 librairies sont proposées -
http://npmjs.org - et le gestionnaire de package, Node
Package Manager, est très efficace.




                                                            7	
  
Conclusion

Node.js a remis sur le devant de la scène l’architecture
«  Event-driven  » et a prouvé que cette architecture était la
plus efficace pour les performances. Cependant, parce que
Node ne supporte que l’approche Event-driven et que celle-
ci demande un effort de développement Node.js risque de
se cantonner à son domaine de prédilection le web temps
réel. Dans le futur, nous parions qu’une technologie
regroupant le meilleur de l’Event-driven et du Thread verra le
jour. Mongrel2, bien qu’incomplet, en montre la voie.


TheCodingMachine préconise d’utiliser Node.js de manière
tactique sur des architectures mixtes. Selon les
fonctionnalités que l’on souhaite développer, il suffit utiliser
PHP pour les parties les plus classiques et Node.js pour les
parties nécessitant du temps réel ou bien très
consommatrices en termes de ressources.
En revanche, utiliser Node.js pour migrer des applications de
types desktop qui manipulent un grand nombre de données
vers le web (qui sont encore développées en swing dans
certain grand groupe) peut avoir du sens.


Une tentative de prédiction (c’est souvent dangereux) pour
terminer. Comme le flash est amené à moyen terme à
disparaître et que le casual gaming reste une tendance
forte. La technologie serveur Le Node.js serait-elle l'avenir de
ces futurs jeux ?




                                                               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 licensor's
                                                                               permission.




                                                                                          9	
  
Livre Blanc Web temps réel - Node JS

Contenu connexe

Tendances

Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoosejeromegn
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)guicara
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node jsHoracio Gonzalez
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Anthony Faucogney
 
publier une application Node sur heroku
publier une application Node sur herokupublier une application Node sur heroku
publier une application Node sur herokueric German
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA Cellenza
 
Geek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsGeek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsOLBATI
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartLa FeWeb
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement AndroidAnthony Faucogney
 
Node.js dans Azure
Node.js dans AzureNode.js dans Azure
Node.js dans AzureMicrosoft
 

Tendances (20)

Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Jquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter BootstrapJquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter Bootstrap
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
 
NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.
 
publier une application Node sur heroku
publier une application Node sur herokupublier une application Node sur heroku
publier une application Node sur heroku
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
CasperJS
CasperJSCasperJS
CasperJS
 
Geek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsGeek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.js
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android
 
Node.js dans Azure
Node.js dans AzureNode.js dans Azure
Node.js dans Azure
 

En vedette

Le web en temps réel - Socket.io - NodeJs
Le web en temps réel - Socket.io - NodeJsLe web en temps réel - Socket.io - NodeJs
Le web en temps réel - Socket.io - NodeJsThomas Ferney
 
Notifications - Building a transparent system
Notifications - Building a transparent systemNotifications - Building a transparent system
Notifications - Building a transparent systemJoão Lopes
 
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014Damien Boissin
 
Luminote, la veilleuse connectée dont vous avez toujours rêvé.
Luminote, la veilleuse connectée dont vous avez toujours rêvé.Luminote, la veilleuse connectée dont vous avez toujours rêvé.
Luminote, la veilleuse connectée dont vous avez toujours rêvé.HETIC
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Personnaliser un thème sous Wordpress
Personnaliser un thème sous WordpressPersonnaliser un thème sous Wordpress
Personnaliser un thème sous Wordpressdesigners interactifs
 

En vedette (9)

Le web en temps réel - Socket.io - NodeJs
Le web en temps réel - Socket.io - NodeJsLe web en temps réel - Socket.io - NodeJs
Le web en temps réel - Socket.io - NodeJs
 
Notifications - Building a transparent system
Notifications - Building a transparent systemNotifications - Building a transparent system
Notifications - Building a transparent system
 
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
 
Luminote, la veilleuse connectée dont vous avez toujours rêvé.
Luminote, la veilleuse connectée dont vous avez toujours rêvé.Luminote, la veilleuse connectée dont vous avez toujours rêvé.
Luminote, la veilleuse connectée dont vous avez toujours rêvé.
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
Le HTML5 & les API
Le HTML5 & les APILe HTML5 & les API
Le HTML5 & les API
 
Tendances Web Design 2017/2018
Tendances Web Design 2017/2018Tendances Web Design 2017/2018
Tendances Web Design 2017/2018
 
Personnaliser un thème sous Wordpress
Personnaliser un thème sous WordpressPersonnaliser un thème sous Wordpress
Personnaliser un thème sous Wordpress
 

Similaire à Livre Blanc Web temps réel - Node JS

JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?benjguin
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWinslo Nwan
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Introduction à DotNetNuke
Introduction à DotNetNukeIntroduction à DotNetNuke
Introduction à DotNetNukeMicrosoft
 
DotNetNuke aux TechDays 2012
DotNetNuke aux TechDays 2012DotNetNuke aux TechDays 2012
DotNetNuke aux TechDays 2012Cyril P
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 
Web 2.0 generalités, enjeux, et technologies
Web 2.0 generalités, enjeux, et technologiesWeb 2.0 generalités, enjeux, et technologies
Web 2.0 generalités, enjeux, et technologiesFoued Benoumhani
 
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloudStage de fin d’études – dotcloud
Stage de fin d’études – dotcloudJoffrey Fu Hrer
 

Similaire à Livre Blanc Web temps réel - Node JS (20)

JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Conférence #nwx - node.js - 20121023
Conférence #nwx - node.js - 20121023Conférence #nwx - node.js - 20121023
Conférence #nwx - node.js - 20121023
 
Framework JavaScript Web - Brief techno
Framework JavaScript Web - Brief technoFramework JavaScript Web - Brief techno
Framework JavaScript Web - Brief techno
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Introduction à DotNetNuke
Introduction à DotNetNukeIntroduction à DotNetNuke
Introduction à DotNetNuke
 
DotNetNuke aux TechDays 2012
DotNetNuke aux TechDays 2012DotNetNuke aux TechDays 2012
DotNetNuke aux TechDays 2012
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
Web 2.0 generalités, enjeux, et technologies
Web 2.0 generalités, enjeux, et technologiesWeb 2.0 generalités, enjeux, et technologies
Web 2.0 generalités, enjeux, et technologies
 
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloudStage de fin d’études – dotcloud
Stage de fin d’études – dotcloud
 

Plus de JEAN-GUILLAUME DUJARDIN (14)

PHP, the GraphQL ecosystem and GraphQLite
PHP, the GraphQL ecosystem and GraphQLitePHP, the GraphQL ecosystem and GraphQLite
PHP, the GraphQL ecosystem and GraphQLite
 
Do you speak technique ?
Do you speak technique ?Do you speak technique ?
Do you speak technique ?
 
Methode Agile
Methode Agile Methode Agile
Methode Agile
 
Conception d'un Extranet
Conception d'un ExtranetConception d'un Extranet
Conception d'un Extranet
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Modèle cahier des charges site web
Modèle cahier des charges site webModèle cahier des charges site web
Modèle cahier des charges site web
 
Gérer un pic d'audience
Gérer un pic d'audienceGérer un pic d'audience
Gérer un pic d'audience
 
3 piliers d'un bon référencement web
3 piliers d'un bon référencement web3 piliers d'un bon référencement web
3 piliers d'un bon référencement web
 
Brief Nouveaux outils collaboratifs
Brief Nouveaux outils collaboratifsBrief Nouveaux outils collaboratifs
Brief Nouveaux outils collaboratifs
 
Livre Blanc Sauvetage de projets
Livre Blanc Sauvetage de projetsLivre Blanc Sauvetage de projets
Livre Blanc Sauvetage de projets
 
Intranet 2.0
Intranet 2.0Intranet 2.0
Intranet 2.0
 
Hec Web Marketing
Hec Web MarketingHec Web Marketing
Hec Web Marketing
 
Livre blanc améliorez les performances de vos projets web - v1.1
Livre blanc   améliorez les performances de vos projets web - v1.1Livre blanc   améliorez les performances de vos projets web - v1.1
Livre blanc améliorez les performances de vos projets web - v1.1
 
TCM - Livre blanc sur les plateformes communautaires Open Source
TCM - Livre blanc sur les plateformes communautaires Open SourceTCM - Livre blanc sur les plateformes communautaires Open Source
TCM - Livre blanc sur les plateformes communautaires Open Source
 

Livre Blanc Web temps réel - Node JS

  • 1.
  • 2. Introduction On parle beaucoup de Node.js Les discussions autour de Node.js sont de plus en plus intenses, même au sein de TheCodingMachine. Alors pourquoi Node.js fait-il tellement de buzz ? Au fait, Node.js, c’est quoi ? Node.js est un environnement (un toolkit) permettant de développer un serveur «  Event-Driven  » en JavaScript. En termes plus simples, cela signifie que les opérations de lecture ou d’écriture sont parrallélisés contrairement au fonctionnement en mode thread où les opérations sont en série. A quoi ça sert ? Les applications qui nécessitent du temps réel (par exemple des cours de bourse ou un chat), des applications consommatrices en ressources telles que le streaming, l’upload de fichiers etc. De manière générale, toutes les applications où la vitesse d’exécution est un paramètre très important. 2  
  • 3. Comment ça marche ? Comprendre le fonctionnement du Event-driven Une image fréquemment employée pour décrire le mode de programmation « Event-driven » est celle d’une file de fast-food. Dans un modèle fonctionnant dans un mode Thread (la plupart des serveurs web actuels), le principe est d’attendre pour commander son menu puis d’attendre que la commande soit prête. La personne située derrière vous ne pourra pas passer sa commande tant que vous n’aurez pas reçu la votre. Dans un mode «  Event-driven  », l’ordre est passé et vous attendez votre commande en dehors de la queue. Ainsi, la personne située derrière vous peut passer sa commande sans attendre. 3  
  • 4. Comment ça marche ? Illustration de la cinématique Node.js 1.  Votre navigateur fait une demande pour recevoir la « page1. html » au serveur Node.js 2.  Le serveur Node accepte votre requête et appelle une fonction pour renvoyer la page 3.  Tandis que le serveur Node attend la page (lecture disque), il procède au traitement de la requête suivante 4.  Lorsque la page est retournée par la fonction, une fonction de callback est insérée dans la file d’attente du serveur Node 5.  Le serveur Node exécute la fonction de callback qui, dans ce cas, renvoie la «  page1.html  » à votre navigateur. 4  
  • 5. Avantages L’intérêt de cette nouvelle architecture ? 1.  Elle est très rapide. Par exemple, une architecture Node.js/MongoDB permet d’envoyer 600 e-mails en 3 secondes tandis qu’une architecture classique PHP/ MySQL le fait en 30 secondes. 2.  La plupart des développeurs web connaissent JavaScript (au moins en surface). Aussi, trouver des compétences est très simple. Il n’y a que la notion de callback ou closure à comprendre pour pouvoir développer. 3.  Elle permet d’uniformiser le langage de développement de toute la plateforme. Côté client (navigateur) et côté serveur. 4.  Les fonctionnalités que permettent cette nouvelle architecture sont dans l’air du temps. Par exemple, les fils de discussions qui se mettent à jour automatiquement (réseaux sociaux), les outils de collaboration (chat, interactions sur un document etc.). Elle va dans le sens d’une expérience utilisateur de plus en plus riche en termes d’interactions, simple (donc éviter de changer de page par exemple) et dont la réponse est très rapide. 5.  Flash est déclinant (au profit justement de JavaScript). Tandis que Node.js vient avec Socket.IO et permet donc de gérer de manière efficace le temps réel. 6.  Parce que cette architecture est économe en termes de ressources matérielles. … et puis, personne n’aurait parié sur le fait que JavaScript devienne un standard pour les navigateurs ! 5  
  • 6. Inconvénients Quelles sont les limites ? Node.js a encore les défauts de sa jeunesse. Cette architecture ne propose que peu d’outils. Par exemple sur la gestion des tests, bibliothèques de fonction etc. Même si cette offre est en train de se constituer, il faudra du temps avant que n’émergent des standards. Débugger des programmes écrits en Node.js peut être long et fastidieux. Au-delà, maintenir un programme en JavaScript est complexe car ce langage est très permissif aussi, la programmation doit faire preuve d’une 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 développer un site qui doit gérer beaucoup de contenus ou faire du e-Commerce, ne pas utiliser Drupal ou Magento serait dommage (pour ne pas dire plus). Parce qu’il n’y a qu’un thread, une action en erreur peut avoir des répercussions sur tout le serveur. Contrairement à des langages comme PHP qui cloisonnent chaque requête dans un processus isolé. 6  
  • 7. 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 intéressante de Yahoo! qui propose Cocktail, un environnement qui permet de développer des applications web sur différents 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 très forte communauté se développe autour de Node.js. D’ores et déjà, plus de 17.000 librairies sont proposées - http://npmjs.org - et le gestionnaire de package, Node Package Manager, est très efficace. 7  
  • 8. Conclusion Node.js a remis sur le devant de la scène l’architecture «  Event-driven  » et a prouvé que cette architecture était la plus efficace pour les performances. Cependant, parce que Node ne supporte que l’approche Event-driven et que celle- ci demande un effort de développement Node.js risque de se cantonner à son domaine de prédilection le web temps réel. Dans le futur, nous parions qu’une technologie regroupant le meilleur de l’Event-driven et du Thread verra le jour. Mongrel2, bien qu’incomplet, en montre la voie. TheCodingMachine préconise d’utiliser Node.js de manière tactique sur des architectures mixtes. Selon les fonctionnalités que l’on souhaite développer, il suffit utiliser PHP pour les parties les plus classiques et Node.js pour les parties nécessitant du temps réel ou bien très consommatrices en termes de ressources. En revanche, utiliser Node.js pour migrer des applications de types desktop qui manipulent un grand nombre de données vers le web (qui sont encore développées en swing dans certain grand groupe) peut avoir du sens. Une tentative de prédiction (c’est souvent dangereux) pour terminer. Comme le flash est amené à moyen terme à disparaître et que le casual gaming reste une tendance forte. La technologie serveur Le Node.js serait-elle l'avenir de ces futurs jeux ? 8  
  • 9. 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. 9