reklama

Zajímavá aplikace pro AWS Lambda

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #15 kdy: 12. 02. 2019, 10:33:21 »
A když tam návštěvnost je, tak máš nějaké cenové srovnání v porovnání s běžným hostingem?
Nemám a ani mě nenapadá, jak by se to dalo rozumně porovnat. Musel bys mít aplikaci s úplně stejnou funkcionalitou, napsanou nějak srovnatelným způsobem (??) a musel bys ji provozovat na mašině přesně odpovídající trafficu, popř. ji mít napsanou jako flexibilně škálující.

Čili bys v podstatě jenom implementací tohodle srovnání strávil půlku mládí a výsledek by nebyl aplikovatelný na jakoukoli jinou aplikaci, čili by byl v podstatě k ničemu ;)
Neměl jsem na mysli nějaké akademické srovnání, ale jen přibližné. Třeba když by firma měla několik webů v PHP, které by se přes API napojovaly na hlavní backend, který by byl třeba v Pythonu nebo Javě a na nějaké VPSce. No a ten backend by se firma rozhodla kvůli škálovatelnosti převést z VPS (nebo vlastních serverů) na Lambdu. Funkcionalita, návštěvnost i traffic by byl pořád zhruba stejný, takže srovnání měsíčních nákladů před a po by se dalo hezky porovnat. Zajímalo by mě to od někoho z první ruky kdo se na vývoji podílel a mohl by případně říct i výhody/nevýhody takového přesunu.

reklama


Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #16 kdy: 12. 02. 2019, 11:33:58 »
A když tam návštěvnost je, tak máš nějaké cenové srovnání v porovnání s běžným hostingem?
Nemám a ani mě nenapadá, jak by se to dalo rozumně porovnat. Musel bys mít aplikaci s úplně stejnou funkcionalitou, napsanou nějak srovnatelným způsobem (??) a musel bys ji provozovat na mašině přesně odpovídající trafficu, popř. ji mít napsanou jako flexibilně škálující.

Čili bys v podstatě jenom implementací tohodle srovnání strávil půlku mládí a výsledek by nebyl aplikovatelný na jakoukoli jinou aplikaci, čili by byl v podstatě k ničemu ;)
Neměl jsem na mysli nějaké akademické srovnání, ale jen přibližné. Třeba když by firma měla několik webů v PHP, které by se přes API napojovaly na hlavní backend, který by byl třeba v Pythonu nebo Javě a na nějaké VPSce. No a ten backend by se firma rozhodla kvůli škálovatelnosti převést z VPS (nebo vlastních serverů) na Lambdu. Funkcionalita, návštěvnost i traffic by byl pořád zhruba stejný, takže srovnání měsíčních nákladů před a po by se dalo hezky porovnat. Zajímalo by mě to od někoho z první ruky kdo se na vývoji podílel a mohl by případně říct i výhody/nevýhody takového přesunu.

To sa neda porovnat tak jednoducho ako uz bolo spomenute. Zalezi na konkretnom pripade. Pokial mas par requestov do mesiaca, tak bude lacnejsia lambda. Ked vsak requestov bude tak vela, ze cena za lambda execution time bude vacsia ako cena za VPS tak uz bude ekonomicky vyhodnejsia VPS (pozor, vacsinou este s lambdou platis za traffic, API GW, ...). Nemusis vsak pozerat iba na ekonomiku. Napr. operations nepotrebujes v takej miere (ziadne OS/siet deployment) + mas priestor (cloud), kde sa inovuje super rychlo a zdroje su dostupne na par klikov za par sekund.

