レジデンシャルプロキシのプールに関する説明の多くは、これを倉庫のように聞こえさせる。棚に並んだ大量のアドレスが、配布されるのを待っているというイメージだ。しかしこの心的モデルは間違っており、それが実際の運用上の驚きを生み出している。なぜなら、プールは在庫ではないからだ。プールは絶えず参加と離脱を繰り返す実際の家庭用接続の集団であり、プールの挙動について高度なチームを悩ませるほぼすべての事象は、この一つの事実に由来する。
ここでは、プールが実際にどのように構築されているか、リフレッシュとは技術的に何を意味するのか、そしてそれに基づいて設計すべき結果について説明する。
プールはどのように構築されるか
レジデンシャルプールのアドレスは実在の人々の家庭用インターネット接続に属しており、これはプロバイダがデータセンターの範囲を購入するようにアドレスを単純に買うことができないことを意味する。アドレスは提供されなければならない。
主流のメカニズムはソフトウェアを通じた参加である。ある人がアプリケーション、あるいはそれに組み込まれたSDKをインストールすると、接続の一部を共有する見返りに何かが提供される。広告なしのプラン、有料機能、少額の支払い、サービスへのアクセスなどだ。そのデバイスがオンラインで十分にアイドル状態であれば、ネットワークに代わってリクエストを運ぶことができる。プロバイダはそのSDKを組み込む開発者との関係を維持しており、その関係がプールの地理的・ネットワーク的な形を決定する。そのため、見出しの総数が似ている二つのプロバイダでも、特定の国では大きく異なることがある。この取り決めの倫理性と、それをどう監査するかについては、プロバイダがどのように倫理的にIPを調達しているかで取り上げている。
内面化しておくべき結論はこうだ。プールの構成は、どこでどのアプリが人気かに従属している。均等に分布しているわけでも、中央で計画されているわけでもなく、それらのアプリがユーザーを獲得したり失ったりするにつれて変化する。
「リフレッシュ」が実際に意味すること
プールはプロバイダとは無関係の理由で絶えず入れ替わっている。
人がアプリを閉じたり、電話をポケットにしまったり、家を出たり、眠ったりすると、デバイスはオフラインになる。ルーターが再起動したり、ISPのリース期限が切れたりすると、家庭用接続は新しいアドレスを取得する。そのため、同じ家庭でも明日には異なるアドレスとして現れることがある。参加者は離脱する。新しい参加者が加わる。それに加えて、プロバイダ自身も、評判が悪化した、あるいは動作が不安定になったアドレスを除去する。
これらはいずれもメンテナンスの時間帯ではない。これは定常状態であり、背景で絶えず継続的に起きている。そのため、レジデンシャルプールはストックというよりフローとしてモデル化する方が適切である。
プールサイズは可用性ではない
これが実務上の核心であり、見出しの数字が誤解を招く部分である。
公表されるプールの数値は通常、累積的なものだ。すなわち、ネットワークがある期間に観測したアドレス数である。あなたの体験を左右するのは同時可用性、つまり今この瞬間に、あなたが指定した国で、あなたが適用したフィルターのもとで、何個の異なるアドレスがあなたにサービスを提供できるかということだ。この二つの数字は桁違いに異なり、あなたの作業を制約するのは後者だけである。
さらに三つの要因がそれを狭める。地理:グローバルな数値はあなたの市場については何も語らない。これは国別の可用性で論じている論点だ。フィルター:都市やASNを追加すると、すべての条件に一致するアドレスだけが対象となるため、対象集合は急激に減少する。そして時間:プールは人間の活動に従うため、同じ国でも現地の夜には深く、朝の4時には浅い。
結論として、「プールはどれくらい大きいか」は実用的な意味ではほぼ答えようがない問いである一方、「自分のフィルターで、自分の同時実行数で、自分が実行する時間帯に、実際に何個の異なるアドレスが得られるか」は20分で測定可能であり、それこそが重要な数字なのだ。
チャーンが説明する5つの挙動
プールを在庫ではなく集団としてモデル化すると、それ以外では不可解に見える一連の挙動が明らかになる。
スティッキーセッションが早期に終了することがある。 あなたは10分間のセッションを要求したが、それは4分しか続かなかった。基盤となるデバイスがオフラインになったからだ。スティッキーセッションはある期間アドレスを保持するためのベストエフォートであり、インフラの賃貸契約ではない。そうでないと想定するコードは断続的に壊れる。これを通常のイベントとして扱い、スティッキー対ローテーティングにあるように、エラーとして扱うのではなく変化を検知してシーケンスを再開すべきである。
同じアドレスが再出現する。 ローテーションは重複なくリストを巡回するのではなく、毎回独立して選択を行う。そのため繰り返しは想定内であり、狭いフィルターが対象集合を縮小させると頻繁になる。これは不具合ではなく算術の結果であり、IPがローテーションしないで扱われている原因の一つである。
アドレス間でパフォーマンスが変動する。 これらは独自の帯域幅、輻輳、家庭内使用状況を持つ消費者向け接続であり、レイテンシの分布はデータセンターインフラよりもはるかに広い。パーセンタイルはこれを説明する正直な方法であり、平均値は実際にスケジュールに影響を及ぼすテール部分を隠してしまう。
可用性は一日を通じて変動する。 同じ市場で20:00には成功し、04:00には苦戦するジョブは、通常ターゲットの変化ではなく、日周的なプールの深さを見ているにすぎない。
同じジョブの二回の実行で結果が異なる。 異なるアドレス、異なるネットワーク、異なる評判。ある程度のばらつきは本質的なものであり、すべての変動を回帰として扱うのは多くの調査を無駄にする。
集団のために設計する
これに基づいて構築する人にとっての実践的な結論。
アドレスを使い捨てとして扱い、ルートを管理単位とすること。アドレスを選ぶことはできず、保持し続けることもできないため、ヘルストラッキングはルートおよびセッションのレベルで行うべきであり、これは大規模なプロキシヘルスの監視とプロキシマネージャーの構築にあるモデルである。
ジョブを再開可能かつ冪等にすること。セッションがシーケンスの途中で消失する可能性がある以上、シーケンスは作業を重複させたりレコードを破損させたりすることなく再開できる必要がある。
TTLを意図的に選ぶこと。長いTTLは保証ではなくリクエストであり、消費者向け接続で1時間を要求すると、フロー途中でのドロップに見舞われることになる。フローが実際に必要とするものを要求すべきだ。
マーケティング上の数値を読むのではなく、実効プールを測定すること。実際のフィルターの下で数百の出口をサンプリングし、異なるアドレスと組織の数を数え、自分が実行する時間帯に繰り返し測定する。この数字こそが、実際に必要なプロキシIPの数における考え方と併せて、見出しの数字ではなく、同時実行数と分散に関する判断の材料とすべきものである。
そして集団を念頭に置いてスケジュールを組むこと。小規模な市場に対して深夜にヘビーなジョブを実行するのは、無意味にプールと戦っているだけである。
外部から見た良いプール管理とは
プロバイダの内部を監査することはできないが、その効果は観測可能である。実行する時間帯を通じて一貫した成功率は、プールが総量として大きいだけでなく、あなたの市場において十分な深さがあることを示唆する。出口サンプルにおける消費者向けISP組織の幅広い分布は、希釈されたものではなく本物のレジデンシャル供給を示唆しており、これはデータセンターIPがレジデンシャルとして販売されているのを見分けるでのチェック方法である。ルックアップサービスが報告するものだけでなく、ターゲットが実際に信じているものと一致するジオロケーションは、地理的なラベリングが維持されていることを示唆する。そして自らの調達方法を不快感なく説明できるプロバイダは、プール全体がどのように管理されているかについて何かを語っている。
結論
レジデンシャルプールは在庫ではなく集団である。購入されるのではなく参加を通じて構築され、その形は人々が実際に使うソフトウェアに従い、デバイスがオフラインになったり、アドレスが再割り当てされたり、参加者が出入りしたりするにつれて絶えず入れ替わる。この単一の特性が、スティッキーセッションの早期終了、アドレスの再出現、大きく変動するレイテンシ、一日を通じた可用性の変動、そして同一の二回の実行が異なる結果を生み出すことを説明する。これに向けて設計せよ。アドレスを使い捨てとして扱い、ルートごとにヘルスを追跡し、シーケンスを再開可能にし、フローに合ったTTLを選び、あなたを制約するものとは異なる何かを説明する見出しの数字を信じるのではなく、自分自身のフィルターで自分自身の時間帯における実効プールを測定せよ。
そのプールこそがレジデンシャルプロキシの基盤であり、195か国にまたがって国、地域、都市、ASNのフィルターを備え、GBあたりの価格設定により、自分自身の実効的な可用性を測定するコストはテストで使用する帯域幅のみで済む。