Я работаю над приложением в области Mobile/VOIP. Это действительно серая зона для меня. Вот некоторые подробности о приложении:
- Это в основном похоже на автоматическое пополнение / предоплаченный мобильный сервис.
- Будет иметь логику средней сложности по сравнению с предыдущими приложениями ERP, которые я написал.
- Разделы Views в ответе будут представлять собой обычный текст, который будет отправлен пользователю в виде запроса SMS/USSD, и голосовой XML (VXML), который будет отправлен пользователям в качестве ответа IVR.
- Логика маршрутизации очень проста, так как для каждого типа ответа будут важны только два-три URL-адреса.
Ограничения:
У нас есть базовая система, построенная на Perl (это устаревшая система, которая обслуживает многие другие услуги, связанные с VOIP/мобильной связью), и система учета для отслеживания прибылей и убытков, но она стала очень сложной. Поэтому мы решили сделать это приложение отдельно и использовать только SMS/USSD и IVR. Однако каждый пользователь этого приложения должен быть зарегистрированным пользователем базовой системы для целей учета; этого мы можем легко добиться, просто вызвав API.
Теперь для отправки ответа/ответа на IVR и USSD нам нужно развернуть приложение у поставщика, который предоставляет эти возможности. Но мы не хотим постоянно входить на их серверы для ежедневных отчетов и учета, поскольку для каждого из наших клиентов у нас будут разные потоки для системы USSD/SMS/IVR.
Итак, мы решили, что это новое приложение действительно будет разделено на два подприложения.
- Одно приложение будет обрабатывать ПОЛЬЗОВАТЕЛЬСКИЙ интерфейс с доменом USSD/SMS/IVR и будет развернуто на серверах поставщика, которые мы будем называть «клиентское ПО».
- Второе приложение будет обрабатывать всю основную бизнес-логику и системы отчетности и будет развернуто на наших серверах, к которым у нас будет полный доступ. Мы будем называть это «промежуточным ПО».
Основной поток приложения:
- Пользователь набирает короткий код.
- Вызов поступает на серверы наших поставщиков, где приложение клиентского ПО обработает запрос и зарегистрирует его как пользователя в своей локальной базе данных.
- Клиентское ПО также будет вызывать API промежуточного ПО. Чтобы зарегистрировать этого пользователя там, а также для основной бизнес-логики, своевременной автоматической перезарядки и т. д.
- Затем промежуточное программное обеспечение также сделает вызов API к базовой системе, чтобы зарегистрировать этого пользователя там, а также для целей учета.
Теперь будет много таких клиентских приложений, взаимодействующих с одним промежуточным приложением. Мы решили создавать эти приложения на Ruby. Для этого я бы следовал архитектуре RESTful, так как задействовано много вызовов API.
Из трех фреймворков Rails, Padrino или Sinatra, подходят ли какие-либо из них специально для этого проекта? Я был бы признателен за хорошее сравнение с подробными соответствующими плюсами и минусами, если это возможно.