ユーザーの行動をキャプチャするための単純な分析バックエンドを構築する必要があります。これは、Google アナリティクスや Mixpanel のデータと同様に、Web ページの Javascript スニペットを介してキャプチャされます。
システムは、ほぼリアルタイムのブラウザー データ (ページのスクロール位置、マウスの位置など) をキャプチャする必要があります。ユーザーのページの状態を 5 秒ごとに記録します。各測定には 3 つの属性しかありませんが、頻繁に取得する必要があります。
データは必ずしも 5 秒ごとに送信する必要はありません。頻繁にバスを使用することはできませんが、ユーザーがページにアクセスしている間にすべてのデータを取得することが不可欠です。つまり、1 分間に 1 回バスを走らせることはできず、119 秒後に出て行った誰かの最後の 59 秒間のデータを失うことはありません。
可能であれば、近い将来に拡張できるシステムを構築したいと考えています。つまり、それぞれ 100 人の同時訪問者、つまり 100,000 人の同時ユーザーがそれぞれ 5 秒ごとに 1 つのイベントを送信する 10,000 サイトで動作するシステムを構築したいと考えています。
別のシステムを使用して実行できるデータのクエリについては心配していません。データ自体のキャプチャを処理する方法に最も興味があります。
要件
上記の予算に基づいて、システムは 100,000 ユーザーのプールから来る毎秒 20,000 イベントを処理する必要があります。
このサービスを Heroku でホストしたいのですが、Rails で多くの作業を行ってきましたが、高スループット システムについてはまったくの初心者です (Rails を使用して処理しないことを除けば)。
質問
- これを行うのに適した商用システムはありますか (Pusher のように、データのキャプチャと配布に適しています)?
- HTTP リクエストまたは WebSocket を使用してこれを行う必要がありますか?
- node.js はこれに適した選択ですか、それともトレンディですか?
- ソケットベースのソリューションを選択した場合、Heroku の dyno が Web サーバーごとに処理できるソケットの数
- ストレージ用にMongo / Reddisなどを選択する際の適切な考慮事項は何ですか
- これは、実際には 2 つの解決策が必要なタイプの問題でしょうか? 1 つ目は、適切な規模を迅速かつ安価に実現する方法であり、2 つ目は、より少ない増分コストでその規模を超えることができますが、前もってより多くの開発作業が必要になりますか?