Podrobná analýza AWS Lambda

Preklad článku bol pripravený špeciálne pre študentov kurzu "Cloudové služby". Máte záujem rozvíjať sa týmto smerom? Pozrite si majstrovskú triedu od Egora Zueva (TeamLead na InBit) "Služba AWS EC2" a pripojte sa k ďalšej skupine kurzov: začína 26. septembra.

Podrobná analýza AWS Lambda

Viac ľudí migruje na AWS Lambda kvôli škálovateľnosti, výkonu, úsporám a schopnosti spracovať milióny alebo dokonca bilióny požiadaviek mesačne. Aby ste to dosiahli, nemusíte spravovať infraštruktúru, na ktorej služba beží. A automatické škálovanie vám umožňuje obsluhovať tisíce súčasných požiadaviek za sekundu. Myslím, že AWS Lambda možno právom nazvať jednou z najpopulárnejších služieb AWS.

AWS Lambda

AWS Lambda je bezserverová výpočtová služba riadená udalosťami, ktorá vám umožňuje spúšťať kód bez poskytovania alebo správy serverov a rozširovať ďalšie služby AWS pomocou vlastnej logiky. Lambda automaticky reaguje na rôzne udalosti (nazývané spúšťače), ako sú HTTP požiadavky cez Amazon API Gateway, zmeny údajov v Amazon S3 buckets alebo Amazon DynamoDB tabuľkách; alebo môžete spustiť svoj kód prostredníctvom volaní API pomocou súpravy AWS SDK a prechodov stavov vo funkciách AWS Step Functions.

Lambda spúšťa kód na vysoko dostupnej výpočtovej infraštruktúre a je plne zodpovedná za správu základnej platformy vrátane údržby servera a operačného systému, poskytovania zdrojov, automatického škálovania, monitorovania kódu a protokolovania. To znamená, že stačí nahrať kód a nakonfigurovať, ako a kedy sa má spustiť. Služba sa zase postará o jej spustenie a zabezpečí vysokú dostupnosť vašej aplikácie.

Kedy prejsť na Lambdu?

AWS Lambda je pohodlná výpočtová platforma, ktorá je vhodná pre rôzne prípady použitia, pokiaľ služba podporuje jazyk a runtime vášho kódu. Ak sa chcete zamerať na svoj kód a obchodnú logiku pri outsourcingu údržby servera, poskytovania a škálovania za rozumnú cenu, AWS Lambda je určite správna cesta.

Lambda je ideálna na vytváranie programovacích rozhraní a pri použití v spojení s API Gateway môžete výrazne znížiť náklady a rýchlejšie sa dostať na trh. Existujú rôzne spôsoby využitia funkcií Lambda a možností usporiadania architektúry bez servera – každý si môže vybrať niečo vhodné na základe svojho cieľa.

Lambda vám umožňuje vykonávať širokú škálu úloh. Vďaka podpore CloudWatch tak môžete vytvárať odložené úlohy a automatizovať jednotlivé procesy. Neexistujú žiadne obmedzenia na charakter a intenzitu využívania služby (berie sa do úvahy spotreba pamäte a čas) a nič vám nebráni systematicky pracovať na plnohodnotnej mikroslužbe založenej na Lambde.

Tu môžete vytvárať servisne orientované akcie, ktoré neprebiehajú nepretržite. Typickým príkladom je zmena mierky obrazu. Aj v prípade distribuovaných systémov zostávajú funkcie Lambda relevantné.

Ak sa teda nechcete zaoberať alokáciou a správou výpočtových zdrojov, skúste AWS Lambda; ak nepotrebujete ťažké výpočty náročné na zdroje, vyskúšajte aj AWS Lambda; ak váš kód beží pravidelne, je to tak, mali by ste vyskúšať AWS Lambda.

zabezpečenia

Zatiaľ neexistujú žiadne sťažnosti týkajúce sa bezpečnosti. Na druhej strane, keďže mnohé z interných procesov a implementačných funkcií tohto modelu sú pred používateľom spravovaného runtime prostredia AWS Lambda skryté, niektoré všeobecne akceptované pravidlá cloudovej bezpečnosti sa stávajú irelevantnými.

Ako väčšina služieb AWS, aj Lambda je poskytovaná na základe zdieľanej bezpečnosti a dodržiavania pravidiel medzi AWS a zákazníkom. Tento princíp znižuje prevádzkovú záťaž klienta, keďže AWS preberá úlohy údržby, správy a monitorovania komponentov služieb – od hostiteľského operačného systému a virtualizačnej vrstvy až po fyzické zabezpečenie infraštruktúrnych aktív.

Konkrétne o AWS Lambda, AWS zodpovedá za správu základnej infraštruktúry, súvisiacich základných služieb, operačného systému a aplikačnej platformy. Klient je zodpovedný za bezpečnosť svojho kódu, uchovávanie dôverných údajov, kontrolu prístupu k nim, ako aj k službe a zdrojom Lambda (Identity and Access Management, IAM), a to aj v rámci limitov používaných funkcií.

