Node.js : quand javascript prend ses quartiers sur le serveur

JavaScript trainait une réputation de langage limité et orienté navigateur

JavaScript est connu de longue date comme un langage s’exécutant côté navigateur, afin de gérer des éléments interactifs – menus déroulants et autres animations. Il est basé sur le traitement d’événements, dans la mesure où il déclenche des traitements à partir d’événements, comme des clics. Au-delà de sa réputation associée au navigateur, il s’agit en réalité d’un langage complet et polyvalent, qui a un fort potentiel pour le développement d’applications serveurs déployées à grande échelle.

Node.JS, c’est JavaScript côté serveur

JavaScript est arrivé côté serveur grâce à la plate-forme d’exécution Node.JS dont le moteur JavaScript n’est autre que celui de Google (V8 JavaScript Engine). C’est un moteur très performant, qui exécute le code à la volée. Node.JS y ajoute la gestion de l’exécution des traitements au travers d’une pile où sont stockés les évènements au fur et à mesure de leur arrivée. Le thread qui gère cette pile ne s’arrête jamais sous prétexte qu’un événement ne répond pas pendant un certain temps. Ce thread peut ainsi, par exemple, envoyer en parallèle un gros fichier et écrire dans un fichier de log. Cette philosophie est à l’opposé de celle d’Apache ou d’un serveur J2EE, qui ouvrent pour chaque client, un thread restant inactif tant que le client ne donne pas de retour.

Une architecture particulièrement efficace pour les applications temps réel

Grâce à cette philosophie orientée gestion des évènements, Node.JS est particulièrement adapté aux applications temps réel. Dans un tel contexte, il a besoin de moins de ressources matérielles que Java, pour faire la même chose. Chez PayPal par exemple, les temps de réponse ont été réduits de 35 %, à ressources équivalentes. De plus, Node.JS limite les risques de saturation en cas de pic d’activité.

Node.JS est parfait pour les applications multicanales

Ces qualités rendent Node.JS très adapté aux applications multicanales comptant beaucoup d’utilisateurs. Par exemple, si Node.JS avait été disponible à l’époque, Almavia aurait pu développer sa Bluebox en JavaScript. Pour mémoire, la Bluebox est une plate-forme de centre d’appels (en VoIP)la Bluebox est une plate-forme de centre d’appels (en VoIP) réalisée il y a quelques années pour le compte du Crédit Agricole. Sous Node.JS, les ressources matérielles seraient  réduites et il y aurait bien moins de risques de saturation en cas de pic du nombre d’appels. Dans un autre registre, Node.JS permettrait de développer très rapidement une application qui récupérerait en temps réel un flux Twitter, via le streaming API de ce réseau social.

Un environnement de développement et de déploiement mature et complet

Node.JS bénéficie d’un écosystème complet et mature qui permet de réaliser n’importe quel type d’application ou site Web. En particulier, l’architecture MEAN (MongoDB, AngularJS, Express, Node.JS) fournit un environnement complet de développement et de déploiement :

  • MongoDB est un moteur de base de données noSQL qui fonctionne très bien en tandem avec Node.JS car il est nativement compatible avec le format JSON (JavaScript Object Notation). Les requêtes sont différentes du monde SQL mais il n’est pas si difficile pour un devéloppeur, de s’adapter.
  • Express est un Framework Node.JS qui fournit des middlewares.
  • AngularJS est un Framework MVS JavaScript d’origine Google qui facilite grandement la réalisation d’interfaces utilisateur en single page (la page ne se charge qu’une seule fois et ensuite, seul son contenu change).
  • Node.JS est donc le moteur d’exécution JavaScript. Il intègre aussi un serveur http et un serveur d’API RESTfull faisant le lien entre MongoDB et AngularJS, ou tout autre client. Disponible sous Windows, Linux et MacOS, Node.JS interagit également avec le système (file system, sockets…)

MEAN permet de découper facilement une application en composants distincts, qui peuvent prendre la forme de services. Il s’agira par exemple d’un chat dans une page PHP ou d’un bandeau CTI.

Des coûts et des délais de développement réduits

Sur un projet traditionnel, on doit généralement cumuler trois langages différents : Java pour le serveur backend, PHP pour le serveur frontend et JavaScript pour le navigateur. Alors qu’avec Node.JS, un même développeur peut réaliser entièrement le frontend et le backend sous un seul langage – JavaScript. En somme, il faut moins de temps et moins de compétences différentes pour développer une application. De plus, Node.JS permet de connecter facilement des applications mobiles iOS ou Android.

Des géants du web l’ont déjà adopté

Preuve de la maturité de Node.JS, les plates-formes d’acteurs majeurs comme PayPal, Linkedin ou Netflix ont (ou vont) migrer vers cette technologie.

Jérémi Colborati, consultant MOE/AMOA chez Almavia CX

Liens utiles :

À propos d'Almavia CX

Almavia CX accompagne ses clients dans leur transformation digitale, sur toute la chaine de l'Expérience Client, en plaçant l’humain au cœur de son savoir-faire et au centre de sa stratégie.