L’erreur la plus coûteuse que puisse commettre une plateforme de graphiques, c’est d’ouvrir un WebSocket par onglet de navigateur. Ce calcul ne se discute pas : avec 10,000 traders connectés simultanément qui suivent trois symboles chacun, vous avez ouvert 30,000 connexions en amont. La plupart des fournisseurs de données de marché vous brideront avant midi. Ceux qui ne le feront pas vous enverront une facture qui s’en chargera.
Le modèle fan-out
Vera Charts fonctionne avec un fan-out côté serveur : une seule connexion en amont par symbole, quel que soit le nombre de clients qui le suivent. Quand le premier onglet s’abonne à BTCUSDT, nous ouvrons le WebSocket en amont. Quand le dix millième onglet s’abonne, nous l’ajoutons simplement à l’ensemble des abonnés en mémoire et commençons à pousser le même flux de ticks vers son canal SSE.
Quand le dernier onglet se désabonne, nous gardons la connexion en amont ouverte quelques secondes (parce que quelqu’un rouvre presque toujours), puis nous la fermons. Du point de vue du fournisseur, nous sommes un seul client par symbole, même quand dix mille traders regardent.
Ce que cela change pour le coût fournisseur
Pour la crypto, nous utilisons le WebSocket public de Binance : pas de clé API, pas de limite de débit à notre échelle, pas de coût par message. C’est le cas facile. Pour le forex, où tous les fournisseurs facturent soit par symbole, soit par tick, c’est le fan-out qui rend la plateforme économiquement viable. Nous payons pour les symboles auxquels nous nous abonnons, pas pour les onglets qui s’abonnent à nous.
C’est la partie de l’architecture à laquelle nos prop firms partenaires tiennent le plus. Elles ne veulent pas que la facture de données de marché de leur plateforme augmente linéairement avec le nombre de traders. Avec le fan-out, ce n’est pas le cas. La facture évolue avec le nombre de symboles uniques, qui est borné.
Ce sur quoi on ne transige pas
- Fidélité des ticks : chaque abonné reçoit chaque tick. Le fan-out n’échantillonne pas et ne regroupe pas.
- Gestion de la contre-pression (backpressure) : les abonnés lents ne peuvent pas ralentir la connexion en amont. Ils sont mis en file d’attente, puis déconnectés s’ils prennent trop de retard.
- Liste blanche de symboles : les clients ne peuvent pas demander n’importe quel symbole. Le serveur applique la liste blanche avant d’ouvrir une nouvelle connexion en amont.
Si vous évaluez des plateformes pour votre société et que la discussion n’a pas encore abordé les connexions en amont, posez la question. La réponse en dit long sur la façon dont la facture de la plateforme évoluera quand vous grandirez.