Я работаю над очень типичным веб-приложением. Основным компонентом взаимодействия с пользователем является виджет, который владелец сайта может установить на своей главной странице. Каждый раз, когда загружается их главная страница, виджет обращается к нашему серверу и отображает некоторые данные, которые возвращаются.
Итак, в этом веб-приложении есть два компонента:
- интерфейс пользователя, который владелец сайта использует для настройки своего виджета
- внутренний компонент, который отвечает на вызов веб-API виджета
Ранее все это работало на PHP. Сейчас мы экспериментируем с Rails, который является фантастическим для # 1 (пользовательский интерфейс). Вопрос в том, как сделать # 2, обратную доставку информации о виджетах, эффективно. Очевидно, что это намного более высокая нагрузка, чем внешний интерфейс, поскольку он вызывается каждый раз, когда главная страница загружается на веб-сайт одного из наших клиентов.
Я вижу два очевидных подхода:
A. Parallel Stack : настроить параллельный стек, который использует что-то отличное от rails (например, наш старый подход на основе PHP), но обращается к той же базе данных, что и внешний интерфейс
B. Rails Metal : Используйте Rails Metal / Rack для обхода механизма маршрутизации Rails, но сохраняйте ответчик вызова API в приложении Rails
Мой главный вопрос:
- Является ли Rails / Metal разумным подходом для чего-то подобного?
Но также ...
- Будут ли слишком тяжелыми накладные расходы на загрузку среды Rails?
- Есть ли способ приблизиться к металлу с помощью Rails, минуя большую часть окружающей среды?
- Подойдет ли производительность Rails / Metal к выполнению аналогичной задачи на обычном PHP (просто ищем примерный пример)?
И ...
- Есть ли опция 'C', которая была бы намного лучше, чем и A, и B? То есть что-то, прежде чем перейти к длинам кода C, скомпилированного в двоичный файл и установленного как модуль nginx или apache?
Заранее спасибо за любые идеи.