Я пишу веб-сервис Rails, который взаимодействует с различным оборудованием, разбросанным по всей стране.
Когда выполняется вызов веб-службы, приложение Rails затем пытается связаться с соответствующим компонентом оборудования, получить необходимую информацию и ответить веб-клиенту. Время между звонком клиента и ответом может составлять до 10 секунд, в зависимости от множества факторов.
Я не хочу разделять вызов веб-службы на две части (запросить информацию, немедленно ответить ожидающим ответом, а затем принудительно вызвать другой вызов API для получения фактических результатов).
Я в основном вижу два варианта. Либо запустить JRuby и использовать многопоточность, либо запустить несколько обычных экземпляров Ruby и надеяться, что не многие люди будут пытаться использовать службу одновременно. JRuby кажется намного лучшим решением, но оно все еще не является общепринятым и имеет встроенную поддержку в Heroku и EngineYard. Решение для нескольких экземпляров выглядит как полный кладж.
1) Я прав насчет двух моих вариантов? Есть ли лучший, по которому я скучаю?
2) Есть ли простой вариант развертывания для JRuby?