Bonjour a tous.

Je viens vers vous car j'ai besoin de conseils concernant l'utilisation de node js ou pas.....
Je m'occupe d'un logiciel de gestion qui a plus de 20 ans d'existance et développé en DELPHI.

C'est donc un client lourd et nous sommes actuellement en train de réfléchir à le passer en full WEB.
C'est dans l'air du temps.....même si la version actuelle convient plutôt bien.

Pour vous donner une idée:

  • Environ 150 tables (client, produits, ventes, utilisateurs, droits...)
  • Multi SGDB : il tourne aussi bien sous ORACLE, MSSQL, FIREBIRD...
  • Environ 60 éditions différentes, exportables en PDF / excel..
  • Plus de 200 fenêtres windows

Nous installons ce dernier chez nos clients, pas d'hébergement pour l'instant, même si cela va bientôt arriver.
Ceci explique l'aspect multi-SGBD, nous nous adaptons au besoin de client, certains imposent ORACLE par exemple.

Par contre, cela va de l'install monoposte ( 1 utilisateur) à l'install sur serveur applicatif et serveurs SGBD dédiés (une centaine d'utilisateurs).

Je suis en train de regarder quelle serait la meilleure solution entre APACHE/PHP et NODE JS côté serveur, sachant que:

Nous avons d'autres produits périphériques au logiciel principal qui tournent depuis des années avec APACHE/PHP et que nous avons récemment refait en PHP/AJAX/JQUERY/BOOTSTRAP.
Au niveau PHP nous n'avons pas non plus passé le cap des frameworks. Nous avons développé en internet nos propres classes PHP (abstraction du SGBD par exemple).
Ceci tourne d'ailleurs trés bien. Nous avons donc les compétences en interne sur ces technologies.

Depuis quelques temps nous entendons beaucoup parler de NODE JS avec ANGULAR JS côté client et je souhaiterais savoir:

  • Si c'est bien adapté à notre besoin (volumétrie, installation chez tous nos clients même sur monoposte)
  • Si cela vaut le coup de basculer sous NODE plutôt que de rester sous PHP (compétences internes, formations, principe de fonctionnent totalement différent...)
  • Si une autre solution pourrait être envisagée ( framework PHP...).

Bref, j'ai besoin de vos lumières et surtout de vos meilleurs arguments :-).
J'ai discuté avec pas mal de monde mais le pur dev PHP nous conseillera PHP alors que le pur dev JS nous conseillera plutôt NODE.
Il est difficile de prendre du recul et j'en suis conscient, le tout est de trouver l'outil que permettra de perreniser notre application, en gros, ne pas devoir la redévelopper dans 3 ans.

Merci par avance.

4 réponses


Bonjour,

En effet, comme tu l'as mentionné, on ne veut pas réécrire toute une application après un nombre d'années. Essentiellement, c'est vrai que pour le front-end, puisque le code back-end ne perdra pas de valeur. J'ai drôlement l'impression que le Web est en train, ou est déjà une machine à API. Par là j'entends que les grandes applications vont utilisés des services Web afin de récupérer des informations. Ainsi, d'écrire un API distint de l'application permet de séparer deux couches d'application. Dans les deux cas, c'est possible d'écrire le code en PHP et en JavaScript. En thérie, il serait possible de faire un API en n'importe quel langage informatique si vous voulez ! Pour le site web (le output du serveur, dans un navigateur), j'ai une grande préférence pour les SPA et particulièrement avec AngularJS. Il regroupe tous les outils nécessaire pour le développement d'une application, tout simplement. Pour moi, de créer des applications dans le contexte d'Angular, c'est de détacher l'application du serveur, de ne plus dépendre d'une technologie exécutée côté serveur. Tout ce que l'application serveur devrait faire, c'est me fournir le output de base (page html, chargeant tous les styles et scripts) et de répondre à tous les appelles à l'API.

Donc, tu pourrais avoir un API, écrit dans le langage que vous voulez et un site Web écrit en JavaScript. À tient ! Vous vouliez une application mobile ? N'est-ce pas magique ? Le JavaScript fonctionne sur les mobiles (voir Apache Cordova). Certe il y aurait probablement plusieurs adaptations, mais le code de base pour la gestion fonctionne déjà. Vous vouliez une application fonctionnant avec Node WebKit ? et bien c'est possible, ça fonctionne aussi en JavaScript !

D'un autre côté, il y a toute la partie gestion de projet. On ne peut pas développer des applications sans budget, à moins de travailler gratuitement. Ainsi, de développer des applications à plusieurs couches peut demander un peu plus de temps initialement, mais ce travail de structuration ne sera pas inutile puisqu'il sera bon pour presque toujours. L'API ne perdra jamais de valeur, alors que le site Web perdra quelques plumes en considérant la vitesse où les technologies évolues. Dans quelques années, un nouveau site Web pourrait être utilisé en utilisant la même API (comme peu le montrer cette image)

Bonne chance ! :-)