Nižšie uvedený diagram zobrazuje model zdieľanej zodpovednosti, ktorý sa vzťahuje na AWS Lambda. AWS Responsibility je oranžová a Customer Responsibility je modrá. Ako vidíte, AWS preberá väčšiu zodpovednosť za aplikácie nasadené v službe.

Podrobná analýza AWS Lambda

Model zdieľanej zodpovednosti použiteľný pre AWS Lambda

Doba chodu lambda

Hlavnou výhodou Lambda je, že vykonávaním funkcie vo vašom mene samotná služba prideľuje potrebné zdroje. Môžete sa vyhnúť plytvaniu časom a úsilím na správu systému a zamerať sa na obchodnú logiku a kódovanie.

Služba Lambda je rozdelená do dvoch rovín. Prvou je riadiaca rovina. Podľa Wikipédie je riadiaca rovina časťou siete zodpovednej za prenos signalizácie a smerovanie. Je to primárny komponent, ktorý robí globálne rozhodnutia o poskytovaní, servise a distribúcii pracovných zaťažení. Okrem toho riadiaca rovina funguje ako sieťová topológia poskytovateľa riešenia, ktorá je zodpovedná za smerovanie a riadenie prevádzky.

Druhá rovina je dátová rovina. Rovnako ako riadiaca rovina má svoje vlastné úlohy. Riadiaca rovina poskytuje rozhrania API na riadenie funkcií (CreateFunction, UpdateFunctionCode) a riadi, ako Lambda komunikuje s inými službami AWS. Údajová rovina riadi Invoke API, ktoré spúšťa funkcie Lambda. Po zavolaní funkcie riadiaca rovina pridelí alebo vyberie existujúce runtime prostredie, ktoré je pre danú funkciu vopred pripravené, a potom v ňom spustí kód.

AWS Lambda podporuje rôzne programovacie jazyky vrátane Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 a ďalších prostredníctvom ich príslušných runtime prostredí. AWS ich pravidelne aktualizuje, distribuuje bezpečnostné záplaty a vykonáva ďalšie činnosti údržby v týchto prostrediach. Lambda vám umožňuje používať aj iné jazyky, za predpokladu, že si sami implementujete príslušný runtime. A potom sa budete musieť postarať o jeho údržbu vrátane sledovania jeho bezpečnosti.

Ako to celé funguje a ako bude služba vykonávať vaše funkcie?

Každá funkcia beží v jednom alebo viacerých vyhradených prostrediach, ktoré existujú iba počas životnosti danej funkcie a potom sú zničené. Každé prostredie vykonáva naraz iba jeden hovor, ale ak existuje viacero sériových volaní rovnakej funkcie, použije sa znova. Všetky runtime prostredia bežia na virtuálnych strojoch s hardvérovou virtualizáciou – takzvané microVM. Každý microVM je priradený ku konkrétnemu účtu AWS a prostredia ho môžu znova použiť na vykonávanie rôznych funkcií v rámci tohto účtu. MicroVM sú zabalené do stavebných blokov hardvérovej platformy Lambda Worker, ktorú vlastní a prevádzkuje spoločnosť AWS. Rovnaký runtime nemôžu používať rôzne funkcie, ani mikroVM nie sú jedinečné pre rôzne účty AWS.

Podrobná analýza AWS Lambda

Model izolácie lambda AWS

Izolácia runtime prostredí sa realizuje pomocou niekoľkých mechanizmov. Na najvyššej úrovni každého prostredia sú samostatné kópie nasledujúcich komponentov:

  • Kód funkcie
  • Akékoľvek vrstvy lambda vybraté pre funkciu
  • Prostredie vykonávania funkcií
  • Minimálny užívateľský priestor založený na Amazon Linuxe

Nasledujúce mechanizmy sa používajú na izoláciu rôznych prostredí vykonávania:

  • cgroups - obmedzujú prístup k CPU, pamäti, úložisku a sieťovým zdrojom pre každé runtime prostredie;
  • menné priestory – zoskupovanie ID procesov, ID používateľov, sieťových rozhraní a iných zdrojov spravovaných jadrom Linuxu. Každý runtime beží vo svojom vlastnom mennom priestore;
  • seccomp-bpf - obmedzuje systémové volania, ktoré môžu byť použité v runtime;
  • iptables a smerovacie tabuľky - izolácia vykonávacích prostredí od seba;
  • chroot - poskytuje obmedzený prístup k základnému súborovému systému.

V kombinácii s proprietárnymi izolačnými technológiami AWS tieto mechanizmy zaisťujú spoľahlivé oddelenie doby prevádzky. Prostredia izolované týmto spôsobom nemôžu pristupovať k údajom z iných prostredí ani ich upravovať.

Hoci na jednom microVM môže bežať viacero runtime toho istého účtu AWS, za žiadnych okolností nemožno microVM zdieľať medzi rôznymi účtami AWS. AWS Lambda používa iba dva mechanizmy na izoláciu mikroVM: inštancie EC2 a Firecracker. Izolácia hostí v Lambda na základe inštancií EC2 existuje od roku 2015. Firecracker je nový open source hypervízor špeciálne navrhnutý spoločnosťou AWS pre bezserverové pracovné zaťaženie a predstavený v roku 2018. Fyzický hardvér s mikroVM je zdieľaný medzi pracovnými záťažami naprieč rôznymi účtami.

