
Cloudflare Workers или Vercel: исти benchmark даје супротне победнике

Cloudflare Workers је убедљивији у једном рачунском задатку, а Vercel у серверском рендеровању из исте објављене серије тестова. За кратку обраду близу корисника Workers може бити добар избор; за захтевније рендеровање и чест приступ бази вреди размотрити Vercel функцију у региону те базе. Исход зависи од посла који функција стварно обавља.
Време које корисник види обухвата мрежни пут, чекање на извршавање, рад процесора и приступ другим сервисима. Тарифе, међутим, раздвајају захтеве, активно CPU време, меморију и пренос података на различите начине. Зато ни победник у једном задатку ни један износ из ценовника не одлучују сами о избору платформе.
Иста серија, различит победник
У оригиналном репозиторијуму теста Vercel је при Next.js рендеровању имао просек од 0,534 секунде, а Workers 1,895 секунди. У петљи са синусним операцијама редослед је обрнут: Workers је имао 23,401 секунду, а Vercel 36,025 секунди, што је предност Workers-а од приближно 1,54 пута. Оба резултата припадају истој серији, али мере различит код.
Разлика није ограничена на та два екстрема. За React SSR просек је био 0,138 секунди на Vercel-у и 0,476 на Workers-у; у другом математичком задатку 0,702 према 1,469 секунди. Код једноставнијег JavaScript задатка резултати су били ближи, 0,208 према 0,220 секунди. Таква расподела говори више од јединственог рангирања: избор библиотеке, количина рендерованог садржаја и конкретна математичка операција мењају оно што се уопште мери.
Vercel у свом приказу резултата наводи да је тест користио Workers са дељеним CPU ресурсом и 128 MB меморије, а Fluid Compute функцију са 2 vCPU и 4 GB меморије. То је поређење две доступне конфигурације, не издвојено мерење брзине њихових JavaScript механизама. Просечно трајање одговора такође не представља наплативо CPU време: захтев може да чека процесор или мрежу без исте количине активног рачунања.
Шта је променило поновљено мерење
Cloudflare је у анализи поновљеног теста навео да је после измена у распоређивању захтева и подешавању runtime-а добио приближно изједначене резултате у испитаним случајевима, осим Next.js задатка. То је касније мерење исте групе задатака, уз измењен тестни код и окружење. Почетни резултат и каснији резултат зато не треба представљати као два мерења под идентичним условима.
У првобитном мерењу клијент је био лаптоп у Сан Франциску, а Vercel функција у региону sfo1. Cloudflare је поновљени тест покренуо из AWS региона us-east-1, близу Vercel региона iad1, и користио Vercel функцију са 1 vCPU уместо 2. Тестни задаци били су једнонитни, али промена региона утиче на мрежни део времена одговора. Премештање клијента такође мења услове за поређење глобално распоређеног Workers-а са функцијом смештеном у изабраном региону.
Cloudflare је део ранијег кашњења приписао томе што је више захтевних позива чекало исти изолат, па је изменио распоређивање како би се нови изолати брже покретали. Чекање продужава одговор, али није CPU рад захтева који чека. У ранијем, засебном тесту петље са тригонометријским функцијама Workers је имао приближно троструку предност; Cloudflare је разлику повезао са начином на који су те функције изграђене у испитаним окружењима. Тај старији резултат и предност од 1,54 пута из шире серије имају различите методе и не треба их спајати у једну цифру.
Регион корисника није увек регион базе
За корисника у Србији функција близу корисника може да скрати пут до првог одговора, нарочито ако обавља проверу, преусмеравање или лаку обраду без удаљених зависности. Ако исти захтев затим више пута приступа бази у другом региону, сваки такав позив додаје мрежно чекање. Функција смештена уз базу може да уштеди више времена на тим позивима него што је корисник изгубио на почетном путу до функције.
Ту је разлика између CPU учинка и времена целог захтева најважнија. Тест који понавља рачунску петљу открива понашање извршног окружења за ту операцију; страница која учитава податке мери и удаљеност базе, број позива и чекање на њих. Ниједан од објављених просека не представља аутоматски кашњење апликације чији су корисници у Србији, а база у региону који програмер тек треба да изабере.
Три сценарија трошка на Workers-у
Cloudflare-ов ценовник за Workers наводи да Paid план почиње од 5 долара месечно, укључује 10 милиона захтева и 30 милиона CPU милисекунди, без посебне накнаде за излазни пренос података. Сваки додатни милион захтева кошта 0,30 долара, а милион CPU милисекунди 0,02 долара. Следећи обрачуни користе јавне примере за сам Workers, без потрошње других производа на налогу.
При 15 милиона захтева месечно и просечних 7 милисекунди CPU рада по захтеву, укупна потрошња је 105 милиона CPU милисекунди. После укључених количина остаје 5 милиона наплативих захтева и 75 милиона наплативих CPU милисекунди. Те две ставке коштају по 1,50 долара, па је са основном накнадом укупан износ 8 долара.
Други сценарио има 720 заказаних покретања, али свако троши 180.000 CPU милисекунди. То даје 129,6 милиона CPU милисекунди укупно, односно 99,6 милиона преко укључене количине. CPU ставка износи 1,992 долара, што се на рачуну заокружује на 1,99 долара; са основном накнадом збир је 6,99 долара. Број покретања је мали, али дуг рачунски рад остаје видљив у цени.
Трећи сценарио је 100 милиона захтева са просечно 7 милисекунди CPU рада: додатни захтеви коштају 27 долара, CPU рад 13,40 долара, а збир је 45,40 долара. Ако Workers кеш послужи 80% тих захтева, код се извршава за преосталих 20 милиона и CPU ставка пада на 2,20 долара; збир је 34,20 долара. Кеширани захтеви у том примеру и даље улазе у ставку захтева. Уштеда долази од CPU рада који није обављен, док се статички садржај који уопште не позива Worker обрачунава другачије.
Зашто Vercel нема исти збир из тих података
Према Vercel-овој документацији о ценама, наплата раздваја CDN захтеве и пренос података од позива функција, активног CPU времена и времена резервисане меморије. Hobby укључује милион позива функција, четири CPU сата и 360 GB-сати резервисане меморије, док пренос података има посебну укључену количину. За Pro се примењују месечни кредит и цене које зависе од региона.
Зато се наведени Workers износи не могу претворити у веродостојан Vercel рачун само из броја захтева и CPU милисекунди. Потребно је знати колико захтева заиста позива функцију, колико дуго је меморија резервисана, колико података пролази кроз CDN и који регион је изабран. Кеширање може истовремено да промени број позива функције и потрошњу преноса, па исти укупан саобраћај не значи исте наплативе јединице.
За избор конкретне апликације пресудно је поређење истог кода и оптерећења уз одвојено бележење кашњења за кориснике у Србији, активног CPU рада, чекања на базу и меморијске потрошње. Кратка функција без удаљених позива и рендеровање које стално приступа бази могу оправдано завршити на различитим платформама. Резултат теста тада има смисао тек заједно са конфигурацијом и ставкама које ће тај сервис заиста плаћати.
Прочитајте и:
Повезани чланци


Cloudflare R2 или Amazon S3: бесплатан egress мења рачун тек уз читања

AWS Lambda или Azure Functions: хладан старт се плаћа и кад рачун делује исти

Docker или Podman: rootless безбедност не доноси јасног брзинског победника

Neon или Supabase: мирна база и активна база немају истог победника

Claude је стигао до девет петљи, али није измислио нову физику
Претплатите се на наш билтен
Добијајте најновије вести о Web3, AI-у и криптовалутама директно у пријемно сандуче.