私は「あなたが知っているものを使う」傾向があります(たとえそれがより重いアーキテクチャであっても)。そのため、「EventMachine と NodeJS」という単純なものには見えません。主に、違いは次のように要約できます。
- NodeJS は、JavaScript でイベント ベースのプログラミングを処理するために作成されたフレームワーク/言語です。それがその原動力です。これは後付けでも、サードパーティのメカニズムでもありません。それは言語に焼き付けられています。それが言語の構築方法であるため、コールバック/イベントを作成します。これはサードパーティのプラグインではなく、ワークフローを変更しません。
- EventMachine は、開発者がイベント ベースのプログラミング モデルの優れた機能にアクセスできるようにする Ruby の gem です。頻繁に使用され、十分にテストされていますが、言語に直接組み込まれていません。両方とも 1 つの CPU に固定されていますが、ノード コアでのイベント プログラミングにより、まだ優位性があります。Ruby は並行性を念頭に置いて作成されていません。
とはいえ、技術的な問題は克服できます。あなたの決定を導くべきより重要な質問(私の見解から)は次のとおりです。
- 本番環境はどのようになりますか? サーバーを完全に制御できますか? 好きなようにホストできますか?それとも、最初は共有システム上にあり、それを拡張する必要がありますか?
- あなたのチームのすべての開発者は、新しい言語をすぐに習得できますか? 中間層向けの JavaScript のようなイベントベースの言語をどのくらいの速さで理解できるでしょうか?
- Rails が提供するすべてのアーキテクチャ (完全なテスト フレームワーク、足場、モデル、コントローラーなど) が必要ですか? それともやり過ぎですか?
この 2 つにはかなりの技術的な違いがあります。1 つは言語、もう 1 つはフレームワークです。本当に、どのくらい重いスタックを実行したいですか? 開発者はどの程度の学習を行う必要がありますか? 使用しないかもしれない多くの優れた機能を提供するフルスタックが必要ですか、それとも、追加のボイラープレートコードを記述し、学習する必要がある場合でも、非常に高速かつ並行して実行される必要最小限のセットアップが必要ですか?新しい言語?
Rails は一部の Web アプリケーション アーキテクチャほど重くはありませんが、NodeJS で同様のスループットを処理するには、より多くのプロセッサ パワーが必要になります。両方のシステムの品質コードを想定しています。いずれかのスタックに悪いコードが書かれていると、スタックが輝かなくなります。要するに、まったく新しい方法を学びたいですか、それとも現在の Ruby の理解を利用して物事をすぐに軌道に乗せたいですか?
決定的な答えではないことは承知していますが、これが決定に役立つことを願っています!