Как Open Web Ninja увеличила масштаб в 10 раз, не меняя провайдера

Open Web Ninja обслуживает более 30 API с данными в режиме реального времени — в сферах электронной коммерции, социальных сетей, недвижимости, рынка труда и финансов. Их клиентами являются разработчики и компании, которым требуются структурированные данные, надежно предоставляемые по запросу. Именно прокси-уровень позволяет обеспечить это в больших масштабах.
За три года объем запросов к API вырос в 10 раз. На протяжении всего этого времени наибольшую долю трафика обрабатывалипрокси-серверыPrivateProxy, расположенныев различных дата-центрах.

Задача: масштабирование API-интерфейсов для работы с данными при сохранении предсказуемой задержки

Когда вы продаете API-интерфейсы для доступа к данным, простои — это не внутренняя проблема, а проблема ваших клиентов. Open Web Ninja обслуживает более 50 000 клиентов. Если инфраструктура, на которой работают эти API, начинает работать медленнее или перестает функционировать, эти клиенты сразу же это ощущают.

Три фактора сделали создание этой инфраструктуры более сложной задачей, чем ожидалось.

Источники быстро дают отпор

Любой сервис, запрашивающий данные в больших объемах, рано или поздно столкнётся с ограничениями по скорости и блокировками. Это не ошибка в плане — это исходное допущение. Вопрос заключается в том, насколько надёжно прокси-уровень справляется с этой ситуацией без ручного вмешательства каждый раз, когда возникает новый крайний случай.

Разные цели ведут себя по-разному

Один конечный пункт API нормально работает с данной конфигурацией. Другой — нет. Провайдер прокси-серверов, который бесшумно справляется с таким разнообразием — без необходимости постоянной настройки со стороны команды разработчиков — ценен гораздо больше, чем тот, который выглядит быстрым только на бумаге.

Средняя задержка — это неподходящий показатель

Адам Бен-Аюн, соучредитель и технический директор, высказывается по этому поводу очень четко: именно колебания приводят к сбоям в работе API-продуктов. Ответ, который в одном случае занимает 50 мс, а в другом — 3 секунды, хуже, чем тот, который стабильно занимает 200 мс. Клиенты замечают скачки, а не среднее значение.

Решение: ротация настроек прокси-сервера в центре обработки данных для обеспечения высокой пропускной способности при передаче данных через API

Open Web Ninja одновременно использует несколько провайдеров прокси-серверов. Это осознанное архитектурное решение — оно обеспечивает более широкий IP , а в случае сбоя у одного провайдера остальные автоматически перенимают трафик.

В рамках этой архитектуры наибольший объем трафика обрабатывает PrivateProxy

Параметр Значение
Тип прокси-сервера Вращающийся центр обработки данных
Положение в стеке Крупнейший поставщик по объему вызовов API
Переключение на резервный сервер Поддержка нескольких провайдеров с автоматическим перераспределением
Канал поддержки Специальный канал в Slack
Пользовательские настройки Предоставляется по запросу

Команда оценивает новых провайдеров каждый раз по одной и той же схеме: начинаем с небольшого объема, тестируем на реальном трафике и расширяем масштабы только в том случае, если все работает стабильно. PrivateProxy прошел этот процесс три года назад и с тех пор является нашим основным провайдером.

По поводу того, почему именно дата-центры — цитируем слова команды: «Мы большие поклонники дата-центров из соображений надёжности и скорости». Для бизнеса, основанного на API с высокой пропускной способностью, где предсказуемая задержка имеет большее значение, чем IP , прокси с ротацией дата-центров оказались оптимальным решением.

Техническая реализация

Прокси-серверы находятся на уровне инфраструктуры API. Каждый исходящий запрос проходит через пул; для распределения нагрузки по IP для каждого запроса запускается процедура ротации.

Python

import requests

PROXY_HOST = "dc.privateproxy.me"
PROXY_PORT = 10000
PROXY_USER = "your_username"
PROXY_PASS = "your_password"

proxies = {
"http": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}",
"https": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}",
}

response = requests.get("https://target-source.com/data", proxies=proxies, timeout=10)

При высокой параллельности использование пула соединений снижает накладные расходы на TCP для каждого запроса. При более чем 50 000 клиентов, одновременно выполняющих вызовы API, это дает значительный эффект.

Результаты: 10-кратный рост благодаря инфраструктуре прокси, которая не отставала от темпов развития

Метрическая система Значение
Объем вызовов API 10-кратный рост за 3 года
Клиенты 50,000+
Ответ службы поддержки <30 min on weekdays via Slack
Должность поставщика услуг Наибольшая доля трафика в стеке
Проблемы Редкий случай — быстро решено

«Мы не боимся никаких неприятных сюрпризов, как бы быстро мы ни росли. Инфраструктура просто успевает за нами».

— Адам Бен-Аюн, соучредитель и технический директор компании Open Web Ninja

«Дело даже не в том, сколько времени у тебя уходит на ответ. Дело в том, насколько ты вовлечен в решение проблем и стремишься их уладить. Именно в этом ты превосходишь остальных».

— Адам Бен-Аюн, соучредитель и технический директор компании Open Web Ninja

Вам нужно похожее решение?

Независимо от того, занимаетесь ли вы масштабированием конвейера данных, обходом систем защиты от ботов или вам требуется геотаргетированный охват более чем 50 регионов — мы настроим прокси-серверы с учетом ваших конкретных требований к инфраструктуре.