
„Cloudflare Workers“ ar „AWS Lambda“: šaltas paleidimas keičia pasirinkimą

Trumpai užklausas apdorojančiai funkcijai, kurios naudotojai išsibarstę po pasaulį, dažniau tinka „Cloudflare Workers“: vykdymas arčiau naudotojo ir greitas paleidimas gali sumažinti juntamą delsą. Daugiau atminties ar intensyvaus skaičiavimo reikalaujančiam darbui lankstesnė „AWS Lambda“. Nedidelės API atveju pirmiau verta palyginti sąskaitas – nemokama kvota gali būti svarbesnė už retą lėtą iškvietimą.
Šaltas paleidimas keičia pasirinkimą tada, kai lėta pirmoji užklausa svarbi pačiam naudotojui. Nuolat kviečiamos funkcijos išlaidas labiau veikia kiekvieno iškvietimo CPU darbas, laukimas ir skirta atmintis. Toliau pateiktos sumos apskaičiuotos pagal vienodas sąlygines apkrovas; jos nėra abiejose platformose paleistos programos spartos matavimas.
Už ką mokama abiejose platformose
Pagal „Workers“ kainodarą, mokamas planas kainuoja mažiausiai 5 JAV dolerius per mėnesį, o „Standard“ modelis apima 10 mln. užklausų ir 30 mln. CPU milisekundžių; papildomas milijonas užklausų kainuoja 0,30 dolerio, milijonas CPU milisekundžių – 0,02 dolerio. Tai paskyros plano mokestis ir į jį įtrauktas naudojimas, todėl jau apmokamą planą turinčioje paskyroje naujos funkcijos papildoma kaina gali skirtis nuo visos čia rodomos sąskaitos.
„AWS Lambda“ kainodara įprastoms funkcijoms taiko mokestį už užklausas ir GB sekundes, o mėnesio nemokama kvota apima 1 mln. užklausų bei 400 tūkst. GB sekundžių; jos JAV Šiaurės Virdžinijos regiono x86 pavyzdžiuose papildomas milijonas užklausų kainuoja 0,20 dolerio, GB sekundė – 0,0000166667 dolerio. GB sekundės gaunamos vykdymo trukmę padauginus iš funkcijai skirtos atminties gigabaitais. Pavyzdžiui, laukiant duomenų bazės atsakymo „Lambda“ iškvietimo trukmė toliau skaičiuojama, o „Workers“ sąskaitoje svarbus faktiškai sunaudotas CPU laikas.
Visuose scenarijuose viena įeinanti užklausa reiškia vieną funkcijos iškvietimą. Laikoma, kad „Lambda“ nemokamos kvotos tą mėnesį dar nepanaudojo kitos funkcijos, naudojamas minėtas JAV tarifas, o nurodyta vykdymo trukmė neapima papildomo šalto paleidimo laiko. Į sumas neįtraukti API šliuzas, duomenų bazė, žurnalai ir kitos pasirenkamos paslaugos. Lietuvos projektui pasirinkus Europos AWS regioną, jo tarifas gali pakeisti galutinę sąskaitą.
Kada šaltas paleidimas juntamas
„Lambda“ pirmam iškvietimui gali prireikti parengti naują vykdymo aplinką. AWS vykdymo aplinkos aprašyme išskirtas plėtinių paleidimas, programavimo aplinkos parengimas ir pradinis funkcijos kodas; vėlesni iškvietimai gali panaudoti jau parengtą aplinką. Dėl to šalto paleidimo poveikis priklauso nuo iškvietimų dažnio, kodo ir jo priklausomybių, o ne vien nuo pasirinktos platformos pavadinimo.
„toolchew“ palyginime „Node.js 20“ „Lambda“ šalto paleidimo p50 pateikiamas kaip 200–350 ms, o atskirame „Workers“ naudojimo atvejyje minima 2–5 ms p99 papildoma delsa. Skaičiai apibūdina skirtingus darbus ir skirtingus procentilius, todėl iš jų negalima apskaičiuoti universalaus pagreitėjimo. Pasaulinei paslaugai svarbi visa naudotojo patiriama delsa: kelias iki funkcijos, jos paleidimas, darbas ir ryšys su duomenų šaltiniu. Trumpesnis paleidimas menkai padės, jei atsakymo didžiąją dalį vis tiek laukiama iš tolimos duomenų bazės.
Nedidelė API: nemokama kvota nusveria
Tarkime, API sulaukia 100 tūkst. užklausų per mėnesį. Kiekviena sunaudoja 20 ms CPU laiko ir dar 30 ms laukia išorinės paslaugos; „Lambda“ skiriama 128 MB atminties, o įprastas iškvietimas trunka 50 ms. Tai skaičiavimo prielaidos, ne išmatuotas vienodos programos veikimas dviejose aplinkose.
Pagal šias prielaidas „Workers Standard“ sąskaita būtų 5 doleriai: naudojimas telpa į įtrauktas apimtis, tačiau mokamas pats planas. „Lambda“ sunaudotų 625 GB sekundes, todėl su nepanaudota nemokama kvota funkcijos mokestis būtų 0 dolerių; be jos – apie 0,03 dolerio. Šiai užduočiai „Workers“ nemokamas planas netinka, nes jo CPU riba vienam iškvietimui mažesnė už sąlyginius 20 ms. Mažai API ilgesnis pavienis šaltas paleidimas gali būti priimtinas, jei atsako laiko reikalavimas nėra griežtas, o apmokėti atskiro plano nesinori.
Šis skirtumas jautrus apkrovos pobūdžiui. Jei užklausos retėja, tačiau po tylos laikotarpio pirmasis atsakymas turi būti greitas, mažesnė mėnesio sąskaita nebūtinai atpirks delsą. Jei ta pati API daugiausia vykdo fonines užduotis, naudotojas šio skirtumo gali visai nepajusti. Todėl piniginį rezultatą ir pirmosios užklausos poveikį verta laikyti atskirais pasirinkimo kriterijais.
Pasaulinė funkcija: vieta svarbesnė už nedidelį tarifų skirtumą
Antras sąlyginis atvejis – 100 mln. užklausų per mėnesį iš įvairių šalių. Vienai užklausai tenka 2 ms CPU darbo ir 80 ms išorinės paslaugos laukimo; „Lambda“ su 128 MB atminties įprastas vykdymas trunka 82 ms. Toks modelis atitinka lengvą maršruto parinkimą ar atsakymo pakeitimą, kai skaičiavimo nedaug, bet tinklo laukimas ilgas.
„Workers Standard“ kaina būtų 35,40 dolerio: 5 dolerių planas, 27 doleriai už kvotą viršijančias užklausas ir 3,40 dolerio už papildomą CPU laiką. „Lambda“ sunaudotų 1,025 mln. GB sekundžių ir kainuotų apie 30,22 dolerio pritaikius nemokamas kvotas arba 37,08 dolerio be jų. Vien funkcijų mokestis aiškaus laimėtojo nerodo. Paskirstytas „Workers“ vykdymas gali sutrumpinti kelią iki funkcijos, o įprasta „Lambda“ funkcija vykdoma pasirinktame AWS regione; abiem atvejais ryšys su atskirai laikomais duomenimis lieka bendros delsos dalis.
Jei sąlyginiame pavyzdyje išorinės paslaugos laukimas sumažėtų nuo 80 iki 20 ms, o CPU darbas liktų toks pats, „Workers“ mokestis nesikeistų. „Lambda“ GB sekundžių kiekis sumažėtų tiek, kad su nepanaudota nemokama skaičiavimo kvota liktų apie 19,80 dolerio mokestis už užklausas. Taigi net pasaulinei funkcijai kainos pranašumą gali pakeisti laukimo trukmė; geografinio vykdymo nauda priklauso nuo viso užklausos kelio.
Intensyvus skaičiavimas: atmintis gali užbaigti palyginimą
Trečiasis sąlyginis krūvis – 1 mln. iškvietimų per mėnesį, kiekvienas aktyviai skaičiuoja 5 sekundes ir beveik nelaukia tinklo. Tarkime, užduotis telpa į „Workers“ atmintį, o „Lambda“ skiriama 512 MB; abiejose aplinkose ji baigiama per tą patį laiką. Vienoda trukmė čia reikalinga tarifams palyginti, tačiau didesnė „Lambda“ atminties parinktis suteikia ir daugiau skaičiavimo išteklių, todėl tikro darbo trukmės nebūtinai sutaps.
Esant šioms prielaidoms, „Workers Standard“ kainuotų 104,40 dolerio. „Lambda“ sunaudotų 2,5 mln. GB sekundžių ir kainuotų apie 35 dolerius su nepanaudota nemokama kvota arba apie 41,87 dolerio be jos. Jeigu „Lambda“ tam pačiam penkių sekundžių darbui reikėtų skirti 1 GB atminties, jos suma su kvota padidėtų iki maždaug 76,67 dolerio. Vadinasi, skaičiavimo scenarijuje svarbus ne vien paleidimas, bet ir atminties bei realios trukmės derinys.
„Workers“ vykdymo ribose nurodyta 128 MB atminties vienam izoliatui ir numatytoji 30 sekundžių CPU riba vienai mokamo plano HTTP užklausai; pastarąją galima padidinti iki 5 minučių. Jei užduotis netelpa į izoliato atmintį, mažesnė šalto paleidimo delsa jos į „Workers“ neperkels. Šiuo atveju platformos tinkamumas darbui paaiškėja anksčiau už smulkų kainos skirtumą.
Taip pat skaitykite:
Susiję straipsniai


„Zapier Agents“ ar „n8n“: patogumas kainuoja su kiekvienu veiksmu

„GitHub Actions“ ar „GitLab CI“: pigesnę minutę nustelbia komandos planas

DI agento atmintis: sesijos istorija dar nėra ilgalaikė atmintis

„Google Drive“ ar „Dropbox“: 15 GB prieš greitesnį failų darbą

OBS ar Streamlabs: patogūs valdikliai gali kainuoti iki 28 % daugiau CPU
Prenumeruokite mūsų naujienlaiškį
Gaukite naujausias Web3, DI ir kriptovaliutų naujienas tiesiai į savo el. pašto dėžutę.