← ブログに戻る

セルフホストとAPIのIPジオロケーションデータベース

セルフホストとAPIのIPジオロケーションデータベース

セルフホストのIPジオロケーションデータベースは、ダウンロードして自分のプロセス内でクエリするファイルです。一方、IPジオロケーションAPIは、データを保持し更新してくれるプロバイダーへのネットワーク呼び出しです。選択は主に、どこでコストを払うかの問題です。運用作業と更新の規律で払うのか、ネットワークのレイテンシと他社サービスへの依存で払うのかです。

IPデータベースのセルフホストで必要なこと

セルフホストのデータベースでは、バイナリファイル(ベンダーや含まれるフィールドによって、数十メガバイトから数百メガバイト程度)がアプリケーションの隣に置かれます。検索はメモリ上の読み取りで、通常はマイクロ秒で終わり、リクエストごとのネットワークホップはなく、アドレスがインフラの外に出ることもありません。この最後の点は、プライバシー審査で訪問者のIPを第三者と共有すべきでない個人データとして扱う場合に重要です。

コストは、ファイルを取り巻くすべてにかかります。誰かがスケジュールに従って新しいリリースをダウンロードし、検証して、すべてのサーバーやコンテナに展開し、デプロイで古いコピーが配布されてしまった場合にも対処しなければなりません。ライセンスはプロバイダーによって異なり、商用データベースの中には、無償のものとは異なる条件を持つものもあるため、製品にファイルを組み込む前に確認してください。また、データベースは含まれているものにしか答えられません。VPN、Tor、不正利用のフラグが必要なら、それらは別のファイルやサービスから得ることになり、独自の周期で更新しなければなりません。

IPジオロケーションAPIで変わること

APIは、データパイプラインをプロバイダーに移します。アドレスを送ると構造化されたJSONが返り、背後のデータは、デプロイに手を加えることなく更新されます。小規模なチームにとっては、繰り返し発生する雑務がなくなります。また、ファイルとして配布するのが面倒なフィールドも簡単に取得できます。ipto のIP検索を1回呼び出すだけで、国、都市、ASN、組織、通貨コードに加えて、is_vpn、is_tor、is_abuser、is_datacenter、bogon のフラグと bogon_type が返されます。

トレードオフは現実的なものです。すべての検索にネットワークの往復が加わるため、レイテンシはマイクロ秒ではなくミリ秒単位になります。プロバイダーの可用性とレート制限に依存することになり、タイムアウト、フォールバック、できればキャッシュが必要です。そして、アドレスは第三者に送信されるため、プライバシーに関する文書に記載すべき事項になります。ipto は無料でサインアップ不要、1日1,000リクエストまで無料で利用でき、プロトタイプや低ボリュームのサービスの運用には十分ですが、トラフィックの多いワークロードは、この上限を踏まえて計画してください。

鮮度は精度と同じではない

APIは「ライブ」だから、より正確だと思われがちです。たいていの場合、より新しいだけです。アドレスを場所に対応付けるという根本的な問題は、どちらでも同じであり、特にモバイルや住宅用の接続では、どちらのモデルでも都市レベルの結果は国レベルの結果より弱くなります。違うのは、データがどれだけ古くなり得るかです。セルフホストのファイルは、最後に更新に成功した時点と同じだけ古く、APIはプロバイダーの更新サイクルと同じだけ古くなります。ipto では、脅威フィード(VPN、Tor、不正利用)は6時間ごとに、IPとASNのデータセットは毎日更新されます。どちらもリアルタイムではなく、新しいVPNエンドポイントは、フィードが取り込むまでフラグが立ちません。

実用的な判断基準

  • 非常に大量、あるいは厳しいレイテンシの予算がある場合:呼び出しごとのネットワークコストとレート制限がなくなるため、通常はローカルデータベースが有利です。
  • 厳格なデータ所在地のルールがある場合:アドレスがどこにも送信されないため、検索をローカルに留めます。
  • 小規模なチーム、中程度のトラフィック、リスクシグナルが必要な場合:フィード、ASNデータ、レピュテーションがすでにまとまっているため、通常はAPIのほうがエンジニアリング工数の面で安上がりです。
  • その中間:アドレス(またはネットワーク範囲)をキーとするローカルキャッシュと、適切な有効期間を持つAPIを使います。多くのアプリケーションは同じアドレスを繰り返し目にするため、キャッシュがトラフィックの大半を吸収します。

モデルを組み合わせることもできます。ホットパスにはローカルの国レベルのファイルを使い、リクエストが異常に見えて、ASN、VPN、不正利用の文脈が必要なときだけAPIを呼び出します。VPN・Tor・プロキシチェッカーは、特定のアドレスでそれらのリスクフラグが具体的にどう見えるかを示し、ASN検索はその背後にあるネットワークの所有者を示します。リクエストとレスポンスの形式はAPIドキュメントに記載されています。

決める前に試す

APIモデルを評価するもっとも安価な方法は、実際のトラフィックのサンプルを通して比較することです。ログから数件のアドレスをIP不正利用チェッカーに貼り付けるか、スクリプトから検索エンドポイントを呼び出して、サーバーが実際に動作している場所からの往復時間を測定します。一般的な主張を信じるのではなく、自分のレイテンシとヒット率を測定し、残る違いが、データパイプラインを自前で運用することを正当化するかどうかを判断してください。

率直な回答

通常はそうです。ローカルの検索はネットワークの往復のないメモリ上の読み取りだからです。API呼び出しにはネットワークのレイテンシが加わりますが、繰り返し現れるアドレスについては、ローカルキャッシュでほぼ隠せます。
本質的にはそうではありません。どちらも似た種類のデータでアドレスを場所に対応付けるため、どちらの場合も都市レベルの精度には限りがあります。APIは、主にプロバイダーが更新を担うので、より新しいということです。
ipto は、ダウンロード可能なデータベースではなく、1日1,000リクエストまで無料の無料APIとWebツールとして提供されています。完全にローカルな検索が必要なチームは、別途ローカルのファイルが必要です。
← ブログに戻る