Ukladanie prostredí a stavov procesov

Aj keď sú runtime Lambda jedinečné pre rôzne funkcie, môžu opakovane volať rovnakú funkciu, čo znamená, že runtime môže prežiť niekoľko hodín, kým sa zničí.

Každý runtime Lambda má tiež zapisovateľný súborový systém prístupný cez adresár /tmp. K jeho obsahu nie je možné pristupovať z iných modulov runtime. Pokiaľ ide o pretrvávanie stavu procesu, súbory zapísané do /tmp existujú počas celého životného cyklu prostredia runtime. To umožňuje zhromažďovanie výsledkov viacerých hovorov, čo je užitočné najmä pri drahých operáciách, ako je načítanie modelov strojového učenia.

Prenos dát hovoru

Rozhranie Invoke API možno použiť v dvoch režimoch: režim udalosti a režim požiadavka-odpoveď. V režime udalosti sa hovor pridá do frontu na neskoršie vykonanie. V režime požiadavka-odpoveď sa funkcia volá okamžite s poskytnutým užitočným zaťažením, po čom sa vráti odpoveď. V oboch prípadoch funkcia beží v prostredí Lambda, ale s rôznymi cestami užitočného zaťaženia.

Počas volaní typu žiadosť-odpoveď prúdi užitočné zaťaženie z API na spracovanie požiadaviek (API Caller), ako je brána AWS API alebo AWS SDK, do nástroja na vyrovnávanie zaťaženia a potom do služby volania Lambda (služba Invoke Service). Ten určí vhodné prostredie na vykonanie funkcie a odovzdá tam užitočné zaťaženie na dokončenie hovoru. Nástroj na vyrovnávanie záťaže prijíma prenosy chránené protokolom TLS cez internet. Prevádzka v rámci služby Lambda – po vyrovnávacom zaťažení – prechádza cez interný VPC v špecifickom regióne AWS.

Podrobná analýza AWS Lambda

Model spracovania hovorov AWS Lambda: Režim žiadosti a odpovede

Volania udalostí môžu byť uskutočnené okamžite alebo pridané do frontu. V niektorých prípadoch je front implementovaný pomocou Amazon SQS (Amazon Simple Queue Service), ktorý odovzdáva hovory službe plnenia hovorov Lambda prostredníctvom interného procesu Poller. Prenášaná prevádzka je chránená protokolom TLS a neexistuje žiadne dodatočné šifrovanie údajov uložených v Amazon SQS.

Volania udalostí nevracajú odpovede – Lambda Worker jednoducho ignoruje akúkoľvek informáciu o odpovedi. Hovory založené na udalostiach z Amazon S3, Amazon SNS, CloudWatch a ďalších zdrojov spracováva Lambda v režime udalosti. Hovory zo streamov Amazon Kinesis a DynamoDB, fronty SQS, vyvažovanie zaťaženia aplikácií a volania brány API sa spracúvajú spôsobom odozvy na žiadosť.

monitorovanie

Funkcie Lambda môžete monitorovať a auditovať pomocou rôznych mechanizmov a služieb AWS vrátane nasledujúcich.

amazoncloudwatch
Zhromažďuje rôzne štatistiky, ako je počet žiadostí, trvanie žiadostí a počet žiadostí, ktoré zlyhali.

Amazon CloudTrail
Umožňuje vám zaznamenávať, nepretržite monitorovať a udržiavať informácie o aktivite účtu spojené s vašou infraštruktúrou AWS. Budete mať k dispozícii kompletnú históriu akcií vykonaných pomocou konzoly AWS Management Console, AWS SDK, nástrojov príkazového riadka a ďalších služieb AWS.

RTG AWS
Poskytuje úplný prehľad o všetkých fázach spracovania požiadaviek vo vašej aplikácii na základe mapy jej interných komponentov. Umožňuje analyzovať aplikácie počas vývoja a v produkčnom prostredí.

Konfigurácia AWS
Budete môcť sledovať zmeny v konfigurácii funkcie Lambda (vrátane odstránenia) a runtime, tagov, názvov obslužných programov, veľkosti kódu, prideľovania pamäte, nastavení časového limitu a súbežných nastavení, ako aj rolu vykonávania Lambda IAM, podsiete a väzby bezpečnostných skupín. .

Záver

AWS Lambda ponúka výkonnú sadu nástrojov na vytváranie bezpečných a škálovateľných aplikácií. Mnohé z postupov zabezpečenia a dodržiavania súladu v AWS Lambda sú rovnaké ako v iných službách AWS, aj keď existujú výnimky. Od marca 2019 je spoločnosť Lambda v súlade so SOC 1, SOC 2, SOC 3, PCI DSS, zákonom o prenosnosti a zodpovednosti zdravotného poistenia (HIPAA) a ďalšími predpismi. Keď teda uvažujete o implementácii svojej ďalšej aplikácie, zvážte službu AWS Lambda – môže byť pre vašu úlohu najvhodnejšia.

Zdroj: hab.com

Pridať komentár