私は、外部ソースからさまざまなイベントを受け取り、さらなるアクションのためにそれらをユーザーにすばやく提示する Web アプリケーションを構築します。Web アプリケーションに Ruby on Rails を使用したいと考えています。このプロジェクトは社内開発プロジェクトです。信頼性が高く複雑なシステムよりも、迅速な開発のためのシンプルで使いやすいソリューションを好みます。
何をすべきか
ユーザーは、Web アプリケーションをブラウザーで開いています。今、電話が来ます。通話は、PBX 監視デーモンによって登録されます。この場合、Asterisk Manager インターフェースを介して。デーモンは、利用可能な情報 (リモート内線番号、ローカル内線番号、通話方向、チャネル ステータス、開始時刻、終了時刻) を何らかの方法で Web アプリケーションに送信します。次に、ユーザーは電話イベントに関する通知を受け取ります。ユーザーはこれで作業できます。たとえば、概要を入力するか、通話を顧客プロファイルに一致させることによって。
PBX での最初のイベント (新しいチャネルの作成など) からブラウザでのポップアップ通知までの期間は短くする必要があります。高速ネットワークを考えると、2 秒以内に到達したいと考えています。イベントに関する単一の情報は、非同期的に作成されます。ローカル拡張機能は、リモート拡張機能とは別に提供される場合があります。ユーザーは、通話が終了する前に要約を入力できます。一方の当事者が電話を切るとすぐに、終了時間、新しいステータスなどがインターフェイスに表示されます。
PBX モニターは 1 つのデータ ソースにすぎません。電子メールや Web フォーム経由のリクエストなど、より多くの監視が行われる予定です。監視デーモンは、必ずしもデータベースまたは Web サーバーと同じホストで実行されるとは限りません。アプリケーションがすぐに何千ものログイン ユーザーや同時リクエストに対応できるようになるとは思いません。しかし、設計上、1 分あたりのイベント数がほぼ同じ 200 人のユーザーがスケーラビリティの問題になることはありません。
どうすればいいですか?
このようなアプリケーションをどのように設計するのか知りたいです。どのような技術を提案しますか? デーモンはどのように情報を伝達しますか? イベントに関するデータは、いつ、誰によってメイン データベースに保存されますか? ユーザーはどのように通知を受けますか? ブラウザはデーモンに代わって完全なデータセットを受け取るべきですか、それとも新しいデータが利用可能であるという短いメモだけを受け取るべきですか? どの JS ライブラリを使用し、サーバー側で必要なコードを作成する方法は?
調査の結果、メッセージ ブローカー、キュー サービス、Rails バックグラウンド タスク ソリューション、HTTP プッシュ サービス、XMPP など、多くの可能性に出会いました。私が調べようとしているいくつかの製品: ActiveMQ、Starling と Workling、Juggernaut と Bosh。
多分私は高すぎることを目指していますか?Rails の XML や JSON インターフェイスを使用するなど、もっと簡単な方法があれば、さらに読みたいと思います。
テキストが長すぎないことを願っています:)
ありがとう。