Je pense que l'orientation vers nodejs est plus intelligente.
Si tu n'es pas au courant, Electron te permettra de faire facilement un build de ton projet en application bureautique. (ton application sera builder avec son propre moteur chrome en fait, c'est excessivement résumé et simpliste comme explication)
Tu te casseras moins la tête si tu souhaites avoir du realtime dans la gestion des données.

Je pense que le plus gros point noir est au niveau des bases de données. Vu que tu auras un side server et un side client, c'est pas bien grave d'avoir le server en php, il faudra encoder en JSON pour l'exploiter côté client. Mais niveau perf, je pense que c'est mieux de bosser sur du nodejs/mongodb... En cas de base de données relationnel, ca représentera un plus gros boulot de structuration, mais pas insurmontable.

Nodejs / mongodb s'en sortira mieux quand il subira une grosse charge de travail.

Je suis sûr qu'au final tu as déjà entendu tous ces points.Mais j'dirais juste, que si tu es sûr de toi sur la façon de procéder dans un langage et que tu as une bonne vision d'ensemble, vas-y pour celle-là ! Si tu n'es pas trop dans le besoin, rien ne t'empeche de tester nodejs :)

sylvar
Auteur

Meci pour vos réponses.
Concernant MonGoDB, je ne me pose même pas la question, certaines de nos bases font plus de 2Go, il est impensable de ne pas travailler en SGBD relationnel (MYSQL, ORACLE, FIREBIRD ... sont des prérequis indispensables).

J'ai commencé à étudier NODEjs d'un peu plus prés.
Après avoir rapidement installé NODE.js ainsi que 2 packages (node-pdf et phantom-pdf) sur un de nos serveurs virtuels, j’ai essayé de mettre en place le package ORACLE.

Première surprise : NODE.js utilise node-gyp : c’est un outil de ligne de commande multi-plateforme écrit en Node.js pour compiler les modules addon natifs pour Node.js. Ok, pourquoi pas !
Pour recompiler le package ORACLE node-gyp a besoin de Visual Studio (ou du SDK.net framework 2.0) et de python !. Ok pourquoi pas!

J’installe donc ces deux outils-> toujours un plantage.
Après recherche, je me rends compte que je ne suis pas le seul (https://github.com/nodejs/node-gyp/issues/629) et que pour solutionner le problème, il faut a priori :

  • Télécharger et installer Python 2.7.3, ne surtout pas installer la version 3 c’est incompatible !
  • Télécharger et installer Visual C++ 2010 Express ou Visual Studio 2010
  • Télécharger et installer Windows SDK 7.1
  • Télécharger et installer Visual Studio 2010 SP1
  • Télécharger et installer Visual C++ 2010 SP1 Update (Windows SDK 7.1)

Je nous vois mal faire cela sur les serveurs de production de nos clients !!!
D'autres applis métier tournent dessus, j'ose même pas imaginer les incompatibilités !

j'ai eu quelque soucie avec l'install de paquet node, notament browser-sync, sur windows, il a fallut que je rebuild node-gyp et brwosers-sync en meme temps que l'install, il y as une commande a lancer pour le build, on peut choisir quel version de visual studio ( ou visual c++ je sais plus) on veut build et apres ca devrait fonctionner