Vercel či Cloudflare Workers: cold start nerozhodne bez účtu za prevádzku

|Autor: Redakcia QUASA|5 min čítania| 1
Vercel či Cloudflare Workers: cold start nerozhodne bez účtu za prevádzku

Pri existujúcej aplikácii Next.js so serverovým vykresľovaním je Vercel zvyčajne jednoduchšia cesta k nasadeniu. Cloudflare Workers môže byť výhodnejší pre ľahké API alebo prevažne statický web, ak aplikácia funguje v jeho runtime. Výber však závisí od nákladov na konkrétnu prevádzku, latencie celej odpovede a práce potrebnej na úpravu kódu.

Samotný cold start nerozhodne, pretože tvorí len časť odozvy a v cenníkoch oboch platforiem sa účtujú odlišné jednotky. Pri SSR môže rýchlo spustený runtime stále čakať na vzdialenú databázu; pri statickom webe sa serverový kód nemusí spustiť vôbec.

Čo možno vyčítať z publikovaného merania

V meraní Punita Sethiho prebehlo 3 044 požiadaviek počas 48 hodín s hodinovou prestávkou medzi sériami; Cloudflare v testovanej zostave obslúžil dynamické stránky aj API najrýchlejšie, kým API na Verceli častejšie narazilo na studený štart. Projekt Next.js bežal na viacerých platformách s predvolenými nastaveniami bezplatných plánov. Jeho simulovaný databázový endpoint spracúval lokálne dáta, neposielal dotaz do externej databázy.

Meranie cielilo na prevádzku s nízkou návštevnosťou a nezachytávalo vysokú súbežnosť. Pri stránkach sledovalo okamih použiteľnosti v prehliadači, pri API čas do začiatku odpovede; tieto metriky nie sú totožné. Výsledok preto hovorí o danej aplikácii, trasách, lokalitách merania a nastavení. Ak väčšina návštev dostane obsah z cache alebo z už bežiaceho runtime, výrazná hodnota jedného studeného štartu môže mať na bežného používateľa malý dosah.

Rozdiel v účte vzniká ešte pred voľbou plánu

Podľa cenníka Vercelu sa pri spravovanej infraštruktúre sledujú prenesené dáta, požiadavky CDN, aktívny čas CPU, pridelená pamäť aj vyvolania funkcií; uvedené ceny sú v USD bez prípadných daní podľa fakturačnej adresy. Sadzby výpočtových zdrojov závisia aj od regiónu. Počet zobrazení stránky teda nie je počet všetkých účtovaných operácií: načítanie môže vyžiadať statické súbory, odpoveď funkcie i prenos medzi CDN a výpočtovou vrstvou.

Podľa cenníka Cloudflare Workers má platený plán minimálnu cenu 5 USD mesačne, zahŕňa 10 miliónov požiadaviek a 30 miliónov milisekúnd CPU mesačne a nad tieto objemy účtuje 0,30 USD za milión požiadaviek a 0,02 USD za milión milisekúnd CPU; bezplatný plán má strop 100 000 požiadaviek denne a 10 ms CPU na vyvolanie. Za samotný prenos dát Workers neúčtujú osobitne. Priamo obslúžené statické súbory sú bezplatné, no pri zapnutom Workers Caching sa môžu účtovať aj požiadavky vybavené z cache. Databáza, úložisko či ďalšie služby majú vlastnú spotrebu a do porovnania patria osobitne.

Tri výpočty pre SSR, API a statický web