Moj priklad: potreboval som reverse proxy s basic auth. Typicky admin nahodi/nakonfiguruje nginx, hispterskejsi to urobi este v kontajneri. EC2 t3.nano to zvladne ($0.0052/hod). Viem, vsak ze par ms latencie pre pouzivatela v mojom pripade nie su kriticke a nebudem mat vela requestov, tak to mam cez API GW (pripadny throttling)+lambda 1 (auth)/lambda 2 (proxy) - kalkulovane prevadzkove naklady na toto riesenie su okolo $1/mesiac a to sa samo skaluje a uz to nemusim chytat v buducnosti. Len cista t3.nano by mala naklady $3+ bez skalovatelnosti + OS by potreboval pravidelnu starostlivost. Pokial by som uz mal 5 nasobne viac requestov, tak to nebudem implementovat v Lambde.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #17 kdy: 15. 02. 2019, 13:36:14 »
... Pokial by som uz mal 5 nasobne viac requestov, tak to nebudem implementovat v Lambde.
V podstatě jsi mi potvrdil moji domněnku, že když je těch požadavků moc, tak se Lambda nevyplatí. Našel jsem zajímavé srovnání https://www.prerender.cloud/blog/2017/06/19/lambda-is-cheaper-than-ec2 . Souhlasím, že serverless má své výhody, ale stavit na tom backendy webových aplikací, kde se předpokládá nárust návštěvnosti (požadavků) se k výše řečenému asi nevyplatí.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #18 kdy: 15. 02. 2019, 15:20:02 »
Bohužel, ani žádné "bajvoko" srovnání nemám. Jak jsem psal, moje zkušenosti se omezují na jeden pokusný web (který v žádné jiné formě předtím neexistoval).

V podstatě jsi mi potvrdil moji domněnku, že když je těch požadavků moc, tak se Lambda nevyplatí.
To nevím, jestli je úplně platné tvrzení. Z mýho pohledu ti Lambda dává především plně elastické a predikovatelné náklady (víš celkem přesně, že vyřízení jednoho požavku tě stojí $X) a prakticky libovolnou škálovatelnost "zadarmo".

Představ si třeba, že máš službu, kde může být za minutu jeden požadavek nebo milion požadavků a chceš je odbavit v nějakém rozumném čase (max třeba 500ms). Pokud to budeš dělat klasicky pomocí serverů, budeš muset postavit nějakou dobře implementovanou distribuovanou architekturu s automatickým škálováním. To samo o sobě jsou obrovské fixní náklady na vývoj a ladění. A ani tak se ti to zadání nepodaří úplně splnit, protože nový stroj za 500ms nespustíš kdyby ses na hlavu postavil - aspoň nějaké množství požadavků nejspíš prostě zahodíš nebo nevyřídíš do toho limitu. Navíc kvůli ceně za vývoj a údržbu jsou náklady na jeden požadavek prakticky nepredikovatelné. Poběží ti to třeba na nějakém Docker Swarmu a do nákladů ti půjdou takové zhovadilosti jako ladění jeho chyb, přechody na nové verze atd. atd.

Takže mně osobně to připadá, že spíš než na objem v absolutních číslech bych se díval na to, jak moc objem požadavků skáče a jak přísné mám požadavky na jeho vyřizování. Pokud mám provoz, který je stabilní a/nebo můžu batchovat, tak tam imho nemusí být Lambda vhodné řešení. Samotný objem ale imho neříká nic.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #19 kdy: 15. 02. 2019, 17:44:58 »
To nevím, jestli je úplně platné tvrzení. Z mýho pohledu ti Lambda dává především plně elastické a predikovatelné náklady (víš celkem přesně, že vyřízení jednoho požavku tě stojí $X) a prakticky libovolnou škálovatelnost "zadarmo".
Když za VPS platíš pevnou měsíční cenu, tak tam jsou ty náklady také předvídatelné. Cjohn psal, že u Lambdy se platí i trafic a ten ne vždy přesně odhadneš.

Představ si třeba, že máš službu, kde může být za minutu jeden požadavek nebo milion požadavků
Nevím kolik je takových projektů v praxi, ale když vezmu, že u Lambdy je prvních milion požadavků zdarma, tak se to asi vyplatí, ale co když těch požadavků bude 100mil? (Nevím jak se ty požadavky u Lambdy přesně počítají, takže si nedokážu představit jak velký projekt by to musel být.)

