[Conseil] Quel stack NodeJS choisir pour des webservices ?

37 views
Skip to first unread message

Fabien Abballe

unread,
Jan 22, 2016, 11:35:31 AM1/22/16
to NantesJS
Bonjour la communauté JS nantais,

Je suis actuellement entrain d'étudier la mise en place de webservice via NodeJS pour un projet pro (je préfère préciser). Etant orienté Java (Spring MVC, Hibernate, etc) depuis quelques années j'ai un peu de mal à savoir si NodeJS correspond à mon besoin et surtout sur quel stack partir (il faut avouer que lorsqu'on commence on a l'embarras du choix).

Description du besoin:

Mon projet consiste en une "usine à site" (oui je sais c'est un joli mot qui ne veut pas dire grand chose). L'idée est d'avoir une template de site que j'instancierai pour chaque client (il faut voir cela un peu comme une région qui a N département donc je garderai cette analogie dans la suite de l'explication). La région gère le template de site et chaque département instancier le template et le modifie à sa guise. Ce template permettra notamment de mettre en place les briques communes à chaque département. Une des briques importantes est la remontée de données des départements. Evidemment chaque département utilise des outils différents pour stocker les précieuses informations.

Mon idée est donc de passer par des webservices pour avoir une signature unique au niveau de mon template (qui serait donc le client du webservice) et de déployer chez chaque client une implémentation différente de ces webservices (fournisseur du webservice).

C'est cette implémentation de webservices que j'aimerai faire en NodeJS. Les besoins que j'ai identifié sont:

- Parcours d'un filesystem
- Parsing d'un fichier CSV
- Connexion à une BDD existante
- Appel d'autres webservices

Pour information l'usine à site sera du Liferay (Portail JAVA). Je n'ai pas la main sur ce choix par contre.

Un petite exemple si ca permet d'éclaircir mon besoin:

Interface WS:

List<Obj1> getMethod1(param1);
Obj2 getMethod2(param2, param3);
List<Obj3> getMethod3(param4);


Département 1:

List<Obj1> getMethod1(param1); -> Parcours d un filesystem
Obj2 getMethod2(param2, param3); -> Connexion à une base de données MySQL existante
List<Obj3> getMethod3(param4); -> Parsing d un CSV

Département 2


List<Obj1> getMethod1(param1); -> Connexion à une base de données Postgres existante
Obj2 getMethod2(param2, param3); -> Connexion à une base de données Postgres existante
List<Obj3> getMethod3(param4); -> Appel d'un webservice

etc

Mes questions:

Pour être honnête j'en ai beaucoup...

- Quel framework de WS me conseillez-vous ? (HAPI ? Loopback ? autres ?)
- Quel framework de validation des entrants/sortants utiliser ? (Joi ?)
- Existe-t-il un équivalant à Hibernate en NodeJS ? (Sequelize ?)
- L'idée étant de créer un code assez modulaire (pour le parsing du CSV par exemple) existe-t-il un système d'injection de dépendances comme Spring en NodeJS ?
- Quel framework de gestion de cache doit-je utiliser ?

Et surtout est-ce que l'utilisation de NodeJS est adéquate ?

Merci d'avance pour tous les retours que vous pourrez me faire.

Cordialement
Fabien Abballe
Reply all
Reply to author
Forward
0 new messages