Je tends vers le "utilisez ce que vous savez" (même si c'est une architecture plus lourde). Pour cette raison, je ne pense pas que ce soit aussi simple que "EventMachine vs NodeJS". Principalement, la différence peut être résumée comme ceci :
- NodeJS est un cadre/langage qui a été écrit pour gérer la programmation basée sur les événements en JavaScript. C'est sa force motrice. Il ne s'agit pas d'une réflexion après coup, ou d'un mécanisme tiers. C'est intégré directement dans le langage. Vous créez des callbacks/événements parce que c'est ainsi que le langage est construit. Il ne s'agit pas d'un plug-in tiers, et il ne modifie pas votre flux de travail.
- EventMachine est un joyau de Ruby qui permet aux développeurs d'accéder à certains des avantages du modèle de programmation basé sur les événements. Il est très utilisé et bien testé, mais n'est pas directement intégré au langage. Les deux sont bloqués sur un seul processeur, mais avec la programmation événementielle au cœur de Nodes, il a encore une longueur d'avance. Ruby n'a pas été écrit avec la concurrence à l'esprit.
Cela dit, les problèmes techniques peuvent être surmontés. Les questions les plus importantes (à mon avis) qui devraient guider votre décision sont les suivantes :
- À quoi ressemblera votre environnement de production ? Avez-vous un contrôle total sur le serveur ? Pouvez-vous l'héberger comme vous le souhaitez ? Ou sera-t-il placé sur un système partagé pour commencer, et devrez-vous ensuite l'étendre ?
- Tous les développeurs de votre équipe ont-ils la capacité d'apprendre très rapidement une nouvelle langue ? À quelle vitesse seront-ils capables de comprendre un langage basé sur les événements comme JavaScript pour le niveau intermédiaire ?
- Avez-vous besoin de toute l'architecture que vous offre Rails (cadre de test complet, échafaudage, modèles, contrôleurs, etc.) Ou est-ce excessif ?
Il existe un certain nombre de différences techniques entre les deux. L'un est un langage, l'autre un framework. Vraiment, quelle pile de logiciels voulez-vous utiliser ? Combien d'apprentissage vos développeurs devront-ils faire ? Voulez-vous une pile complète qui vous offre de nombreuses fonctionnalités, que vous n'utiliserez peut-être pas, ou voulez-vous une configuration de base qui fonctionne extrêmement rapidement et de manière simultanée, même si vous devez écrire du code supplémentaire et apprendre une nouvelle langue ?
Bien que Rails ne soit pas aussi lourd que certaines architectures d'applications web, vous aurez tout de même besoin de plus de puissance processeur que pour gérer un débit similaire en NodeJS. Supposer un code de qualité pour les deux systèmes. Un mauvais code écrit sur l'une ou l'autre pile va empêcher la pile de briller. La question qui se pose est la suivante : voulez-vous vraiment apprendre une toute nouvelle façon de faire les choses ou utiliser vos connaissances actuelles de Ruby pour faire décoller les choses rapidement ?
Je sais que ce n'est pas vraiment une réponse définitive, mais j'espère que cela vous aidera à prendre une décision !