chceš je odbavit v nějakém rozumném čase (max třeba 500ms).
Nezapomínej na cold starts, které mohou být až 4 sekundy. Možná jen problém Lambdy a jiné serverless tím netrpí.


Škálování - ano asi ta hlavní výhoda cloudů.
Serverless - taky super výhoda a ušetří to náklady, tak jak píšeš.

Škálovat nemůžeš do nekonečna. Na projekt máš vyhrazený nějaký rozpočet a kdyby ti počet požadavků vystřelil, tak to také musíš nad nějakým limitem přiškrtit.

Nevím, mám z toho takový pocit, že Lambda se vyplatí na menší projekty nebo jako doplněk větších projektů, ale jakmile je to větší projekt, tak se víc vyplatí EC2 kde je také škálování, ale už to není serverless. Pokud by šel projekt jednoduše přemigrovat z Lambdy na EC2, pak by byla Lambda (nebo alternativy u jiných firem) pro začínající projekty dobrá volba.


Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #20 kdy: 15. 02. 2019, 17:54:40 »
To nevím, jestli je úplně platné tvrzení. Z mýho pohledu ti Lambda dává především plně elastické a predikovatelné náklady (víš celkem přesně, že vyřízení jednoho požavku tě stojí $X) a prakticky libovolnou škálovatelnost "zadarmo".
Když za VPS platíš pevnou měsíční cenu, tak tam jsou ty náklady také předvídatelné. Cjohn psal, že u Lambdy se platí i trafic a ten ne vždy přesně odhadneš.
Psal jsem o nákladech na jeden request - explicitně je to v té závorce. U EC2 máš víceméně jenom fixní náklady (pokud nemáš výborně udělané škálování serverů), u Lambdy naopak jenom flexibilní (per request).

Nezapomínej na cold starts, které mohou být až 4 sekundy. Možná jen problém Lambdy a jiné serverless tím netrpí.
Pokud si dobře pamatuju (je to už asi rok, co jsem si s tím hrál), tak to byl jenom problém prvního startu - tj. stačí lambdu po nasazení jednou zavolat. Pokud se pak volá jednou za (nějaká doba), tak se už nestartuje. Nebo možná jo, za nějakých podmínek, nevím přesně.

Škálovat nemůžeš do nekonečna. Na projekt máš vyhrazený nějaký rozpočet a kdyby ti počet požadavků vystřelil, tak to také musíš nad nějakým limitem přiškrtit.
Jasně, ale to platí pro jakýkoli řešení, že jo. Oběd zdarma nemáš nikde.

Nevím, mám z toho takový pocit, že Lambda se vyplatí na menší projekty nebo jako doplněk větších projektů, ale jakmile je to větší projekt, tak se víc vyplatí EC2 kde je také škálování
"U EC2 je škálování" je úplně jiná kategorie než "u Lambdy je škálování". V případě EC2 musíš napsat opravdu škálovatelnou dostribuovanou aplikaci a to není čádná pr-del. EC2 se ti nenafukuje sama, musíš si to implementovat.

Pocit je jedna věc a jiná věc je pečlivá kalkulace. Netvrdím, že to je tak nebo tak, spíš jsem jenom chtěl vypíchnout pár věcí, které v tom výpočtu hrají roli.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #21 kdy: 15. 02. 2019, 19:54:27 »
Nezapomínej na cold starts, které mohou být až 4 sekundy. Možná jen problém Lambdy a jiné serverless tím netrpí.
Pokud si dobře pamatuju (je to už asi rok, co jsem si s tím hrál), tak to byl jenom problém prvního startu - tj. stačí lambdu po nasazení jednou zavolat. Pokud se pak volá jednou za (nějaká doba), tak se už nestartuje. Nebo možná jo, za nějakých podmínek, nevím přesně.
https://medium.com/thundra/dealing-with-cold-starts-in-aws-lambda-a5e3aa8f532
Nečetl jsem to celé, ale zdá se, že je potřeba spouště Lambda funkce v určitém intervalu, aby nedošlo k vypnutí kontejneru. Zdá se, že to nebude neřešitelný problém.

"U EC2 je škálování" je úplně jiná kategorie než "u Lambdy je škálování". V případě EC2 musíš napsat opravdu škálovatelnou dostribuovanou aplikaci a to není čádná pr-del. EC2 se ti nenafukuje sama, musíš si to implementovat.
Myslel jsem, že to je někde v nastavení EC2 a že není potřeba mít na to připravenou aplikaci. Např. že v nastavení bude něco ve smyslu: když 1. instance je vytížená na 90% tak automaticky spusť 2. instanci. Jak jsem se teď díval na stránky Amazonu, tak to fakt nevypadá moc jednoduše, ale třeba na Azure to podle toho obrázku nevypadá extra složitě - https://docs.microsoft.com/en-us/azure/azure-monitor/platform/autoscale-best-practices

Pocit je jedna věc a jiná věc je pečlivá kalkulace. Netvrdím, že to je tak nebo tak, spíš jsem jenom chtěl vypíchnout pár věcí, které v tom výpočtu hrají roli.
Taky netvrdím, že mám pravdu, ale zdají se mi ty Lambdy a Funcions až podezřele výhodné - milion požadavků zdarma no nekup to. Třeba do diskuze zavítá někdo kdo s tím má větší zkušenosti.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #22 kdy: 15. 02. 2019, 20:01:18 »
Myslel jsem, že to je někde v nastavení EC2 a že není potřeba mít na to připravenou aplikaci. Např. že v nastavení bude něco ve smyslu: když 1. instance je vytížená na 90% tak automaticky spusť 2. instanci.
To udělat jde, ale to je ten nejmenší problém. Ty dvě instance musí typicky nějak sdílet data, musíš zaručit jejich vzájemnou konzistenci, musíš mezi ně nějak rozkládat zátěž atd. atd. Nakonec zjistíš, že "jenom" kvůlit škálování potřebuješ děsivou jadernou elektrárnu :)

ale třeba na Azure to podle toho obrázku nevypadá extra složitě - https://docs.microsoft.com/en-us/azure/azure-monitor/platform/autoscale-best-practices
To je právě jenom řešení toho "nejmenšího problému".

Taky netvrdím, že mám pravdu, ale zdají se mi ty Lambdy a Funcions až podezřele výhodné - milion požadavků zdarma no nekup to. Třeba do diskuze zavítá někdo kdo s tím má větší zkušenosti.
Tak největší nevýhoda je asi v tom, že to je prostě funkce, která má dost omezené, co může a nemůže dělat. Pokud chceš například použít nějakej opensource, kterej bude požadavky nějak zpracovávat (ve "smyčce" - tj. běží pořád), tak ho musíš někde spustit - v Lambdě to nejde, zůstane ti jenom EC2.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #23 kdy: 16. 02. 2019, 00:00:18 »
Já jsem v AWS Lambda (Python) napsal 2 utility - zdrojáky jsou k dispozici na Githubu ( https://github.com/koss822/misc/tree/master/Aws )

Utilita 1 - HTTP HealthCheck Reboot Tool

Je to taková utilita, která testuje, jestli je webový server dostupný, a v případě nedostupnosti ho restartuje.

S3Logs

Trošku komplexnější věc pro zpracování logů z S3.

Co se dá s lambda udělat

  • Monitoring dostupnosti serverů
  • Zpracování většího množství dat

Velkou výhodou Lambdy je paraelizace a spolehlivost. Taky se dají z mnoha služeb v AWS udělat různé triggery na lambda funkce - například když přibyde soubor v S3, spusť tuto lambda funkci.

Například můžeš naprogramovat, že pokud nahraješ obrázek do S3, tak se automaticky vytvoří jeho zmenšená verze.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #24 kdy: 16. 02. 2019, 10:09:02 »
Pekne akademicke zhrnutie serverless-u (Lambda je tiez serverless): https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf

 

reklama