私は非常に典型的な Web アプリケーションに取り組んでいます。ユーザー エクスペリエンスの主要コンポーネントは、サイトの所有者がフロント ページにインストールするウィジェットです。フロント ページが読み込まれるたびに、ウィジェットはサーバーと通信し、返されたデータの一部を表示します。
したがって、この Web アプリケーションには 2 つのコンポーネントがあります。
- サイト所有者がウィジェットを構成するために使用するフロント エンド UI
- ウィジェットの Web API 呼び出しに応答するバックエンド コンポーネント
以前は、これらすべてを PHP で実行していました。現在、Rails を試しています。これは 1 番目 (フロント エンド UI) にとって素晴らしいものです。問題は、#2 のウィジェット情報のバック サービングを効率的に行う方法です。クライアントの Web サイトの 1 つでフロント ページが読み込まれるたびに呼び出されるため、明らかにこれはフロント エンドよりもはるかに高い負荷です。
2 つの明白なアプローチを見ることができます。
A.並列スタック: Rails 以外のもの (たとえば、古い PHP ベースのアプローチ) を使用する並列スタックをセットアップしますが、フロント エンドと同じデータベースにアクセスします。
B. Rails Metal : Rails Metal/Rack を使用して Rails ルーティング メカニズムをバイパスしますが、API コール レスポンダーは Rails アプリ内に保持します。
私の主な質問:
- Rails/Metal は、このようなものに対する妥当なアプローチですか?
だけでなく...
- Rails 環境をロードするオーバーヘッドは依然として大きすぎますか?
- ほとんどの環境をバイパスして、Rails を使用して金属にさらに近づく方法はありますか?
- Rails/Metal のパフォーマンスは、単純な PHP での同様のタスクのパフォーマンスに近づきますか?
と...
- AとBの両方よりもはるかに優れた「C」オプションはありますか? つまり、バイナリにコンパイルされ、nginx または apache モジュールとしてインストールされる C コードの長さに進む前に何か?
洞察を事前に感謝します。