494文字
2分
編集

Vercel bulk redirects提供、プロジェクト最大100万件の静的リダイレクト

リダイレクトは小規模では単純だが、数百万件では遅延とコストがシステム課題になる。従来、ワイルドカードやregexを含む複雑なルールはrouting rulesでプロジェクトあたり最大約2000件までを順序付きリストとして評価し、1リクエストで多くの高コストなマッチ評価が走り得る。middlewareは柔軟だが毎リクエストで追加コードが走り遅延が乗る。低遅延で数百万件を扱うには、リクエストあたりほぼ定数時間または対数時間に近い専用lookupが必要で、グローバルルーティング高速化で使ったBloom filterアプローチを拡張し、bulk用lookup経路を追加。

#主要な変更点

  • bulk redirectsはPro/Enterprise向け。プロジェクト設定・ダッシュボード・API・CLIから設定可能で、現行上限はプロジェクトあたり100万件。さらに必要ならセールス窓口への問い合わせ。
  • 未設定プロジェクトでは従来どおりの経路のみで、redirect用の追加レイテンシをかけない「no redirect」高速パスを維持。
  • ビルド時にシャードと各シャード先頭のBloom filterを生成し外部ストレージへ配置。リクエスト時はキーをハッシュして該当シャードだけをキャッシュまたはオリジンから取得し、先にBloom filterで否定ならJSON本文をパースしない。
  • ドッグフーディングの結果、Bloom filter通過後のシャード全体JSONパースはCPU負荷と高負荷時の遅延スパイク要因。ソート済みキー上の二分探索でキー位置を特定し、その1件分だけJSONをパースするレイアウトへ移行。正lookupのホットパスから全shardパースを排除。

大規模移行・リンク切れ・期限切れページ向けの運用はドキュメントとgetting startedに集約。プラン別の同梱枠と追加容量は次のとおり。

プラン同梱のredirect数追加容量
Proプロジェクトあたり1,000件25,000件ごとに月額50ドル
Enterpriseプロジェクトあたり10,000件25,000件ごとに月額50ドル

#参考文献