ほとんど毎日、ソース件数だけを表示するタブを開きっぱなしにしている。見栄えのするものではない――グラフもフィルターもなく、私たちが掲載情報を取得している1,375のサイトそれぞれの横に数字と、最後にチェックインした時刻が並んでいるだけだ。たいていの日は、インフラというものがそうあるべきように退屈だ。だがこの夏は違った。そして、何が起きたのかという話は、中古車を探しているあなたにとって、私たちが代わりに書けるような「中古車の買い方」的なアドバイスのほとんどよりも役に立つはずだと思う。これは、「ライブデータ」という言葉が実際に何を意味するのか――それを支えているのが、あなたに何の義理もない1,375個の別々のウェブサイトである場合には――という話だ。
7月半ば:誇らしかった数字
7月半ばまでに、ソースレジストリを73地域にまたがる1,190ソースまで押し上げていた――重複エントリや、気づかぬうちに件数を水増ししていたリンク切れを何週間もかけて整理した結果だ。1,190という、実在してチェックインしている数字は誇るべきものだと感じていたのを覚えている。個々のディーラーサイト、クラシファイド広告サイト、オークションのフィードが数多く含まれており、それぞれが独自のHTML構造、独自のレート制限、そしてスクレイパーを「客」と見るか「攻撃」と見るかについて独自の見解を持っている。
その後、以前から進めていた積み残し案件の消化キャンペーン――何ヶ月も保留になっていた683ソースの待機リストを、ブロックされていたものも、そもそも構築すらされていなかったものも含めて処理していく作業――が実を結び始めた。7月後半だけで、そのうち274件が構築・接続された。月末には稼働件数が1,464まで伸びていた。スクリーンショットを撮りたくなるような一週間だ。
8月初旬:241ソースが消えた
そして、一週間を台無しにする数字がやってきた。一夜にして241のソースが劣化状態に陥ったのだ。私たちが何かをしたせいではない――プロキシプロバイダーのアカウントが請求関連で失効しており、私たちのトラフィックのかなりの部分は、スクレイパーをレート制限するサイトにブロックされないよう、まさにローテーションIPを経由させている。プロキシがなければ、新しいページも、新しい掲載情報も取得できない。ソースは自分が壊れていると宣言してくれるわけではない。ただ静かに新しいデータを返さなくなるだけで、古い掲載情報はそのまま最新であるかのような顔をして居座り続ける。
これは、どの車情報サイトの掲載件数を見ても――私たちのサイトも含めて――わざわざ調べにいかない限り表には出てこない部分だ。「ライブ」なマーケットプレイスには、古びた行と新しい行が隣り合って存在していても、外から見れば見分けがつかないことがある。私たちは、死んだプロキシプールがこれ以上静かに品質を劣化させないよう、実際のプロキシ健全性チェックに新しいクロールのディスパッチをゲートし、事態を悪化させかねないスケジュールの一部を一時停止した。華々しい仕事ではない。こういう仕事は、あなたの耳に一切入らないとしたら、それは誰かがきちんと仕事をこなした証拠だ。
余談だが、はっきり言っておく価値がある。毎日きっちり同じ、切りのいい掲載件数を謳っているサイトがあるとすれば、それは実際にはライブではないか、今回のような週について何も語っていないかのどちらかだ。
フリーズ
プロキシの更新でほとんどは解決した。予想していなかったのは、数週間後にクローラー自体がロックしてしまったことだ――ティアダウン処理のデッドロックで、19本あるワーカースレッドのうち18本がfutex_waitの状態で止まり、CPUはゼロ使用のまま75時間ぶっ通しでそうだった。クラッシュもなければ、誰かに向かって叫ぶエラーログもない。ただ……何も起きていないだけなのに、ダッシュボードは最後に成功したパスをまるで最新であるかのように表示し続けていた。私たちはそのホストにまだウォッチドッグを入れていなかった――こういう文は、書かれている出来事が一度自分の身に起きたあとでしか書けない類のものだ。
私たちはウォッチドッグを構築した。半端に劣化したクロールが、良い行を悪い行で静かに置き換えてしまうリスクを冒すよりは、プロキシの更新が安定したと確認できるまでスケジュールを一時停止することを選んだ――クロールされたソースの掲載情報はマージではなく置き換えられるため、悪いパスは単にデータを追加し損ねるだけでなく、積極的に良い行を削除してより悪いものに差し替えてしまいかねない。この非対称性こそが、劣化した状態で走らせるくらいなら、一日古いままの方がましだと私たちが考える理由だ。
数字が落ち着いた先
これが今日時点の件数と、ここに至るまでの6週間の推移だ。
最終的に落ち着いたのは73地域にまたがる1,375ソースで、1,108,535件のライブ掲載情報を供給しており、そのうち12,823件が現在、地域コホートより安値だとフラグ付けされている。これは7月のピークよりおよそ90ソース少ない――劣化した241ソースの一部は完全には復旧せず、その中の何件かは、その間にボット対策の態勢を変えていて、再接続ではなく再構築が必要になったサイトだった。まだいくつかは対応中だ。
これがあなたにとって実際に意味すること
この話のどれ一つとして、あなたがどの車を買うべきかを変えるものではない。だが、私たちのサイトに限らず、どの車情報サイトの「ライブ在庫」件数を見るときの読み方は変わるはずだ。現在、地域別件数のトップに立っているのはフランスで67,569件、僅差で日本が61,940件と続いている。そしてこれらの数字は動く――中古車市場そのものがそこまで速く変動しているからではなく、それを監視しているインフラの方が変動しているからだ。ソースが劣化していたために3日前のまま古くなっている掲載情報は、プラットフォームがその違いについて正直でない限り、新しい掲載情報とまったく見分けがつかない。
私たちは、自分たちの数字が決して揺らがないふりをするよりも、75時間のフリーズについて正直に話す方を選ぶ。悪い一週間があったことを一度も認めないデータセットは、信頼を強めるべき対象ではなく、むしろより警戒すべき対象だ。



