Cloudflare Workers vai AWS Lambda: aukstais starts maina izvēli

|Autors: QUASA redakcija|5 min lasīšanai
Cloudflare Workers vai AWS Lambda: aukstais starts maina izvēli

Īsai API loģikai, kas atbild lietotājam uzreiz, Cloudflare Workers bieži ir piemērotāka izvēle: publicētā testā tā aukstais starts bija īsāks nekā reģionālai AWS Lambda Node.js funkcijai. Ja uzdevumam vajag lielu darba kopumu atmiņā vai ilgāku skaitļošanu, Lambda resursu robežas kļūst svarīgākas par starta starpību. Abas iespējas jāvērtē konkrētajai slodzei, jo ātrs funkcijas sākums vēl negarantē ātru atbildi no datubāzes.

Atšķiras arī rēķins. Workers Standard modelī uzskaita pieprasījumus un aktīvo CPU laiku, savukārt parastai Lambda Event Function izmaksas veido pieprasījumi un piešķirtās atmiņas reizinājums ar rēķināmo izpildes ilgumu. Tāpēc vienāds mēneša pieprasījumu skaits nenozīmē vienādas izmaksas vai vienādu lietotāja pieredzi.

Ko aukstā starta mērījums pasaka par API

Publicētajā JSON API etalontestā katrai konfigurācijai nosūtīti 1000 pieprasījumu; Workers aukstā starta P50 bija 2 ms un P99 — 8 ms, bet AWS Lambda Node.js konfigurācijai attiecīgi 180 un 450 ms. Vienāds galapunkts pārveidoja JSON datus, un testā izmantoti dažādi datu apjomi un pieprasījumu reģioni. P50 raksturo mediānu, bet P99 — robežu, zem kuras ietilpst gandrīz visas izmērītās atbildes.

Šī starpība ir nozīmīga retāk izsauktam autentifikācijas, maršrutēšanas vai pieprasījuma pārveidošanas galapunktam: lietotājs var sajust inicializācijas kavējumu tieši pirmajā pieprasījumā. Taču mērījums pieder konkrētajam kodam un konfigurācijām; auksto izsaukumu atlases metode nav izklāstīta pietiekami detalizēti, lai skaitļus uzskatītu par garantiju katrai funkcijai. Kad izpildes vide jau darbojas, starta priekšrocības nozīme samazinās.

Gala atbildē ietilpst arī tīkla ceļš un ārējo pakalpojumu darbs. Ja malas funkcija katrā pieprasījumā gaida datubāzi vienā attālā reģionā, īss aukstais starts šo gaidīšanu neatceļ. Šeit runa ir par parastu reģionālu Lambda funkciju; Lambda@Edge ir cits izvietošanas modelis, un tā kavējumu nedrīkst piedēvēt pārbaudītajai konfigurācijai. Lambda iepriekš sagatavota izpildes kapacitāte arī var mainīt starta laiku, taču tai ir atsevišķas izmaksas.

Atmiņa un darba ilgums nosaka, kas vispār ir izpildāms

Cloudflare Workers 128 MB atmiņas robeža pret AWS Lambda lielāku piešķiramo atmiņu datu apstrādes uzdevumam.

Workers ierobežojumi paredz 128 MB atmiņas vienai izolētai izpildes videi; maksas plānā HTTP pieprasījuma CPU laika noklusējuma robeža ir 30 sekundes, un to var palielināt līdz 5 minūtēm. Atmiņas robeža attiecas uz izolēto vidi, kas var apkalpot vairākus vienlaicīgus pieprasījumus, nevis uz atsevišķi piešķirtu atmiņas porciju katram izsaukumam. CPU laiks savukārt neietver gaidīšanu, kamēr atbild tīkla pakalpojums.

HTTP pieprasījumam nav vispārējas sienas laika robežas, kamēr klients paliek pieslēgts, tādēļ Workers var gaidīt ārēju atbildi vai straumēt rezultātu. Tas nepalielina pieejamo atmiņu: visu lielu datu kopu ielādēt vienā izolētā vidē nevar tāpat kā apstrādāt to pa daļām. Arī ilgu darbu pēc klienta atvienošanās nevar droši balstīt uz parastu HTTP izsaukumu.

AWS Lambda funkciju kvotas ļauj piešķirt no 128 līdz 10 240 MB atmiņas un parastam izsaukumam noteikt ilgumu līdz 15 minūtēm; līdz ar atmiņu pieaug arī pieejamā CPU jauda. Tādēļ programmai, kurai vienlaikus vajadzīga lielāka atmiņa un ilgāka apstrāde, Lambda ir tiešāka izvēle. Lielāka konfigurācija pati par sevi negarantē mazāku kavējumu: tās izmaksas ir atkarīgas arī no tā, cik ilgi funkcija darbojas.

Saderība un datu atrašanās vieta

