チャートプラットフォームが犯しうる最も高くつく間違いは、ブラウザタブごとに WebSocket を一つずつ開くことです。この計算からは言い逃れできません。10,000人のトレーダーが同時にそれぞれ三つのシンボルを見ていれば、30,000本のアップストリーム接続を開いたことになります。ほとんどの市場データベンダーは、昼前には帯域制限をかけてくるでしょう。そうしないベンダーは、同じ効果のある請求書を送ってきます。
ファンアウトのパターン
Vera Charts はサーバー側でファンアウトを行います。何台のクライアントが見ていても、シンボルごとにアップストリーム接続は一つだけです。最初のタブが BTCUSDT を購読すると、アップストリームの WebSocket を開きます。一万番目のタブが購読しても、メモリ上の購読者セットに追加し、同じティックのストリームをその SSE チャンネルに送り始めるだけです。
最後のタブが購読を解除しても、アップストリームを数秒間は開いたままにしておき(ほぼ必ず誰かがまた開くからです)、その後で切断します。ベンダーから見れば、一万人のトレーダーが見ているときでさえ、私たちはシンボルごとに一台のクライアントにすぎません。
それがベンダーコストにどう結びつくか
暗号資産では、Binance の公開 WebSocket を使っています。APIキーは不要で、私たちの規模ではレート制限もなく、メッセージごとのコストもかかりません。これは簡単なケースです。FXでは、どのベンダーもシンボル単位かティック単位で料金を請求するため、ファンアウトこそがプラットフォームを経済的に成り立たせています。私たちが支払うのは購読するシンボルの分であり、私たちを購読するタブの分ではありません。
これは、プロップファームのパートナーが最も重視するアーキテクチャの部分です。パートナーは、プラットフォームの市場データの請求額がトレーダー数に比例して増えることを望んでいません。ファンアウトがあれば、そうはなりません。請求額はユニークなシンボルの数に応じて増えるだけで、その数には上限があります。
妥協しない点
- ティックの忠実性: すべての購読者がすべてのティックを受け取ります。ファンアウトでサンプリングやまとめ送りはしません。
- バックプレッシャーの処理: 遅い購読者がアップストリームを遅くすることはできません。キューに入れられ、遅れすぎた場合は切り離されます。
- シンボルのホワイトリスト: クライアントは任意のシンボルを要求できません。サーバーは新しいアップストリームを開く前にホワイトリストを適用します。
自社のためにプラットフォームを比較検討していて、まだアップストリーム接続の話が出ていないなら、ぜひ尋ねてください。その答えから、事業が成長したときにプラットフォームの請求額がどう推移するかが大いにわかります。