Východiskom je mesačný počet požiadaviek na jednotlivé trasy, nie celkový počet návštev. Oddeľte statické súbory a zásahy cache od požiadaviek, ktoré spustia kód. Pri dynamických trasách potrebujete aj čas CPU, veľkosť odpovede a pri Verceli životnosť spustených inštancií s pridelenou pamäťou; súbežné požiadavky na tú istú inštanciu sa pri pamäti nemajú mechanicky násobiť ako samostatné servery.

  • SSR: Nekacheované vykreslenia vytvárajú dynamické vyvolania. Pre Workers vynásobte ich počet nameraným CPU časom a porovnajte obe veličiny so zahrnutými mesačnými objemami. Pri Verceli pripočítajte aktívny CPU, pridelenú pamäť počas práce inštancií, požiadavky CDN a prenesené dáta podľa zvoleného regiónu a plánu. Každé čítanie databázy pridajte do rozpočtu ako samostatný náklad aj ako čas v odozve.
  • API: Pri čisto podmienených 12 miliónoch dynamických požiadaviek mesačne a 5 ms CPU na jednu vznikne 60 miliónov milisekúnd CPU. Pri uvedených sadzbách Workers Paid by minimum a prekročenie zahrnutých objemov požiadaviek a CPU spolu vyšli na 6,20 USD; výsledok nezahŕňa databázu ani inú platenú službu. Rovnaké vstupy nestačia na číselný účet Vercelu, kým nepoznáte aj konfiguráciu pamäte, trvanie jej využitia, región a prenos odpovedí.
  • Statický web: Ak návštevy dostávajú len vopred pripravené súbory, počet SSR vyvolaní je nulový. Pri Workers sledujte, či idú požiadavky priamo na statické súbory alebo cez Worker a jeho cache; pri Verceli rozhodujú pravidlá CDN a objem prenesených dát. Predgenerovanú stránku nerátajte ako serverovo vykreslenú pri každej návšteve len preto, že vznikla v projekte Next.js.

Model je citlivý na tvar prevádzky. Rovnaký mesačný počet požiadaviek môže zahŕňať krátke odpovede z cache alebo náročné výpočty, ktoré určia potrebný plán a narazia na limit CPU pri jednotlivom vyvolaní. Ak má API niekoľko veľmi nákladných trás, priemer za celé API zakryje práve tie, ktoré zmenia účet.

Databázová vzdialenosť mení latenciu celej odpovede

Pri SSR musí server pred odoslaním hotovej stránky získať dáta, ktoré pri vykreslení potrebuje. Ak runtime beží blízko návštevníka, ale ďaleko od databázy, každé závislé čítanie pridá cestu sieťou. Viacero dotazov spúšťaných postupne potom môže prevážiť rozdiel medzi studenými štartmi platforiem. Pri nezávislých dotazoch môže súbežné vykonanie skrátiť čakanie, stále však zostáva čas spojenia s databázou.

Pri hodnotení odozvy preto odlíšte príchod požiadavky do runtime, spustenie a vykonanie kódu, databázové volania a doručenie odpovede používateľovi. Čas CPU nie je celkové trvanie požiadavky: čakanie na sieť môže mať iný vplyv na účet, používateľ ho však pocíti. Test bez externého databázového volania túto časť nemeria. Pre aplikáciu s dátami vo vzdialenom regióne je preto dôležitá poloha výpočtu voči databáze rovnako ako poloha voči návštevníkovi.

Kompatibilita Next.js sa premieta do ceny migrácie

Dokumentácia Vercelu pre Next.js opisuje nasadenie bez osobitnej konfigurácie a automatické vytvorenie funkcií pre serverové vykresľovanie. Pre existujúci projekt to môže znamenať menej úprav pred spustením, hoci samotná jednoduchosť neurčuje mesačný účet. Dôležité sú aj používané funkcie frameworku: serverové akcie, middleware, ukladanie do cache či optimalizácia obrázkov môžu pri migrácii vyžadovať odlišné správanie.

Návod Cloudflare pre Next.js odporúča vinext, ktorý je v beta verzii, a pri existujúcej produkčnej aplikácii žiada kontrolu kompatibility; optimalizáciu obrázkov označuje za čiastočne podporovanú. Workers podporujú aj SSR, ale cenu porovnania zvyšuje čas na preverenie knižníc, funkcií a správania cache v konkrétnom projekte. Pri ľahkom samostatnom API alebo statickom webe býva tento rozsah menší. Pri rozsiahlom SSR projekte môže práca na migrácii zmazať úsporu na mesačných poplatkoch, takže rozhoduje súčet prevádzky a potrebných úprav pri prijateľnej latencii.

Prečítajte si aj:

Zdieľať:

Prihláste sa na odber newslettera

Dostávajte najnovšie správy o Web3, AI a kryptomenách priamo do svojej schránky.

0