Esoša Node.js projekta gadījumā vienāda programmēšanas valoda vēl nenozīmē identisku izpildes vidi. Workers atbalsta daļu Node.js API un npm pakotņu, tomēr konkrēta bibliotēka var veiksmīgi ielādēties, bet kļūdīties tikai tad, kad tiek izsaukta tai vajadzīgā metode. Saderības robeža ir lietotnes reālais koda ceļš, nevis tikai tās atkarību saraksts.

Neliela galveņu, autorizācijas vai maršrutēšanas loģika labi atbilst malas izpildei. Esošai servera programmai ar plašākām izpildes vides prasībām piemērotāka var būt Lambda. Latvijas un citu Eiropas valstu lietotājiem īpaši svarīga ir datu glabātuves atrašanās vieta: ja funkcija darbojas tuvu lietotājam, bet katrs pieprasījums dodas uz tālu datubāzi, kopējo atbildes laiku var noteikt šis tīkla posms.

Ko katra platforma iekļauj cenā

Workers Standard cenrādis paredz vismaz 5 ASV dolāru mēneša maksu par maksas kontu; tajā iekļauti 10 miljoni pieprasījumu un 30 miljoni CPU milisekunžu, bet pārsniegums maksā attiecīgi 0,30 un 0,02 dolārus par katru papildu miljonu. Abi iekļautie apjomi jāatņem atsevišķi. Piemēram, ilga gaidīšana uz datubāzi nepalielina Workers CPU milisekundes tāpat kā aktīva datu apstrāde.

Lambda Event Functions cenrādis ietver vienu miljonu pieprasījumu un 400 000 GB sekunžu bezmaksas līmenī mēnesī; pēc tam pieprasījumi maksā 0,20 ASV dolārus par miljonu, bet AWS piemēros ASV austrumu reģionā x86 skaitļošanai izmantoti 0,0000166667 dolāri par GB sekundi. GB sekundes iegūst, reizinot izsaukumu skaitu, rēķināmo ilgumu sekundēs un piešķirto atmiņu gigabaitos. Tālākie aprēķini pieņem, ka viss bezmaksas apjoms ir pieejams šai slodzei; tie neietver API Gateway, datu pārsūtīšanu vai īpašus veiktspējas režīmus. Izvietojot funkciju Eiropā, faktiskā reģiona cena jāpārbauda atsevišķi.

Trīs nosacīti slodzes profili

Nosacītam API ar 20 miljoniem pieprasījumu Workers un Lambda izmaksas atšķiras CPU un GB sekunžu uzskaites dēļ.

Īsa malas pārbaude. Pieņemsim 10 miljonus pieprasījumu mēnesī un 2 ms CPU laika vienam Workers izsaukumam. Kopā tie ir 20 miljoni CPU milisekunžu, tāpēc Standard maksa būtu 5 dolāri. Ja līdzvērtīgas loģikas Lambda izsaukumam piešķirti 128 MB un vidējais rēķināmais ilgums ir 20 ms, mēnesī sanāk 25 000 GB sekunžu. Ar pilnībā pieejamu bezmaksas līmeni skaitļošana ietilptu tajā, bet par pieprasījumiem būtu jāmaksā 1,80 dolāri. Lētākais aprēķins neatbild uz jautājumu, cik vērtīga šim API ir ātra pirmā atbilde.

Bieži izsaukts API ar vairāk darba. Pieņemsim 20 miljonus pieprasījumu un 5 ms Workers CPU laika katram. Kopējie 100 miljoni CPU milisekunžu rada 1,40 dolāru CPU pārsniegumu; papildu pieprasījumi maksā 3 dolārus, un ar pamatmaksu summa ir 9,40 dolāri. Lambda variantā ar 128 MB un 40 ms vidējo rēķināmo ilgumu iznāk 100 000 GB sekunžu. Ja bezmaksas apjoms vēl pieejams, maksa par funkciju būtu 3,80 dolāri, galvenokārt par pieprasījumiem. Šie ilgumi ir pieņēmumi aprēķinam, nevis solījums par vienādu faktisko API atbildes laiku.

Ilgāka apstrāde ar lielāku atmiņu. Pieņemsim 100 000 izsaukumu, no kuriem katram vajag 512 MB un 90 sekundes. Lambda tas veido 4,5 miljonus GB sekunžu; pēc pilnībā pieejamā bezmaksas apjoma atņemšanas skaitļošana pēc minētās ASV reģiona likmes maksātu aptuveni 68,33 dolārus, bet pieprasījumi paliktu bezmaksas robežās. Šim pašam darba profilam Workers cenu salīdzināt nav jēgpilni: vienlaikus nepieciešamā atmiņa pārsniedz tā izolētās vides robežu. Straumēšana vai darba sadalīšana mazākās daļās mainītu uzdevuma profilu un prasītu jaunu aprēķinu.

Lasiet arī:

Dalīties:

Abonējiet mūsu jaunumu vēstuli

Saņemiet jaunākās Web3, MI un kriptovalūtu ziņas tieši savā e-pastā.

0