Node.js

Chez USER nous avons une certitude, celle d’avoir un langage commun pour l’ensemble de notre workflow. En effet nous utilisons du Javascript sur la partie front mais également sur la partie backoffice. C’est à ce niveau-là que nous utilisons Node.js pour mettre en place nos API ou webservices permettant le bon fonctionnement des applications web et mobile de nos clients.

Pourquoi cette technologie

Il y a trois raisons pour lesquelles nous utilisons Node.js sur l’ensemble de nos applications:

  • La première est de n’avoir qu’un seul langage que ce soit sur la partie front ou back des applications. Que ce soit des projets web ou mobile nous implémentons une partie en Node.js.
  • La seconde est que nous avons des équipes qui maîtrisent ce langage permettant ainsi une montée en compétences rapide de nos nouveaux collaborateurs. Cette uniformisation permet de proposer une diversité de projets à nos équipes et de passer du front au back sans problème.
  • La dernière raison repose sur les performances que nous avons avec Node.js. C’est une technologie très rapide et facilement scalable, idéal pour absorber la charge des différents types de projets que nous déployons. La communauté de développeur autour de cette technologie ne cesse de grandir depuis 2009.

Les Sockets

Node.js permet de travailler avec les websockets de façon simple grâce à socket.io. Il existe d’autres librairies mais celle-ci est la plus connue et certainement la plus répandue. Le socket n’est pas une chose nouvelle mais Node.js, aide depuis sa création, a démocratiser son fonctionnement. Il est maintenant possible de l’utiliser via d’autres langages de programmation.

L’utilisation de socket permet d’introduire la notion de temps réel dans les backoffices offrant une nouvelle façon d’avoir accès à la données. Il n’y a plus besoin de rafraîchir votre page pour que les données se mettent à jour automatiquement.

Qui utilise Node.js ?

Beaucoup de sociétés utilisent cette technologie. Elle a permis notamment à Paypal de gagner 35% de temps de réponse sur son service ou encore au journal Le Monde d’envoyer des notifications à ses utilisateurs bien plus vites qu’avec d’autres langages tout en réduisant les coûts de serveurs.

Son implémentation est relativement simple et il est possible de la faire cohabiter avec d’autres services. C’est également aussi pour cela qu’un grand nombre de services en ligne utilisent Node en production.

Base de données, moteur, cache

Voici la liste des types de bases que nous utilisons sur la plupart de nos projets en parallèle de Node.js. Cette liste est bien sûr non exhaustive et dépend des clients et de l’envergure du projet.

PostgreSQL

Notre base de données relationnelle par défaut. Une solution solide qui peut supporter la charge et donc accompagner le client dans sa progression sans avoir à migrer le schéma de données en cour de route, perdre du temps et parfois perdre une partie des données ou les rendre inutilisables.

MongoDB

Souvent associé à Node.js, Mongo est une base de données orientée documents permettant d’aplatir certains jeux de données pour mieux requêter dessus et d’avoir des logs par millions tout en ayant un accès rapide.

Elastic Search

Utilisé principalement pour faire du faceting ou des agrégations que Mongo ne supporte pas, Elastic Search est la Rolls Royce des moteurs de recherche en RESTful d’un point de vue qualité prix des instances et performances.

Redis

La force de Redis est de ne s’appuyer que sur la RAM de la machine. Il permet la gestion des sessions utilisateurs, du cache ou encore d’avoir un système de message and queue.