Upload
the-coding-machine
View
215
Download
0
Embed Size (px)
Citation preview
7/30/2019 Livre Blanc Web temps rel
1/10
7/30/2019 Livre Blanc Web temps rel
2/10
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 de
dvelopper un serveur Event-Driven en JavaScript. Entermes plus simples, cela signifie que les oprations de
lecture ou dcriture sont parrallliss contrairement au
fonctionnement en mode thread o les oprations sont en
srie.
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.
Introduction
2
7/30/2019 Livre Blanc Web temps rel
3/10
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 vousattendez votre commande en dehors de la queue. Ainsi, la
personne situe derrire vous peut passer sa commande sans
attendre.
Comment a marche ?
3
7/30/2019 Livre Blanc Web temps rel
4/10
Illustration de la cinmatique Node.js
1. Votre navigateur fait une demande pour recevoir lapage1. html au serveur Node.js
2. Le serveur Node accepte votre requte et appelle unefonction pour renvoyer la page
3. Tandis que le serveur Node attend la page (lecturedisque), il procde au traitement de la requte suivante
4. Lorsque la page est retourne par la fonction, unefonction 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 votrenavigateur.
Comment a marche ?
4
7/30/2019 Livre Blanc Web temps rel
5/10
Lintrt de cette nouvelle architecture ?
1. Elle est trs rapide. Par exemple, une architectureNode.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 galementfacilement scalable. En effet, contrairement des
architectures classiques, il suffit d'ajouter une instance
Node.js pour amliorer la capacit de rponse. Si l'oncombine 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 dveloppementde toute la plateforme. Ct client (navigateur) et ct
serveur.
Avantages
5
7/30/2019 Livre Blanc Web temps rel
6/10
Lintrt de cette nouvelle architecture ?
(suite)
5. Les fonctionnalits que permettent cette nouvellearchitecture 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 depage 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 deressources matrielles.
et puis, personne naurait pari sur le fait que JavaScriptdevienne un standard pour les navigateurs !
Avantages
6
7/30/2019 Livre Blanc Web temps rel
7/10
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). Cesarchitectures 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.
Inconvnients
7
7/30/2019 Livre Blanc Web temps rel
8/10
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.
Environnement Node.js
8
7/30/2019 Livre Blanc Web temps rel
9/10
Node.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 que
Node ne supporte que lapproche Event-driven et que celle-
ci 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
part ies ncess itant 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 danscertain 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 ?
9
Conclusion
7/30/2019 Livre Blanc Web temps rel
10/10
10
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.