OddFeedsは、ライブスポーツオッズのフィードを運用しています。数十のソースからリアルタイムで賭けオッズを収集し、継続的に更新される1つのストリームとして配信します。
そのストリームは、オッズを読み取ってアービトラージの機会を検出するスポーツアービトラージプラットフォーム、OddStormに供給されます。アービトラージに妥協は許されません。価格の到着が1秒遅れたり、わずかに誤っていたりするだけで、単なる表示崩れにとどまらず、数百万件もの誤ったアービトラージにつながります。そのため、このフィードには常に満たすべき厳格な要件が1つあります。それは、すべてのソースにおいて、常に高速かつ正確であり続けることです。
どちらもスポーツデータおよびアービトラージグループであるOddStorm.Companyに属しています。本記事では、OddFeedsがFourA上でパイプラインをどのように運用しているかを紹介します。
月間2億5,000万件以上のrequest。約50TBのトラフィック。1〜2秒ごとの再スキャン。失敗したrequestに対するクレジット消費はゼロ。
1〜2秒ごとに市場をスキャン
オッズは常に変動するため、OddFeedsは数十のソースにわたり1〜2秒ごとにオッズを再取得します。この頻度では、数値は急速に増大します。月間2億5,000万件以上のrequestと、約50TBのトラフィックです。これらのソースの多くは高度なBot対策の背後にあり、一般的なスクレイピング環境ではここでコストが急増し始めます。
通常のアプローチが破綻する理由
この規模になると請求額は跳ね上がりますが、それはツールの課金体系に依存します。試行ごとに課金されるツールの場合、ブロックされるたびに無駄なコストが発生し、数億件規模のrequestでは失敗した試行の費用だけで有効な支出を上回ることさえあります。帯域幅で課金されるツールは一見安価に見えますが、トラフィックが大きくなると高額になります。1GBあたり0.30ドルの場合、月間50TBはブロックを一切考慮しない状態でも月額15,000ドル、年間180,000ドルに達します。さらにどちらのモデルでも、最も難度の高いソースの読み込みには実ブラウザとクリーンなネットワークパスが必要となり、すべてのrequestに対してそれを実行するのは低速かつ高コストです。毎秒市場を読み取るパイプラインに、こうした余計なコストを支払う余裕はありません。
成功した処理にのみ課金
FourAでは、失敗したrequestのクレジット消費はゼロです。正常に配信された有効なresponseに対してのみ課金されます。この単一のルールによって請求の構造が変わります。ブロック、タイムアウト、再試行によるコストの積み増しがなくなり、OddFeedsが実際に受信したデータ量に応じてコストが決まります。この規模において、失敗時のコストをゼロにすることは、予測可能な月額コストを維持できるか、ソースの挙動によってコストが変動し続けるかの違いとなります。
動作する最も軽量な手法を採用
FourAはすべてのrequestを同じ方法で送信するわけではありません。難度の低いソースは、軽量なrequestエンジンによって直接読み取られます。ソース側から制限を受けた場合でも、ブラウザプロファイルを適用したproxy endpointにより、ブラウザを起動することなく大部分のページを単独で取得します。保護された多くのソースに対してはこの方法で十分であり、低コストを維持できます。
ブラウザエンジンを必要とするのは極めて難易度の高いソースのみであり、それも最初の1回だけです。実際のブラウザと同様にサイトを読み込み、認証済みの有効なセッションを確立します。その後、そのセッションは軽量エンジンに引き渡され、わずかなコストで数千回にわたり最新のオッズを取得するために再利用されます。
したがって、コストのかかる処理パスが実行される頻度は極めて低く、初回の1回しか発生しません。そのコストは、その後に続く多数の安価な読み込み全体に分散されます。下図はそのような高難度のセッションの1例です。セッション確立のための1回のリクエストだけが高コストで、その後に安価な更新処理のロングテールが続きます。
URLを受け取ってコンテンツを返すFourAのワンショットendpointであるAutoは、OddFeedsが新しいソースをマッピングする際の検出に使用されます。本番パイプラインは、コアとなるrequest、proxy、browserの各endpointを直接駆動し、レコードあたりのコストを低く抑えるようオーケストレーションされています。
ソース側の対策に対する信頼性の維持
ソースの挙動はそれぞれ異なります。特定の国にのみオッズを配信するものもあれば、アクセスごとにチャレンジを要求するものもあります。FourAは各requestを適切なエグジットと最適なエンジンへルーティングするため、ソースごとに人間が再調整することなくフィードの取得を継続できます。目的は技術的な誇示ではありません。周囲のソースが変化し続けても、稼働し続け、正確性を維持する堅牢なデータパイプラインの実現です。
成果
OddFeedsは、月間2億5,000万件以上のrequestと50テラバイトを超えるライブオッズフィードを1〜2秒ごとに更新して運用しています。コストは試行回数やブロック数ではなく、取得に成功したデータ量に応じてスケールします。難度の高いソースも一度解決すれば以後は低コストで読み取り可能であり、失敗によるコストは発生しません。これにより、この規模のフィードにおいて速度と低コストの両立が実現されています。
同一のインフラストラクチャ上でパイプラインを構築
FourAは、OddFeedsを支えるプラットフォームです。成功したrequestに対してのみ支払いが発生し、難度の高いソースを一度解決すれば、失敗によって請求額が膨らむことなくスケールできます。無料で始める、または料金プランを確認する。