Facebook EmaiInACirclel
Développement front-end, back-end

Développement web : Pourquoi doit-on utiliser NodeJs ?

PentaGuy
PentaGuy
Blogger

NodeJS est une plateforme qui s’appuie sur le moteur JavaScript de Chrome permettant de développer rapidement des applications réseau rapides et évolutives. NodeJS utilise un modèle événementiel, aux E/S non bloquantes qui le rend léger et efficace, idéal pour les applications gérant d’importants volumes de données en temps réel sur des dispositifs distribués.

Je vous invite à lire un article où je fais mon mea culpa et avoue m’être converti à NodeJS, non sans réticence au début mais totalement séduit aujourd’hui !

Développement NodeJS

NodeJS est idéal si vous pensez passer d’une architecture monolithique à une architecture de microservices

Pourquoi NodeJs est-il de plus en plus utilisé ?

1) Une syntaxe bien connue des développeurs web

NodeJS utilise JavaScript, un langage très utilisé par les développeurs web dans les applications front-end, côté navigateur. L’interpréteur de syntaxe JavaScript NodeJS a été réécrit et compilé en C++ ce qui en fait un interpréteur JavaScript bien plus rapide que celui du navigateur.

2) Un système complètement ou partiellement asynchrone

Un système asynchrone permet d’accélérer les applications web. Il est par exemple facile de pousser de gros volumes de données via une requête sans bloquer le serveur qui reste ainsi disponible pour traiter d’autres tâches.

De plus, un système complètement asynchrone basé sur des événements garantit un feedback rapide et qualitatif.

3) Une gestion ASYNCHRONE d’upload pour les gros fichiers ou jeux de données importants

NodeJS présente de nombreux avantages, en voici quelques exemples :
Imaginons que vous ayez à construire une galerie où les gens postent des vidéos et que vous aimeriez poster des vidéos sur une page web, faire des vignettes, stocker des fichiers et lier des fichiers à une base de données où vous stockerez le nom / la description et les fichiers URL. Avec NodeJS vous pourrez facilement :

  1. Traiter les données du formulaire et les valider avant même que le fichier vidéo soit complètement uploadé sur le serveur.
  2. Vérifier que le fichier posté soit bien une vidéo dès les premiers octets transférés sans avoir besoin d’attendre l’upload complet du fichier.
  3. Faire une vignette de la vidéo dès les 2 premiers Mo reçus.

Ainsi, imaginons que l’utilisateur uploade un gros fichier (10 Mo et plus), il sera tout à fait possible de valider les autres données du formulaire immédiatement sans devoir attendre la fin du processus de téléchargement. Ceci s’avère très pratique dans les cas où les données saisies ne sont pas conformes car on peut alors simplement arrêter l’upload et afficher une page d’erreur.

4) NodeJS ne s’arrête pas là !

NodeJS est la solution idéale pour les applications web utilisant http et ws (web sockets). Avec NodeJS, la gestion des périphériques matériels via les différents ports série et protocoles de communication est très simple.

NodeJS  permet également d’instancier plusieurs serveurs HTTP / WebSocket / FTP / telnet sur une même instance, et sur un seul et même processus. Ainsi, on peut permettre à un serveur d’accéder très rapidement aux mêmes références mémoire (RAM) sans devoir les stocker temporairement ou devoir construire des protocoles de partage compliqués entre les serveurs.

5) Protégez vos sources avec NodeJS !

La première chose à faire selon moi pour protéger les applications des attaques est de bien configurer les en-têtes HTTP. Je tiens à vous citer un package incontournable (Helmet) et un outil qui pourra se révéler bien utile pour faire un bilan de votre exposition à des attaques (Snyk).

Helmet est un module NPM qui propose 9 fonctions afin de sécuriser les en-têtes HTTP contre le cross-site scripting, le clickjacking ou encore les attaques d’intercepteur avec de faux certificats..

Snyk est une solution de protection d’open source qui recherche et corrige automatiquement les vulnérabilités des dépendances..

Nous pouvons également citer les cloud balancers, WAF et middlewares limitatifs pour protéger les applications des attaques DDoS.

6) NodeJS facilite la création des microservices

De plus en plus d’applications ont franchi le pas et ont abandonné l’architecture monolithique pour celle des microservices. Celle-ci ne manque pas d’arguments :

  • Parce que chaque microservice est entièrement autonome avec sa propre base de données ou sous-modèle, la mise à jour de l’application est plus simple et rapide. Les risques de bugs et d’indisponibilité de l’application sont également réduits.
  • Le cloisonnement de chaque microservice permet d’utiliser des technologies complètement différentes. On peut profiter des dernières avancées technologiques sans se soucier du langage, framework ou environnement.
  • Les équipes de développeurs sont plus autonomes et productives car il n’est plus nécessaire de se consulter pour une quelconque compatibilité technique entre chaque module.

Netflix, Pinterest, Paypal ou encore GoDaddy ont choisi une architecture microservice en NodeJS et tirent les conclusions suivantes :

  • la richesse de NodeJS évite des heures de développement et ses modules sont utilisables immédiatement. Avec un langage commun au front-end et au back-end, les développeurs peuvent intervenir plus rapidement, des modifications sont faites en moins de temps et avec moins de ressources humaines.
  • Les microservices basés sur NodeJS (en particulier via Express) offrent un temps de réponse extrêmement rapide et à charge égale contre un autre langage, Node.js n’utilise que 10% du disque dur.

Pour ce faire, de nombreux frameworks NodeJS existent : Express, Restify, Koa, Loopback, ou encore HAPI.

7) Scrapez simplement avec NodeJS

NodeJS utilise le moteur JavaScript (sans doute l’un des langages de programmation les plus populaires et les plus utilisés mais aussi le plus controversé ?) pour exécuter différents codes afin de récupérer facilement du contenu web dynamique. Pour du scraping, les packages JavaScript ne manquent pas : Request, Cheerio, Osmosis, Puppeteer, ou Apify SDK.

Que dire d’autre sur NodeJS ? En fait, il s’agit tout simplement d’un concept de développement qui offre de nouvelles possibilités pour des développements plus rapides et de meilleure qualité. C’est pour cela que je pense que NodeJS a un avenir très prometteur dans le développement de nombreux projets ! Et d’ailleurs cela fait déjà près de 10 ans qu’il existe et résiste à toutes les critiques !!!

 

Note de l’auteur : l’article a été publié une première fois en 2014 et a été mis à jour au regard des nouvelles connaissances acquises sur le sujet.

 

Consultez aussi :

Frontend, je ne boirai pas de ton Node

NodeJS : la manière la plus intelligente de programmer des objets intelligents


2 Commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *