Detalizēta analīze par AWS Lambda

Raksta tulkojums sagatavots īpaši kursa studentiem «Mākoņpakalpojumi»Interesē attīstīties šajā virzienā? Skatieties Egora Zujeva meistarklasi (kompānijas InBit TeamLead) «AWS EC2 pakalpojums» un pievienojieties tuvākajai kursa grupai: uzsākšana 26. septembrī.

Detalizēta analīze par AWS Lambda

Arvien vairāk cilvēku pāriet uz AWS Lambda, pateicoties tās mērogojamībai, veiktspējai, ekonomiskajai izdevīgajai un spējai apstrādāt miljonus un pat triljonus pieprasījumu mēnesī. Tam nav nepieciešama infrastruktūras pārvaldība, uz kuras darbojas pakalpojums. Automātiskā mērogošana ļauj apkalpot tūkstošiem vienlaicīgu pieprasījumu sekundē. Domāju, ka AWS Lambda noteikti var uzskatīt par vienu no pieprasītākajiem AWS pakalpojumiem.

AWS Lambda

AWS Lambda ir notikumiem orientēts bezserveru skaitļošanas pakalpojums, kas ļauj izpildīt kodu bez serveru piešķiršanas un apkopes un papildina citus AWS pakalpojumus, pamatojoties uz lietotāja loģiku. Lambda automātiski reaģē uz dažādiem notikumiem (sauktiem par trigeriem), piemēram, HTTP pieprasījumiem caur Amazon API Gateway, datu izmaiņām Amazon S3 grozos vai Amazon DynamoDB tabulās; vai varat palaist savu kodu, izmantojot API izsaukumus, izmantojot AWS SDK un pārejas starp stāvokļiem AWS Step Functions.

Lambda izpilda kodu augsta pieejamības skaitļošanas infrastruktūrā un pilnībā atbild par zemāk esošās platformas pārvaldību, ieskaitot serveru un operētājsistēmas apkopi, resursu piešķiršanu, automātisko mērogošanu, koda monitoringu un žurnālu veidošanu. Tas nozīmē, ka jums vienkārši jāiedod sava koda un jāiestata, kā un kad tas jāizpilda. Savukārt pakalpojums parūpēsies par tā palaišanu un nodrošinās jūsu lietojumprogrammas augsto pieejamību.

Kad pāriet uz Lambda?

AWS Lambda ir ērta skaitļošanas platforma, kas ir piemērota daudziem pielietojuma scenārijiem, protams, ja jūsu koda valoda un izpildes vide tiek atbalstītas pakalpojumā. Ja vēlaties koncentrēties uz kodu un biznesa loģiku, uzticot serveru apkopi, resursu piešķiršanu un mērogošanu ārējā pakalpojumu sniedzējā par saprātīgu cenu, jums noteikti jāizvēlas AWS Lambda.

Lambda ir ideāli piemērota programmatūras interfeisu izstrādei, un, ja izmantosiet šo pakalpojumu kopā ar API Gateway, varat ievērojami samazināt izmaksas un ātrāk nonākt tirgū. Ir dažādi veidi, kā izmantot Lambda funkcijas un organizēt bezserveru arhitektūru – katrs varēs izvēlēties kaut ko piemērotu saskaņā ar noteikto mērķi.

Lambda ļauj izpildīt plašu uzdevumu klāstu. Pateicoties CloudWatch atbalstam, var izveidot atliktās uzdevumus un automatizēt atsevišķus procesus. Nav nekādu ierobežojumu attiecībā uz pakalpojuma raksturu un intensitāti (tiek ņemta vērā atmiņas izmantošana un laiks), un nekas netraucē sistemātiski strādāt pie pilnvērtīga mikroservisa, balstoties uz Lambda.

Šeit varat izveidot pakalpojumu orientētas darbības, kas netiek izpildītas pastāvīgi. Tipisks piemērs ir attēlu mērogošana. Pat izkliedētās sistēmās Lambda funkcijas nezaudē savu nozīmi.

Tātad, ja nevēlaties nodarboties ar datu resursu piešķiršanu un pārvaldību — izmēģiniet AWS Lambda; ja jums nav nepieciešamas smagas, resursietilpīgas aprēķināšanas — arī izmēģiniet AWS Lambda; ja jūsu kods tiek izpildīts periodiski — viss ir pareizi, jums vajadzētu izmēģināt AWS Lambda.

Drošība

Pašlaik drošība nelasa. No otras puses, ņemot vērā to, ka no lietotāja pārvaldītās AWS Lambda izpildes vides ir slēpti daudzi iekšējie procesi un šī modeļa īstenošanas iezīmes, daži vispārpieņemtie mākoņu drošības noteikumi zaudē savu aktualitāti.

Tāpat kā lielākā daļa AWS pakalpojumu, Lambda tiek sniegta saskaņā ar kopējās atbildības principu starp AWS un klientu attiecībā uz drošību un regulējuma prasību ievērošanu. Šis princips samazina operacionālo slogu uz klientu, jo AWS uzņemas uzdevumus, kas saistīti ar apkalpošanu, pārvaldību un pakalpojumu komponentu kontroli – no hosta operētājsistēmas un virtualizācijas līmeņa līdz infrastruktūras fiziskās drošības nodrošināšanai.

Runājot konkrēti par AWS Lambda, AWS ir atbildīgs par zemāk esošās infrastruktūras, saistīto pamata pakalpojumu, operētājsistēmas un lietojumplatformas pārvaldību. Savukārt klients ir atbildīgs par sava koda drošību, konfidenciālo datu uzglabāšanu, piekļuves kontroli tiem, kā arī pakalpojuma un Lambda resursiem (Identity and Access Management, IAM), tostarp izmantotajām funkcijām.

Zemāk redzamajā shēmā ir attēlota kopējās atbildības modelis, kas attiecas uz AWS Lambda. AWS atbildības joma ir atzīmēta oranžā krāsā, bet klienta atbildība — gaiši zilā krāsā. Kā redzat, AWS uzņemas vairāk atbildības par lietojumprogrammām, kas ir izvietotas šajā pakalpojumā.

Detalizēta analīze par AWS Lambda

Kopējās atbildības modelis, kas attiecas uz AWS Lambda

Lambda izpildvide

Galvenā Lambda priekšrocība ir tā, ka, izpildot funkciju jūsu vietā, pakalpojums pats piešķir nepieciešamos resursus. Jūs varat netērēt laiku un spēkus sistēmu administrēšanai un koncentrēties uz biznesa loģiku un koda rakstīšanu.

Lambda pakalpojums ir sadalīts divās jomās. Pirmā ir vadības līmenis. Saskaņā ar Vikipēdiju, vadības līmenis (control plane) ir tīkla daļa, kas atbildīga par signālu pārvadāšanu un maršrutēšanu. Tā ir galvenā sastāvdaļa, kas pieņem globālus lēmumus par resursu piešķiršanu, apkuri un darba slodžu sadali. Turklāt vadības līmenis darbojas kā risinājuma piegādātāja tīkla topoloģija, kas atbild par datu maršrutēšanu un pārvaldību.

Otrā joma ir datu līmenis. Tam, tāpat kā vadības līmenim, ir savas funkcijas. Vadības līmenis nodrošina API funkciju pārvaldībai (CreateFunction, UpdateFunctionCode) un kontrolē Lambda mijiedarbību ar citiem AWS pakalpojumiem. Datu līmenis pārvalda API izsaukumus (Invoke API), kas aktivizē Lambda funkcijas. Pēc funkcijas izsaukšanas vadības līmenis piešķir vai izvēlas esošo, iepriekš sagatavoto izpildvidi šai funkcijai un pēc tam tajā izpilda kodu.

AWS Lambda atbalsta vairākas programmēšanas valodas, tostarp Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 un citas, izmantojot attiecīgās izpildes vides. AWS tās regulāri atjauno, izplata drošības labojumus un veic citas operācijas, lai uzturētu šīs vides. Lambda ļauj izmantot arī citas valodas, ja jūs paši ieviešat attiecīgu izpildes vidi. Un tad jums būs jāpārvalda tās apkope, tostarp jāpievērš uzmanība drošībai.

Kā tas viss darbojas un kā pakalpojums izpildīs jūsu funkcijas?

Katras funkcijas darbība notiek vienā vai vairākās veltītās vidēs, kas eksistē tikai šīs funkcijas dzīves cikla laikā, un pēc tam tiek iznīcinātas. Katras vides ietvaros vienlaikus tiek izpildīta tikai viena izsaukuma, taču tā tiek atkārtoti izmantota, ja notiek daudzi secīgi izsaukumi uz vienu un to pašu funkciju. Visas izpildes vides darbojas uz virtuālajām mašīnām ar aparatūras virtualizāciju — tā sauktajām microVM. Katras microVM piešķirta konkrēta AWS kontam un to var atkārtoti izmantot, lai izpildītu dažādas funkcijas šajā kontā. MicroVM ir iepakotas struktūras blokos, ko pārvalda AWS. Viena un tā pati izpildes vide nevar tikt izmantota dažādām funkcijām, jo microVM ir unikālas dažādiem AWS kontiem.

Detalizēta analīze par AWS Lambda

Izolācijas modelis AWS Lambda

Izpildes vides izolācija tiek īstenota, izmantojot vairākus mehānismus. Augstākajā līmenī katrā vidē ir atsevišķas kopijas sekojošiem komponentiem:

  • Funkcijas kods
  • Jebkuri Lambda slāņi, kas izvēlēti šai funkcijai
  • Funkcijas izpildes vide
  • Minimālā lietotāja telpa, kas balstīta uz Amazon Linux

Atšķirīgu izpildes vidi izolācijai tiek pielietoti šādi mehānismi:

  • cgroups — piekļuves ierobežojums resursiem (CPU, atmiņa, krātuves caurlaidība un tīkls) katrai izpildes videi;
  • namespaces — grupēšana procesu ID, lietotāju ID, tīkla interfeisu un citu resursu ID, kurus pārvalda Linux kodols. Katrs izpildes vide darbojas savā nosaukumu telpā;
  • seccomp-bpf — sistēmas izsaukumu ierobežošana, kurus var izmantot izpildes vidē;
  • iptables un maršrutēšanas tabulas — izpildes vidu izolācija citu vidu starpā;
  • chroot — ierobežota piekļuve apakšējai failu sistēmai.

Sadarbībā ar AWS patentētajām izolācijas tehnoloģijām norādītie mehānismi garantē drošu izpildes vidi norobežošanu. Tādā veidā izolētas vides nevar piekļūt citu vidēs esošajiem datiem un mainīt tos.

Lai arī vairāki izpildes vides vienā AWS kontā var darboties vienā microVM, nevienā gadījumā microVM nevar koplietot dažādi AWS konti. AWS Lambda microVM izolācija tiek veikta, izmantojot divus mehānismus: EC2 instancēm un Firecracker. EC2 instanču bāzētā viesu izolācija Lambda tiek piemērota kopš 2015. gada. Firecracker ir jauns atvērtā koda hipervizors, ko īpaši izstrādājusi AWS bezserveru darba slodzēm un kas tika ieviests 2018. gadā. Fiziskais aprīkojums, uz kura darbojas microVM, tiek koplietots ar dažādu kontu darba slodzēm.

Vides un procesu stāvokļu saglabāšana

Lai arī Lambda izpildes vides ir unikālas dažādām funkcijām, tajās ir iespējams atkārtoti izsaukt to pašu funkciju, tas ir, izpildes vide var pastāvēt vairākas stundas pirms tiek iznīcināta.

Katram Lambda izpildes videi ir arī rakstīšanai atvērtā failu sistēma, kas pieejama caur katalogu /tmp. Uz tās saturu nevar piekļūt no citām izpildes vidēm. Attiecībā uz procesu stāvokļu saglabāšanu, failus, kas rakstīti uz /tmp, pastāv visas izpildes vides dzīves cikla laikā. Tas ļauj uzkrāt vairāku izsaukumu rezultātus, kas ir īpaši noderīgi tādām dārgām operācijām kā mašīnu mācību modeļu ievilkšana.

Izsaukuma datu pārsūtīšana

Invoke API interfeisu var izmantot divos režīmos: notikumu režīmā un pieprasījuma-atbildes režīmā. Notikumu režīmā izsaukums tiek pievienots rindai turpmākai izpildei. Pieprasījuma-atbildes režīmā funkcija tiek izsaukta nekavējoties ar norādīto slodzi, pēc kuras tiek atgriezta atbilde. Abos gadījumos funkcija tiek izpildīta Lambda vidē, bet ar dažādām slodzes ceļiem.

