Présentation
Introduction
Dans le monde du Web, l’arrivée de Node a été souvent comparée à la « révolution LAMP » (Linux Apache MySQL PHP) du début des années 2000. À l’époque en effet, la combinaison de Linux/Apache/MySQL/PHP a permis l’explosion de plates-formes web dynamiques à bas coûts et facilement installables.
Est-ce vraiment comparable ? En quoi Node apporte-t-il vraiment des nouveautés ? Pourquoi l’utiliser ? Et puis qu’est-ce que Node exactement ?
Bonne nouvelle, vous êtes au bon endroit pour trouver les réponses à ces questions.
Tout d’abord dans ce chapitre, c’est la définition exacte de Node qui sera étudiée, afin de bien maîtriser le périmètre de cet outil.
Ensuite, nous nous intéresserons à sa naissance et aux besoins auxquels il répond.
Puis sera expliqué rapidement son moteur, nommé V8.
Et enfin, quelques exemples de success-stories illustreront pourquoi Node est une solution performante.
Définition de Node
Node.js, abrégé en Node, est « une plate-forme logicielle libre et événementielle en JavaScript orientée vers les applications réseau qui doivent pouvoir monter en charge » (définition tirée de la page Wikipédia française dédiée à Node). Pour y voir plus clair, le terme « plate-forme » est central : ce n’est pas un framework ! La description la plus exacte serait de dire que Node est un interprète JavaScript associé à un ensemble de bibliothèques permettant de réaliser des actions.
Son but ? Fournir un moyen simple de produire des applications performantes et extensibles. Cette phrase n’est pas anodine : simple, performant et extensible sont les maîtres mots.
Historique
Le chemin qui sépare Node de sa naissance à son succès actuel est très court. Cependant, un petit retour en arrière permet de comprendre les fondements de ce qu’est Node aujourd’hui.
À l’origine, un simple problème
Comme souvent, la réalisation d’un outil vient d’une inspiration lors d’un problème rencontré dans la vie de tous les jours. Pour Ryan Lienhart, tout part d’un envoi de photo sur un site web et d’une barre de progression affichée par le navigateur, qui doit demander régulièrement au serveur l’état d’avancement de l’envoi du fichier.
La question posée est alors : comment gérer deux choses à la fois de manière non bloquante ? À savoir, d’une part l’envoi du fichier et d’autre part la capacité à interroger le serveur sur la progression en elle-même. Et donc la question qui en découle pour Dahl : « Et si l’on ne devait plus jamais attendre la fin d’une entrée/sortie ? ».
C’est ainsi que le concept de Node est né, mais pas encore sa réalisation.
Le moteur V8
Après des premières tentatives et diverses sources d’inspirations, Dahl s’intéresse au moteur JavaScript V8, qui à l’époque vient d’être publié...
Success-stories
Pour prendre la pleine mesure du succès de Node, voici quelques success-stories. Elles sont importantes, parce qu’elles mettent en valeur les éléments qui ont fait basculer les décideurs vers cette technologie.
PayPal
Pour les lecteurs ne connaissant pas vraiment PayPal, voici quelques éléments :
-
C’est l’un des services de paiement en ligne les plus populaires.
-
C’est aussi une société multinationale faisant plus de 6 milliards de dollars de chiffre d’affaires.
-
Son site web est classé 37e site mondial selon Alexa.
Vous imaginez donc facilement les contraintes de performances et de sécurité inhérentes à ce genre d’activité.
Cette success-story est tirée du blog de l’équipe Engineering de PayPal, accessible à cette adresse : https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
À plus d’un titre, cette histoire est éloquente.
Tout d’abord le contexte. Avant l’adoption de Node, les équipes de développement sont séparées en deux pôles : les développeurs « navigateurs » (HTML, CSS et JavaScript) et les développeurs d’applicatifs serveurs (Java). Devant l’augmentation croissante des difficultés de coordination, la société cherche alors une solution.
Et c’est à cet instant que Node entre en scène : d’abord par la petite porte, via quelques...
Programmation orientée composant
Pour clore cette présentation de Node, prenons un peu de recul sur l’approche de développement, la « culture » de réalisation d’application si vous préférez.
De par sa modularité, son architecture même et l’excellente plate-forme npm, Node se prête parfaitement à la programmation orientée composant. Voici la définition de ce concept sur Wikipédia en français : « [elle] consiste à utiliser une approche modulaire de l’architecture d’un projet informatique, ce qui permet d’assurer au logiciel une meilleure lisibilité et une meilleure maintenance ». Au lieu de mettre tout le code à l’intérieur d’un fichier ou d’un exécutable monolithique, on utilise de véritables briques que l’on assemble et que l’on peut aussi réutiliser.
Cette philosophie est vraiment capitale pour avancer rapidement dans les projets. Au lieu de produire soi-même un composant peut-être déjà existant, mieux vaut explorer d’abord le dépôt npm. Avec plus de 100 000 paquets au moment de l’écriture de ces lignes, il y a probablement de quoi résoudre des problèmes annexes. On peut, ainsi se concentrer sur le cœur de l’application.
Cet immense choix de « briques »...