INFOTEL VOUS REMERCIE POUR VOTRE CANDIDATURE

Un chargé de recrutement prendra contact avec vous prochainement.

Présentation de Node.js

5 bonnes raisons de choisir Node.JS

5 bonnes raisons pour lesquelles vous devriez jeter un œil (même si vous êtes un développeur Java)

Node.js : un environnement bas niveau permettant l’exécution de JavaScript côté serveur. Cet article liste différents avantages à son utilisation même si on développe en Java ou dans un autre langage.

 

1) La simplicité

Le serveur Node.Js peut être lancé en une seule ligne de commande et démarre rapidement.

On peut récupérer le module http nativement en quelques lignes, pas besoin de bibliothèque externe pour créer son serveur. La mise en place des fonctionnalités de base est très aisée.

Même si cela peut être fait nativement, les requêtes peuvent être simplifiées en utilisant la bibliothèque de code « node-fetch ».

 

2) La légèreté

Le second avantage est la légèreté de Node.js : son empreinte mémoire est petite et son architecture est donc facilement transposable dans une infrastructure Cloud.

Puis vient son architecture monothread appelée « Event loop ». Cette dernière se matérialise sous la forme d’une pile d’événements. Par exemple, des requêtes http vont être dépilées par un thread qui va effectuer le code Javascript jusqu’à ce qu’il n’y ait plus d’événements à gérer. Lorsqu’une réponse revient du thread, elle prend le chemin inverse et revient dans la pile d’événements.

Mais si on veut utiliser tous nos cœurs, on peut utiliser le module « Child process » qui permet de déployer de nouveaux processus.

Pour du scaling vertical, grâce à « Node Cluster », on va pouvoir créer autant de worker que nécessaire qui vont exécuter le même code. On peut implémenter une architecture sans interruption en arrêtant juste le worker qui travaille sur une ancienne version de l’application et activer celui avec la nouvelle version pour un redémarrage sans interruption.

 

3) JS Moderne

Les avantages du langage JavaScript récent. Plusieurs outils sont détaillés pour indiquer que des solutions existent et que les limites évoquées autrefois ne sont plus forcément d’actualité :

  • Les versions ES6 – ES2015 jusqu’à la plus récente ES2018.
  • Flow et TypeScript qui ajoutent le typage. TypeScript est connu pour être utilisé par Angular notamment. Flow est une alternative qui est développée par Facebook. Ces deux choix sont assez ressemblants.
  • Nest : un framework TypeScript qui utilise des décorateurs et joue le même rôle que les annotations en Java.
  • Code Sandbox : un éditeur de code à la base utilisé pour faire du React mais qui est aussi très utile en TypeScript avec une aide à la programmation sur le typage et une reconnaissance d’erreur.

Concluons ce point sur l’opérateur de décomposition ajouté dans ES6 permettant de créer des clones d’objets et l’implémentation du pattern builder pour gérer des objets complexes en JavaScript.

 

4) Son écosystème

L’écosystème de Node.js est très riche, on retrouve tout d’abord tous les outils classiques du développement frontend. Voici quelques exemples d’outils utiles pour la programmation en Node.js :

  • npm (installé par défaut) ou Yarn (alternative développée par Facebook) pour la gestion de package.
  • Jest pour l’écriture et l’exécution des tests mais également la couverture de code.
  • Prettier pour la vérification des conventions de code.
  • Visual Studio Code pour l’environnement de développement.
  • Chrome avec son debugger et son profiler pour l’analyse des performances.

 

Qu’en est-il des frameworks ?

Selon les besoins des applications, divers frameworks sont disponibles. Les exemples donnés sont ExpressJS (provenant de la fondation Node.js) et Koa. Ce sont des frameworks légers et simples d’utilisation. Ils permettront de créer une application Web plus simplement qu’avec l’objet http directement. ExpressJS fournit notamment un ensemble de méthodes permettant de traiter les requêtes http et un système de middleware pour étendre ses fonctionnalités.

Au niveau de la base de données, il n’est pas forcé d’utiliser MongoDB. On peut utiliser tout type de base de données :

  • Bases de données relationnelles (MySQL, PostGreSQL, Oracle, …)
  • Bases de données NoSQL (Cassandra, Redis, …)

Il n’est pas non plus nécessaire d’intégrer des services extérieurs avec du REST, diverses solutions s’offrent au développeur, comme GRPC (Framework développé par Google, qui permet de faire du RPC de manière synchrone ou asynchrone) ou GraphQL (développé par Facebook).

 

5) Le langage est un outil

La 5ème bonne raison n’est pas spécifique à Node.js. Le langage est un simple outil. Il faut savoir rester curieux et ouvert aux différentes technologies disponibles, aller chercher les bonnes choses qui se font ailleurs.

 

À moins d’avoir des besoins spécifiques, par exemple au niveau des performances ou un outil sur un autre écosystème, Node.js est une solution à envisager.

Par Julien Chapelle et Valentin Monchau