Ich arbeite an einer sehr typischen Webanwendung. Die Hauptkomponente der Benutzererfahrung ist ein Widget, das ein Website-Besitzer auf seiner Startseite installieren würde. Jedes Mal, wenn die Startseite geladen wird, kommuniziert das Widget mit unserem Server und zeigt einige der Daten an, die zurückkommen.
Diese Webanwendung besteht also aus zwei Komponenten:
- die Front-End-Benutzeroberfläche, die der Website-Besitzer zur Konfiguration seines Widgets verwendet
- die Backend-Komponente, die auf den Web-Api-Aufruf des Widgets antwortet
Zuvor lief das alles in PHP. Jetzt experimentieren wir mit Rails, was für #1 (die Front-End-UI) fantastisch ist. Die Frage ist, wie wir #2, die Bereitstellung von Widget-Informationen, effizient umsetzen können. Offensichtlich ist dies eine viel höhere Belastung als das Frontend, da es jedes Mal aufgerufen wird, wenn die Startseite auf einer der Websites unserer Kunden geladen wird.
Ich kann mir zwei offensichtliche Ansätze vorstellen:
A. Paralleler Stapel : Einrichten eines parallelen Stacks, der etwas anderes als Rails verwendet (z. B. unseren alten PHP-basierten Ansatz), aber auf dieselbe Datenbank wie das Frontend zugreift
B. Schiene Metall : Verwenden Sie Rails Metal/Rack, um den Rails-Routing-Mechanismus zu umgehen, aber behalten Sie den Api-Aufruf-Responder innerhalb der Rails-Anwendung
Meine wichtigste Frage:
- Ist Schienen/Metall ein vernünftiger Ansatz für etwas wie dieses?
Aber auch...
- Wird der Aufwand für das Laden der Rails-Umgebung immer noch zu groß sein?
- Gibt es eine Möglichkeit, mit Rails noch näher an das Metall heranzukommen, indem man den größten Teil der Umgebung umgeht?
- Wird Rails/Metal Leistung nähern sich die Perf einer ähnlichen Aufgabe auf gerade PHP (nur suchen für Ballpark hier)?
Und...
- Gibt es eine "C"-Option, die viel besser wäre als sowohl A als auch B? Das heißt, etwas, bevor die Längen der C-Code kompiliert, um binäre und installiert als ein nginx oder Apache-Modul?
Vielen Dank im Voraus für alle Erkenntnisse.