J'ai eu l'occasion d'expérimenter Node.JS lors d'un petit projet interactif.
Tout d'abord il faut garder à l'espris de Node.JS est une technologie encore jeune et qu'il n'y a encore à l'heure actuelle aucune version finalisée qui puisse être déployée en production chez un client par exemple. Où en tout cas c'est à ses risques et périls
Pour en revenir à mon expérience de la chose c'est une techno très intéressante si tu cherche à faire une application collaborative avec des interactions multi-utilisateurs en temps réel.
Je repense par exemple à cette démo de Google pour présenter leur API WebAudio :
http://labs.dinahmoe.com/plink/ (et qui utilise Node)
Toute cette partie repose sur l'utilisation des sockets par Node, mais cette technologie est utilisable par à peu près tous les langages pour peu que la configuration de ton serveur le permette.
L'un des intérêt de Node est également son fonctionnement non-bloquant. Je ne vais pas te décrire ici ce que cela signifie alors que c'est expliqué sur le site officiel (http://nodejs.org/)
Concernant des question :
- Par défaut, Node est uniquement un serveur web côté serveur permettant d'exécuter du javascript. Et comme tous les langages, l'organisation de ton projet dépendra des librairies utilisées.
Je te conseille le framework
Express pour NodeJS apportant une architecture MVC et de routing complète.
Pour les templates il existe le module
Jade.
Et pour le model tu peux utiliser
Redis (par défaut dans Express je crois), ou opter pour un implémentation de NoSQL comme
Mongoose pour MondoDB par exemple.
Comme tu peux le voir Node.JS repose sur un grand nombre de modules lui ajoutant bon nombres de fonctionnalités et c'est d'ailleurs l'un des points qu'il en fait ça force, mais aussi sa faiblesse. En effet, comme je le disais, ce projet est encore jeune et il y a une floriture de modules développés par la communauté et qui ne sont pas toujours stables ou pas/plus maintenus.
Il est donc important de réfléchir au choix des modules que tu utiliseras dans ton projet.
À noter que Node implémente nativement de plus en plus de fonctionnalités, dont certains modules indépendant à la base et maintenant associés nativement.
- Côté performances je ne saurai pas vraiment te dire, n'ayant pas eu l'occasion de procéder à des stress test. Mais tu trouveras aisément des testes à ce sujet sur Google. Enfin pour ma part ça m'avait l'air aussi performant que du PHP.
- Pour la mise en application ça va surtout dépendre de ton serveur. Dans un premier temps il faut pouvoir installer Node sur le serveur. Exit donc les serveurs mutualisés. Même problème si tu veux utiliser les sockets (à noter l'excellent module
socket.io pour simplifier la gestion de ces derniers (également utilisable dans n'importe quelle application javascript côté client)).
Sinon n'importe quel serveur dédié ou virtuel fera l'affaire tant que tu t'adapte à la monté en charge.
Pour la cohabitation, Node.JS et Apache peuvent très bien s'entendre pour peu qu'ils aient chacun leur propre port d'attribué.
Pour en savoir plus je t'encourage à te tourner vers la vidéo d'introduction sur le site officiel et qui est une très bonne présentation, démonstration et initiation à la chose.