Izsaukumu veidiem "pieprasījums - atbilde" slodze tiek nosūtīta no API pieprasījumu apstrādes (API Caller), piemēram, AWS API Gateway vai AWS SDK, uz slodzes balansētāju, un pēc tam uz Lambda izsaukumu izpildes pakalpojumu (Invoke Service). Pēdējais nosaka atbilstošu vidi funkcijas izpildei un nosūta tur slodzi, lai pabeigtu izsaukumu. Slodzes balansētājs saņem trafiku ar TLS aizsardzību caur internetu. Trafiks Lambda pakalpojumā — pēc slodzes balansētāja — plūst cauri iekšējam VPC konkrētā AWS reģionā.

Detalizēta analīze par AWS Lambda

AWS Lambda izsaukumu apstrādes modelis: "pieprasījums - atbilde" režīms

Notikumu izsaukumi var tikt izpildīti tūlītēji vai pievienoti rindai. Dažos gadījumos rinda tiek īstenota ar Amazon SQS (Amazon Simple Queue Service), kas nosūta izsaukumus uz Lambda izsaukumu izpildes pakalpojumu, izmantojot iekšējo izsukšanas procesu (poller). Nosūtītais trafiks ir aizsargāts ar TLS, tādēļ nav paredzēta papildu datu šifrēšana, kas glabājas Amazon SQS.

Notikumu izsaukumi nerada atbildes — jebkādu atbildes informāciju Lambda Worker vienkārši ignorē. Izsaukumi no Amazon S3, Amazon SNS, CloudWatch un citiem avotiem tiek apstrādāti Lambda pakalpojumā notikumu režīmā. Izsaukumi no Amazon Kinesis un DynamoDB, SQS rindas izsaukumi, lietojumprogrammas slodzes balansētājs un API Gateway tiek apstrādāti "pieprasījums - atbilde" režīmā.

Uzraudzība

Jūs varat uzraudzīt un veikt auditu Lambda funkcijām, izmantojot dažādus mehānismus un AWS pakalpojumus, tostarp šādus.

Amazon CloudWatch
Vācijas dažādus statistikas datus, piemēram, pieprasījumu skaitu, pieprasījuma izpildes ilgumu un kļūdu pabeigto pieprasījumu skaitu.

Amazon CloudTrail
Iespējot žurnālu, nepārtrauktu uzraudzību un informācijas par aktivitātēm jūsu kontā saglabāšanu, kas saistīta ar jūsu AWS infrastruktūru. Jums būs pilnīga darbību hronoloģija, kas veikta, izmantojot AWS Management Console, AWS SDK, komandrindas rīkus un citus AWS pakalpojumus.

AWS X-Ray
Nodrošina pilnīgu redzamību par visiem pieprasījumu apstrādes posmiem jūsu lietojumprogrammā, pamatojoties uz tās iekšējo komponentu karti. Atļauj analizēt lietojumprogrammas izstrādes un ražošanas vidē.

AWS Config
Jūs varēsiet sekot līdzi Lambda funkciju konfigurācijas izmaiņām (ieskaitot to dzēšanu) un izpildes vidēm, tagiem, apstrādātāju nosaukumiem, koda lielumam, atmiņas sadalījumam, laika ierobežojumu iestatījumiem un vienlaicīguma parametriem, kā arī Lambda IAM izpildes lomai, apakšrežiem un drošības grupu piesaistei.

Secinājums

AWS Lambda piedāvā spēcīgu rīku komplektu, lai veidotu drošas un mērogotas lietojumprogrammas. Daudzi drošības un regulējumu atbilstības pasākumi AWS Lambda neatšķiras no tiem, kas tiek izmantoti citos AWS pakalpojumos, lai gan ir izņēmumi. 2019. gada martā Lambda atbilst SOC 1, SOC 2, SOC 3, PCI DSS, ASV Medicīniskās apdrošināšanas pārvaldes likuma (HIPAA) un citu regulējumu prasībām. Tāpēc, kad domājat par jauna lietojuma izstrādi, apsveriet AWS Lambda pakalpojumu — tas var būt vispiemērotākais jūsu uzdevumam.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster