Zajímavá aplikace pro AWS Lambda

Zajímavá aplikace pro AWS Lambda
« kdy: 11. 02. 2019, 15:39:55 »
Zdravím,
přemýšlím o vhodné bakalářské práci a napadlo mě "AWS-Lambda" Serverless computing. Je tady někdo, kdo má zkušenosti s vývojem s použití AWS-Lambda?
Já si o tom četl pouze teoreticky. Mohl by mi někdo, prosím, poradit, co udělat za zajímavou aplikaci s použití této technologie? Nebo nějaké příklady, co jste vy s tím dělali?
Mockrát děkuji
« Poslední změna: 11. 02. 2019, 17:05:56 od Petr Krčmář »


Re:AWS-Lambda-aplikace
« Odpověď #1 kdy: 11. 02. 2019, 16:16:57 »
V lambdě se podle mě dělají především

- "serverless" webovky/HTTP API. V budoucnu by Lambda měla mít nějakou podporu websocketů, tak by množina vhodných use cases měla být ještě větší.
- nějaká integrace/automatizace/glue cloudových služeb - protože Lambda funkci lze triggernout různými událostmi ve spoustě dalších služeb = SQS, S3, EC2... Např. že byla vytvořena nějaká entita (S3 soubor, instance něčeho...), změněn stav, něco se rozbilo apod.


Zkus se podívat na videa (především keynotes) z AWS Reinvent konference, je to na Youtube. A taky doporučuju sledovat Soukiho Twitter  :D https://twitter.com/petrsoukup

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #2 kdy: 11. 02. 2019, 17:38:36 »
Lambda funkce je takova funkce v ramci AWS enviromentu, da se to pouzivat pro takove agilnejsi ucely, abys nemusel na kazdou pitomost tvorit nejakou plnotucnou komponentu, muzes to udelat pres Lambdu. Pouziva se to jako uzitecna doplnkova vlastnost, ale plnotucnou standardni komponentu to podle me nenahrazuje. Ale myslim si ze jako bakalarka je to dobre tema.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #3 kdy: 11. 02. 2019, 18:16:46 »
a nějaký konkrétní případ aplikace, prosím? Co by se s tím dalo udělat a bylo to použitelné do bakalářky jakožto nějaká aplikace?

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #4 kdy: 11. 02. 2019, 18:52:24 »
- digitalizace dokumentů v pdf či skenů
- generování posílání denních, hodinových, měsíčních reportů
- kontrola či zpracování nahraných souborů uživateli (vytvoření náhledů videí, antivirová kontrola atd.)

A spousty jiných věcí, které vykazují špičku a nejsou pravidelné. Cokoliv musí běžet hodně často či nonstop není vhodné pro lambdu.


Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #5 kdy: 11. 02. 2019, 19:06:49 »
Pokud se něco nezměnilo, tak AWS nemělo zastropování finančního limitu, spoustě menších vývojářům to vadilo, takže pokud bys to chtěl po bakalářce používat i v praxi a bojíš se, aby ti nepřišla faktura na 100tis Kč, tak se zkus podívat i na Azure Functions, kde by zastropování mělo fungovat.

Džan

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #6 kdy: 11. 02. 2019, 19:43:53 »
Pokud to chceš jenom pro studijní účely, můžu doporučit Google Cloud Functions, princip je obdobný.
Nevím jak AWS (co jsem koukal posledně, byl tam jenom JavaScript), v Azure bych čekal k JS ještě nějakou formu .NET, Google umí JS a v betě Python a Go.
Jako nováček dostaneš na první rok kredit $300, což na otestování v menším měřítku asi stačí.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #7 kdy: 11. 02. 2019, 20:43:40 »
Je tady někdo, kdo má zkušenosti s vývojem s použití AWS-Lambda?
Nějaký jo.

Já si o tom četl pouze teoreticky. Mohl by mi někdo, prosím, poradit, co udělat za zajímavou aplikaci s použití této technologie? Nebo nějaké příklady, co jste vy s tím dělali?
Je to dost otázka toho, co za zajímavý považuješ ty a jak vysoko má tvoje škola laťku na bakalářky.

Osobně jsem lambdu použil na pokusnou implementaci SPA webové aplikace - totálně serverless: logika je v JS na klientovi, stav se ukládá přes lambdu do DynamoDB. Žádný server tam neběží, platím čistě jenom za traffic a data. Když tam není návštěvnost, stojí mě to něco kolem dolaru měsíčně za DNS nebo tak něco.

Popis kompletního řešení nějaké relativně jednoduché webovky si jako bakalářku dovedu představit.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #8 kdy: 11. 02. 2019, 20:48:04 »
Je to dost otázka toho, co za zajímavý považuješ ty
Jinak teda pokud bys chtěl nějakou zajímavější doménu než webovky, Lambda se dá docela dobře použít na celkem cokoli z oblasti IoT - pokud ti tam těch dat neteče moc, nebo můžou téct nárazově, může být Lambda fajn řešení.

Mohl bys třeba zkusit vytvořit počítání počtu aut na silnici pomocí nějakýho laseru nebo něco, odesílání dat přes LoRa, zpracování Lambdou, ukládání do DynamoDB, k tomu jednoduchoučký web s D3. Taky fajn bakalářka.

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #9 kdy: 11. 02. 2019, 22:06:37 »
Když tam není návštěvnost, stojí mě to něco kolem dolaru měsíčně za DNS nebo tak něco.
A když tam návštěvnost je, tak máš nějaké cenové srovnání v porovnání s běžným hostingem?

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #10 kdy: 11. 02. 2019, 22:33:38 »
Google umí JS a v betě Python a Go.
Chtěl jsem napsat, že Python v betě je slabota, ale vidím, že na Azure je také zatím jako "Preview", ale mám dojem, že u Googlu je těch jazyků na výběr asi nejmíň, třeba Javu tam nevidím.

Azure Functions: https://docs.microsoft.com/en-us/azure/azure-functions/supported-languages
AWS Lambda: https://aws.amazon.com/lambda/faqs/
Google Cloud Functions: https://cloud.google.com/functions/docs/writing/

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #11 kdy: 12. 02. 2019, 02:14:35 »
Vyvoj muzes delat lokalne pomoci AWS SAM local https://aws.amazon.com/about-aws/whats-new/2017/08/introducing-aws-sam-local-a-cli-tool-to-test-aws-lambda-functions-locally/

Lambda podporuje Java, Node.js, Python, Ruby, Go a .NET https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html

Lambda free tier ma v sobe 1M request per month a nevyexpiruje po 12 mesicich https://aws.amazon.com/lambda/pricing/

Muzes si nastavit limit na concurrent executions per function https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html. Default je 1000 a deli se o to vsechny funkce v danym regionu.

Idealni pouziti: v podstate na cokoliv. Muzes to mit za API Gateway a mas restovou sluzbu. Jako trigger muzes mit i cron.

Koukni se i na step functions https://aws.amazon.com/step-functions/

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #12 kdy: 12. 02. 2019, 02:25:52 »
Slabo navstevovane webovky su standard (viacmenej servuju iba staticky obsah). Potom su uz cele frameworky, ked potrebujes viac funkcionality:


Z mojho Lambda todo listu - viacmenej akademicka uloha:
zoberies standardnu daemonizovanu aplikaciu, ktora je napisana v jazyku, ktory je podporovany Lambdou (napr. Grafana s backendom v Go) - napises wrapper, ktory z nej bez velkeho hackovania urobi Lambda funkciu a porovnas (cold/hot) vykonnost a ekonomicku vyhodnost (do urciteho poctu requestov bude lambda lacnejsia/asi aj pomalsia, avsak pri dakej hranici uz bude lacnejsia daemon verzia na EC2).

Jedno najzaujimavejsie pouzitie funkcii podla mna: https://www.troyhunt.com/i-wanna-go-fast-why-searching-through-500m-pwned-passwords-is-so-quick/

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #13 kdy: 12. 02. 2019, 02:41:55 »
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 ;)

Re:Zajímavá aplikace pro AWS Lambda
« Odpověď #14 kdy: 12. 02. 2019, 08:10:03 »
Ja jsem tu pointu Lambda funkce predtim tak naprd napsal. Pointa je takova, ze AWS bezi v nejakem enviromentu, podobne jako ti bezi treba Aplikacni Server. Aplikacni Server umi spoustet Java WAR aplikace a ty vsechny bezi tak nejak spolecne nad jedinou JVM se spolecnymi zdroji. VLastne Lambda funkce je pro AWS "Aplikacni server" neco jako je WAR pro Java EE Aplikacni Server. Lambda je zkratka cosi nativne zakomponovaneho do AWS enviromentu. A je to Event driven. Pouzijes to na veci, ktere dokazi vyvolat eventu, jako napr. nahrani souboru do S3.

Zaroven lambda funkce sama o sobe je pasivni prvek, musi ji vzdycky neco zavolat.

To me vede k tomu, ze sam vlastne moc nechapu, k cemu se ve vyvoji lastne hodi. Pokud vyvijis v AWS nejakou nejakou komponentu, tak to, co by ti zprostreddkovala ta lambda funkce, muzes dat primo jako soucast te komponenty - nepotrebujes to mit nekde udelane v Lambde.

Tzn. ta lambda slouzi jako takovy doplnek ke standardnim AWS sluzbam. Lambda je vlastne takovy adapter mezi AWS sluzbami ktere vyvolavaji ruzne udalosti a mezi tvymi komponentami. Nevim napr. jak by ve Springove komponente slo napojit udalost z S3. Ale muzes tam dat lambdu, ktera dokaze reagovat na S3, a  te lambde zavolas treba REST API od tve komponenty. A to vidim jako pointu Lambdy.

Pak je jeste jedna pointa Lambdy a to je pro socky a velice jednoducha pouziti, ale o tom se mi tu nechce psat.

A pak je jeste jedno pouziti lambdy, ktere tak nejak vyplyva z jeji jednoduchosti - je overhead re-deployovat zmenu nejake komponenty do AWS, ale je velice jednoduche upravit lambdu. Muzes proto do Lambdy delegovat ruzne funkce komponent, kde ocekavas, ze se ti bude hodit rychla zmena funkcionality.
« Poslední změna: 12. 02. 2019, 08:14:27 od prihlaseny_uzivatel »