Я собираюсь создать веб-приложение, которое будет принимать различные события из внешних источников и быстро представлять их пользователю для дальнейших действий. Я хочу использовать Ruby on Rails для веб-приложения. Этот проект является внутренним проектом развития. Я бы предпочел простые и простые в использовании решения для быстрой разработки по сравнению с высоконадежными и сложными системами.
Что он должен делать
Пользователь открыл веб-приложение в своем браузере. Теперь приходит телефонный звонок. Телефонный звонок регистрируется демоном мониторинга УАТС. В этом случае через интерфейс Asterisk Manager. Демон каким-либо образом отправляет доступную информацию (удаленный добавочный номер, локальный добавочный номер, направление вызова, состояние канала, время начала, время окончания) в веб-приложение. Далее пользователь получает уведомление о событии телефонного звонка. Пользователь теперь может работать с этим. Например, введя сводку или сопоставив вызов с профилем клиента.
Время от первого события на УАТС (например, создание нового канала) до всплывающего уведомления в браузере должно быть коротким. Учитывая быструю сеть, я хотел бы быть в течение двух секунд. Отдельные фрагменты информации о событии создаются асинхронно. Локальный добавочный номер может поставляться отдельно от удаленного добавочного номера. Пользователь может ввести сводку до завершения разговора. Время окончания, новый статус и т. Д. Появятся на интерфейсе, как только одна из сторон повесит трубку.
Монитор УАТС - это всего лишь один источник данных. Там будет больше мониторов, таких как электронная почта или запрос через веб-форму. Демоны мониторинга не обязательно будут работать на том же хосте, что и база данных или веб-сервер. Я не представляю, что приложение будет обслуживать тысячи зарегистрированных пользователей или параллельные запросы в ближайшее время. Но при проектировании 200 пользователей с примерно одинаковым количеством событий в минуту проблема масштабируемости не должна быть.
Как мне поступить?
Мне интересно знать, как бы вы разработали такое приложение. Какие технологии вы бы предложили? Как демоны передают свою информацию? Когда и кем хранятся данные о событии в основной базе данных? Как пользователь получает уведомление? Должен ли браузер получать полный набор данных от имени демона или просто краткую заметку о том, что доступны новые данные? Какую библиотеку JS использовать и как создать необходимый код на стороне сервера?
В своих исследованиях я обнаружил множество возможностей: брокеры сообщений, службы очередей, некоторые решения фоновых задач для рельсов, службы HTTP Push, XMPP и так далее. Некоторые продукты, которые я собираюсь изучить: ActiveMQ, Starling and Workling, Джаггернаут и Бош.
Может быть, я стремлюсь слишком высоко? Если есть более простой или более простой способ, например, использование интерфейса Rails для XML или JSON, я хотел бы прочитать это еще больше.
Надеюсь, текст не слишком длинный:)
Спасибо.