Serverless

Lambda@Edge és CloudFront Functions: számítás a peremen

A peremszámítás gyors és közel van a felhasználóhoz, de a korlátok szigorúak. A feladat típusa dönti el, a könnyű CloudFront Functions vagy a teljesebb Lambda@Edge kell-e.

Röviden: A peremszámítás gyors és közel van a felhasználóhoz, de a korlátok szigorúak. A feladat típusa dönti el, a könnyű CloudFront Functions vagy a teljesebb Lambda@Edge kell-e.

A peremszámítás (edge computing) ígérete csábító: futtass kódot a felhasználóhoz földrajzilag közel, a tartalomelosztó hálózat peremén, így minimális a késleltetés. A CDN-hez két különböző peremfuttatási lehetőség kapcsolódik — a könnyű CloudFront Functions és a teljesebb Lambda@Edge —, és a kettő összekeverése gyakori hiba. Mindkettőnek megvan a helye, de más feladatra.

Miért futtatnánk kódot a peremen?

A perem közel van a felhasználóhoz, tehát az itt futó logika azonnal, hálózati körutazás nélkül lefut. Tipikus feladatok: kérések átírása, átirányítás, egyszerű hitelesítés-ellenőrzés, fejlécek manipulálása, egyszerű A/B-elosztás. Ezeket a peremen elvégezni gyorsabb, mint az origin-ig elküldeni.

A könnyű opció: CloudFront Functions

A CloudFront Functions egy nagyon könnyű, korlátozott futtatókörnyezet, ami rendkívül gyors és olcsó, de szigorú korlátokkal: rövid végrehajtási idő, kevés erőforrás, korlátozott képességek (például nincs hálózati hívás). Pont ezért ideális az egyszerű, gyors feladatokra: fejléc-módosítás, egyszerű átirányítás, kulcs-alapú kérésvalidáció. Ha a feladat belefér, ez a leghatékonyabb.

A teljesebb opció: Lambda@Edge

A Lambda@Edge egy teljesebb futtatókörnyezet a peremhez közel: több erőforrás, hosszabb végrehajtási idő, gazdagabb képességek, akár hálózati hívás. Cserébe nehezebb és valamivel lassabban indul. Akkor kell, amikor a peremlogika túl összetett a könnyű opcióhoz — például külső adatot kell lekérnie vagy bonyolultabb feldolgozást végezni.

A döntési kép

FeladatKönnyű (CloudFront Functions)Teljes (Lambda@Edge)
Fejléc-módosítás, átirányításIdeálisTúlzás
Egyszerű kérésvalidációIdeálisTúlzás
Külső adat lekéréseNem képesKell
Összetett feldolgozásKorlátozottAlkalmas
Sebesség/költségLegjobbNehezebb

A perem korlátai, amikre figyelni kell

A peremszámítás nem csodaszer. A szigorú végrehajtási korlátok miatt nem való nehéz feldolgozásra; a hibakeresés nehezebb, mert elosztottan, sok helyen fut; és a telepítés-terjesztés is más ritmusú, mint egy központi függvényé. A peremre csak azt tedd, aminek tényleg ott a helye — a súlyos üzleti logika maradjon az originhez közelebb, tesztelhető környezetben.

A két motor szétválasztása

A peremhez két különböző futtatási lehetőség kapcsolódik, és ezek összekeverése gyakori hiba. A CloudFront Functions egy nagyon könnyű, korlátozott környezet: rendkívül gyors és olcsó, de szigorú korlátokkal (rövid végrehajtási idő, kevés erőforrás, nincs hálózati hívás). A Lambda@Edge teljesebb: több erőforrás, hosszabb idő, gazdagabb képességek, akár hálózati hívás — cserébe nehezebb és lassabban indul.

A kettő nem egymás alternatívája minden feladatra, hanem különböző súlyú eszköz. A feladat típusa dönti el, melyik kell.

A feladat típusa dönt

Az egyszerű, gyors feladatok — fejléc-módosítás, egyszerű átirányítás, kulcs-alapú kérésvalidáció — a könnyű CloudFront Functions-be valók. Ha a feladat belefér, ez a leghatékonyabb. Az összetettebb logika — külső adat lekérése, bonyolultabb feldolgozás — a teljesebb Lambda@Edge-et igényli.

  1. Fejléc, átirányítás, egyszerű validáció → könnyű motor.
  2. Külső hívás, összetett feldolgozás → teljes motor.

A perem korlátai

A peremszámítás nem csodaszer. A szigorú végrehajtási korlátok miatt nem való nehéz feldolgozásra; a hibakeresés nehezebb, mert elosztottan, sok helyen fut; és a telepítés-terjesztés is más ritmusú. A peremre csak azt tedd, aminek tényleg ott a helye — a súlyos üzleti logika maradjon az originhez közelebb, tesztelhető környezetben. A peremre az való, aminek a gyorsaság és a felhasználóhoz való közelség a lényege.

A telepítés és a terjesztés

A peremen futó kód telepítése más ritmusú, mint egy központi függvényé: a kód sok földrajzi ponton, a CDN peremhálózatában terjed szét, ami időbe telik. Ezt tervezni kell, különösen a hibajavításnál — egy hibás peremfüggvény visszavonása sem azonnali, mert a terjesztésnek is le kell futnia. A könnyű motornál ez jellemzően gyorsabb, a teljesebbnél lassabb. Ezért is érdemes a peremre csak a stabil, jól tesztelt logikát tenni, és a gyakran változó, kísérleti kódot az originhez közelebb tartani, ahol a telepítés és a rollback kiszámíthatóbb.

Mit jelent ez neked?

A peremszámítás a felhasználóhoz közeli, gyors feladatokra való: átirányítás, fejléc-manipuláció, egyszerű validáció. Két eszközöd van: kezdd a könnyű, gyors CloudFront Functions-szal az egyszerű feladatokra, és csak akkor válaszd a teljesebb Lambda@Edge-et, ha a logika túl összetett (például külső hívás kell). Ne tedd a perem korlátozott környezetébe a nehéz üzleti logikát — a peremre az való, aminek a gyorsaság és a közelség a lényege, a többi maradjon központibb, tesztelhetőbb helyen.