Cloudflare Workers или Vercel: Next.js может перевесить дешёвые запросы

|Автор: Редакция QUASA|5 мин чтения| 6
Cloudflare Workers или Vercel: Next.js может перевесить дешёвые запросы

Для самостоятельного API с короткими вычислениями Cloudflare Workers дешевле Vercel Pro в рассмотренных объёмах трафика. Если проект построен на Next.js, цена вызова перестаёт быть достаточным критерием: перенос может потребовать проверки возможностей фреймворка и изменений в приложении.

Сравнение относится к платному Workers и обычным функциям Vercel на Node.js. Пограничная среда Vercel в расчёт не входит. Суммы ниже получены из одинакового условного числа динамических запросов и заданной длительности работы, а не из испытания одного приложения на двух платформах.

Из чего складывается счёт

Тариф Workers Paid предусматривает минимум $5 в месяц, включает 10 млн запросов и 30 млн миллисекунд процессорного времени. Сверх включённого объёма каждый миллион запросов стоит $0,30, а каждый миллион процессорных миллисекунд — $0,02. Время ожидания базы данных или внешнего API не превращается в процессорное время. Отдача статических файлов обычно бесплатна, но при использовании Workers Cache запросы из кэша учитываются по тарифу запросов.

План Vercel Pro стоит $20 в месяц и даёт кредит $20 на использование ресурсов. Для функций на Pro вызовы оплачиваются по $0,60 за миллион, активная работа процессора — от $0,128 за час, выделенная память — от $0,0106 за гигабайт-час. В расчёте использованы эти минимальные региональные ставки. Бесплатный Hobby предназначен для личных некоммерческих проектов, поэтому его включённые объёмы нельзя подставлять в счёт рабочей команды.

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

Допущения для API и динамической страницы

Возьмём три условных месячных объёма: 1 млн, 10 млн и 100 млн динамических обращений. Для короткого API зададим 5 мс активной работы процессора и 20 мс полного времени на запрос. Для динамической страницы Next.js — 20 мс процессора и 100 мс полного времени. Это допущения для сравнимой арифметики, а не опубликованные измерения типичного приложения.

В модели Vercel функция располагает 2 ГБ выделенной памяти на протяжении каждого обращения; перекрытие запросов не учитывается. Платёж Pro равен стоимости плана плюс начисления сверх его месячного кредита. В расчёт не включены другие платные ресурсы, налоги и дополнительные участники команды. Поэтому цифры показывают стоимость заданной вычислительной нагрузки, а не полный бюджет размещения сайта.

Короткий API при трёх объёмах

При 1 млн условных вызовов Workers остаётся на минимуме $5. Ресурсы функций Vercel обходятся примерно в $0,90, но платёж за Pro составляет $20: начисление покрыто кредитом. При 10 млн вызовов Workers стоит $5,40 — запросы укладываются во включённый объём, а процессорное время превышает его на 20 млн мс. Ресурсы Vercel дают около $8,96, поэтому платёж остаётся $20.

При 100 млн вызовов расчёт составляет $41,40 для Workers и около $89,56 для Vercel Pro. Во втором случае месячный кредит покрывает первые $20 начислений, а остальное добавляется к стоимости плана. Разницу создают прежде всего ставки на вызовы и процессорное время при заданных коротких операциях. Если API дольше ждёт внешнюю систему, строка памяти Vercel растёт вместе с временем работы экземпляра; при совместном обслуживании запросов эффект может ослабнуть.

Динамический Next.js меняет масштаб затрат

При условных 20 мс процессора и 100 мс полного времени 1 млн динамических обращений дают $5 у Workers и $20 платежа за Vercel Pro; расчётное использование ресурсов Vercel составляет около $1,90. При 10 млн обращений получаются $8,40 и $20 соответственно: начисление Vercel достигает $19 и ещё покрывается кредитом. При 100 млн — $71,40 для Workers и $190 для Vercel Pro.

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

Модель также задаёт одинаковую длительность работы для двух платформ. Это позволяет изолировать тарифы, но не предсказывает скорость перенесённого приложения: разные среды, адаптеры и поведение кэша способны изменить процессорное время и задержку ответа. Для Next.js разница между расчётными счетами имеет смысл лишь после проверки того, какие маршруты действительно требуют серверного рендеринга.

Совместимость Next.js и цена переноса

Документация Vercel по Next.js описывает серверный рендеринг через обычные функции: платформа автоматически создаёт их для таких страниц. Она также описывает потоковую передачу ответа и работу с кэшированием. Для существующего проекта это даёт документированный путь развёртывания без отдельного адаптера, что может сэкономить время команды даже при более высоком расчётном счёте.

Руководство Cloudflare по Next.js рекомендует vinext для новых развёртываний на Workers и указывает, что проект пока находится в бета-версии. Он поддерживает серверный рендеринг, обработчики маршрутов и другие распространённые возможности фреймворка, но оптимизация изображений поддерживается частично. Для существующего приложения предусмотрена проверка совместимости; OpenNext остаётся описанным вариантом, если переходу на vinext мешает конкретное расхождение.

Поэтому выбор для готового Next.js проекта зависит от используемых возможностей, а не от одного названия фреймворка. Если его маршруты, обработка изображений и кэширование работают на Workers с приемлемыми изменениями, низкая цена вычислений становится убедительным преимуществом. Если перенос требует существенной переделки приложения, сэкономленные на запросах деньги следует сопоставить с этой работой.

Память и пределы тестов производительности

Разбор Cloudflare указывает предел памяти 128 МБ на изолят Workers и сообщает о сопоставимых с Vercel результатах измеренных вычислительных задач после исправлений — кроме теста Next.js. Предел относится к изоляту, который может обслуживать несколько запросов. Крупные буферы и одновременная обработка данных поэтому важны для выбора среды независимо от низкой цены вызова.

Исключение в тесте Next.js относилось к связке Workers с OpenNext; переносить его результат на vinext или на любое приложение Next.js нельзя. В исходной конфигурации теста динамический режим был настроен по-разному, а измерение времени до первого байта зависело от того, когда начиналась потоковая передача ответа. После выравнивания настроек результат стал сопоставимее, но отдельное отставание Next.js сохранилось.

Задержка ответа и оплачиваемое процессорное время тоже расходятся. Запрос может ждать освобождения занятого изолята и отвечать медленнее без пропорционального роста процессорного счёта. Для короткого API с умеренными требованиями к памяти Workers остаётся сильным выбором по цене; для динамического Next.js решение зависит также от совместимости маршрутов, поведения рендеринга и памяти при одновременных обращениях.

Читайте также:

Поделиться:

Подпишитесь на рассылку

Получайте свежие новости Web3, AI и криптовалют прямо на вашу почту.

0