Vercel: миллионы редиректов без потери скорости

Редиректы на малых объёмах — пустяк. Но когда их сотни тысяч или миллионы, задержка и стоимость превращаются в реальную инженерную задачу. Vercel рассказала, как решила проблему.
Раньше редиректы обрабатывались через routing rules (до 2000 штук) и middleware. Правила — это упорядоченный список с regex-проверками: один запрос мог запускать десятки дорогих вычислений. Middleware даёт гибкость, но добавляет латентность на каждый запрос. Для миллионов редиректов нужен отдельный путь поиска с почти константным или логарифмическим временем.
Команда использовала Bloom-фильтры — вероятностную структуру, которая отвечает «точно нет в наборе» или «возможно есть». Это позволяет быстро отсекать запросы без редиректа (их большинство) и не грузить память процесса. Данные хранятся в JSONL, Bloom-фильтры экспортируются в том же формате. Приоритеты: простота, отладка и итеративная эволюция вместо попытки сделать идеально с первого раза.
Источник: Scaling redirects to infinity on Vercel