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