Detalizēta AWS Lambda analīze

Raksta tulkojums tika sagatavots speciāli kursa studentiem "Mākoņpakalpojumi". Vai vēlaties attÄ«stÄ«ties Å”ajā virzienā? Skatieties Egora Zujeva (TeamLead vietnē InBit) meistarklasi "AWS EC2 pakalpojums" un pievienojies nākamajai kursu grupai: sākas 26. septembrÄ«.

Detalizēta AWS Lambda analīze

Vairāk cilvēku migrē uz AWS Lambda, lai nodroÅ”inātu mērogojamÄ«bu, veiktspēju, ietaupÄ«jumus un spēju apstrādāt miljoniem vai pat triljoniem pieprasÄ«jumu mēnesÄ«. Lai to izdarÄ«tu, jums nav jāpārvalda infrastruktÅ«ra, kurā darbojas pakalpojums. Un automātiskā mērogoÅ”ana ļauj apkalpot tÅ«kstoÅ”iem vienlaicÄ«gu pieprasÄ«jumu sekundē. Es domāju, ka AWS Lambda var pamatoti saukt par vienu no populārākajiem AWS pakalpojumiem.

AWS Lambda

AWS Lambda ir uz notikumiem balstÄ«ts bezservera skaitļoÅ”anas pakalpojums, kas ļauj palaist kodu bez serveru nodroÅ”ināŔanas vai pārvaldÄ«bas un paplaÅ”ināt citus AWS pakalpojumus, izmantojot pielāgotu loÄ£iku. Lambda automātiski reaģē uz dažādiem notikumiem (sauktiem par trigeriem), piemēram, HTTP pieprasÄ«jumiem caur Amazon API Gateway, izmaiņām datos Amazon S3 segmentos vai Amazon DynamoDB tabulās; vai arÄ« varat palaist savu kodu, izmantojot API izsaukumus, izmantojot AWS SDK un stāvokļa pārejas AWS Step Functions.

Lambda palaiž kodu ļoti pieejamā skaitļoÅ”anas infrastruktÅ«rā un ir pilnÄ«bā atbildÄ«ga par pamatā esoŔās platformas administrÄ“Å”anu, tostarp servera un operētājsistēmas uzturÄ“Å”anu, resursu nodroÅ”ināŔanu, automātisko mērogoÅ”anu, koda uzraudzÄ«bu un reÄ£istrÄ“Å”anu. Tas nozÄ«mē, ka jums vienkārÅ”i jāaugÅ”upielādē savs kods un jākonfigurē, kā un kad tas jāizpilda. Savukārt serviss parÅ«pēsies par tā palaiÅ”anu un nodroÅ”inās JÅ«su aplikācijas augstu pieejamÄ«bu.

Kad pārslēgties uz Lambda?

AWS Lambda ir ērta skaitļoÅ”anas platforma, kas ir piemērota dažādiem lietoÅ”anas gadÄ«jumiem, ja vien pakalpojums atbalsta jÅ«su koda valodu un izpildlaiku. Ja vēlaties koncentrēties uz savu kodu un biznesa loÄ£iku, vienlaikus nodroÅ”inot servera uzturÄ“Å”anu, nodroÅ”ināŔanu un mērogoÅ”anu par saprātÄ«gu samaksu, AWS Lambda noteikti ir pareizais ceļŔ.

Lambda ir ideāli piemērota programmÄ“Å”anas saskarņu izveidei, un, ja to lieto kopā ar API Gateway, varat ievērojami samazināt izmaksas un ātrāk nokļūt tirgÅ«. Ir dažādi veidi, kā izmantot Lambda funkcijas un iespējas bezserveru arhitektÅ«ras organizÄ“Å”anai ā€“ katrs var izvēlēties kaut ko piemērotu, pamatojoties uz savu mērÄ·i.

Lambda ļauj veikt plaÅ”u uzdevumu klāstu. Tādējādi, pateicoties CloudWatch atbalstam, varat izveidot atliktos uzdevumus un automatizēt atseviŔķus procesus. Pakalpojuma izmantoÅ”anas raksturam un intensitātei nav ierobežojumu (tiek ņemts vērā atmiņas patēriņŔ un laiks), un nekas neliedz sistemātiski strādāt pie pilnvērtÄ«ga mikropakalpojuma, kura pamatā ir Lambda.

Å eit varat izveidot uz pakalpojumu orientētas darbÄ«bas, kas nedarbojas nepārtraukti. Tipisks piemērs ir attēla mērogoÅ”ana. Pat sadalÄ«to sistēmu gadÄ«jumā Lambda funkcijas joprojām ir aktuālas.

Tātad, ja nevēlaties nodarboties ar skaitļoÅ”anas resursu pieŔķirÅ”anu un pārvaldÄ«bu, izmēģiniet AWS Lambda; ja nav nepiecieÅ”ami smagi, resursietilpÄ«gi aprēķini, izmēģiniet arÄ« AWS Lambda; Ja jÅ«su kods darbojas periodiski, tas ir pareizi, jums vajadzētu izmēģināt AWS Lambda.

DroŔība

Pagaidām par droŔību sÅ«dzÄ«bu nav. No otras puses, tā kā daudzi Ŕī modeļa iekŔējie procesi un ievieÅ”anas lÄ«dzekļi ir paslēpti no AWS Lambda pārvaldÄ«tās izpildlaika vides lietotāja, daži vispārpieņemti mākoņa droŔības noteikumi kļūst nenozÄ«mÄ«gi.

Tāpat kā lielākā daļa AWS pakalpojumu, Lambda tiek nodroÅ”ināta, pamatojoties uz kopÄ«gu droŔības un atbilstÄ«bas principu starp AWS un klientu. Å is princips samazina klienta darbÄ«bas slogu, jo AWS uzņemas pakalpojumu komponentu uzturÄ“Å”anas, administrÄ“Å”anas un uzraudzÄ«bas uzdevumus - no resursdatora operētājsistēmas un virtualizācijas slāņa lÄ«dz infrastruktÅ«ras lÄ«dzekļu fiziskajai droŔībai.

Konkrēti, runājot par AWS Lambda, AWS ir atbildÄ«ga par pamatā esoŔās infrastruktÅ«ras, saistÄ«to pamatā esoÅ”o pakalpojumu, operētājsistēmas un lietojumprogrammu platformas pārvaldÄ«bu. Kamēr klients ir atbildÄ«gs par sava koda droŔību, konfidenciālu datu uzglabāŔanu, piekļuves kontroli tiem, kā arÄ« Lambda pakalpojumam un resursiem (Identity and Access Management, IAM), tai skaitā izmantoto funkciju ietvaros.

Tālāk redzamajā diagrammā parādīts dalītās atbildības modelis, kas attiecas uz AWS Lambda. AWS atbildība ir oranža, bet klienta atbildība ir zilā krāsā. Kā redzat, AWS uzņemas lielāku atbildību par pakalpojumā izvietotajām lietojumprogrammām.

Detalizēta AWS Lambda analīze

Dalītās atbildības modelis attiecas uz AWS Lambda

Lambda darbības laiks

Lambda galvenā priekÅ”rocÄ«ba ir tā, ka, veicot kādu funkciju jÅ«su vietā, pakalpojums pats pieŔķir nepiecieÅ”amos resursus. Varat netērēt laiku un pÅ«les sistēmas administrÄ“Å”anai un koncentrēties uz biznesa loÄ£iku un kodÄ“Å”anu.

Lambda serviss ir sadalÄ«ts divās plaknēs. Pirmā ir vadÄ«bas plakne. Saskaņā ar Wikipedia, vadÄ«bas plakne ir tÄ«kla daļa, kas ir atbildÄ«ga par signalizācijas satiksmes un marÅ”rutÄ“Å”anas transportÄ“Å”anu. Tas ir galvenais komponents, kas pieņem globālus lēmumus par darba slodzes nodroÅ”ināŔanu, apkalpoÅ”anu un sadali. Turklāt vadÄ«bas plakne darbojas kā risinājuma nodroÅ”inātāja tÄ«kla topoloÄ£ija, kas ir atbildÄ«ga par trafika marÅ”rutÄ“Å”anu un pārvaldÄ«bu.

Otrā plakne ir datu plakne. Tai, tāpat kā vadÄ«bas plaknei, ir savi uzdevumi. VadÄ«bas plakne nodroÅ”ina API funkciju pārvaldÄ«bai (CreateFunction, UpdateFunctionCode) un kontrolē, kā Lambda sazinās ar citiem AWS pakalpojumiem. Datu plakne kontrolē Invoke API, kas darbina Lambda funkcijas. Pēc funkcijas izsaukÅ”anas vadÄ«bas plakne pieŔķir vai atlasa esoÅ”u izpildlaika vidi, kas ir iepriekÅ” sagatavota Å”ai funkcijai, un pēc tam izpilda tajā esoÅ”o kodu.

AWS Lambda atbalsta dažādas programmÄ“Å”anas valodas, tostarp Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 un citas, izmantojot to attiecÄ«gajās izpildlaika vidēs. AWS regulāri tos atjaunina, izplata droŔības ielāpus un veic citas uzturÄ“Å”anas darbÄ«bas Å”ajās vidēs. Lambda ļauj izmantot arÄ« citas valodas, ja vien pats ievieÅ”at atbilstoÅ”o izpildlaiku. Un tad jums bÅ«s jārÅ«pējas par tā apkopi, tostarp jāuzrauga tā droŔība.

Kā tas viss darbojas un kā dienests pildīs jūsu funkcijas?

Katra funkcija darbojas vienā vai vairākās specializētās vidēs, kas pastāv tikai Ŕīs funkcijas darbÄ«bas laikā un pēc tam tiek iznÄ«cinātas. Katra vide vienlaikus veic tikai vienu zvanu, taču tā tiek izmantota atkārtoti, ja vienai un tai paÅ”ai funkcijai ir vairāki seriālie zvani. Visas izpildlaika vides darbojas virtuālajās maŔīnās ar aparatÅ«ras virtualizāciju - tā sauktajiem mikroVM. Katrs microVM ir pieŔķirts noteiktam AWS kontam, un vide to var atkārtoti izmantot, lai veiktu dažādas funkcijas Å”ajā kontā. MicroVM ir iepakoti Lambda Worker aparatÅ«ras platformas blokos, kas pieder AWS un kuru pārvalda. To paÅ”u izpildlaiku nevar izmantot dažādas funkcijas, kā arÄ« microVM nav unikāli dažādiem AWS kontiem.

Detalizēta AWS Lambda analīze

AWS Lambda izolācijas modelis

Izpildlaika vidi izolÄ“Å”ana tiek realizēta, izmantojot vairākus mehānismus. Katras vides augŔējā lÄ«menÄ« ir atseviŔķas Ŕādu komponentu kopijas:

  • Funkcijas kods
  • Visi funkcijai atlasÄ«tie lambda slāņi
  • Funkciju izpildes vide
  • Minimāla lietotāja vieta, pamatojoties uz Amazon Linux

Lai izolētu dažādas izpildes vides, tiek izmantoti Ŕādi mehānismi:

  • cgroups - ierobežo piekļuvi CPU, atmiņai, krātuvei un tÄ«kla resursiem katrai izpildlaika videi;
  • namespaces ā€” grupÄ“Å”anas procesu ID, lietotāja ID, tÄ«kla saskarnes un citi resursi, ko pārvalda Linux kodols. Katrs izpildlaiks darbojas savā nosaukumvietā;
  • seccomp-bpf - ierobežo sistēmas zvanus, kurus var izmantot izpildlaikā;
  • iptables un marÅ”rutÄ“Å”anas tabulas - izpildes vidi izolÄ“Å”ana viena no otras;
  • chroot - nodroÅ”ina ierobežotu piekļuvi pamatā esoÅ”ajai failu sistēmai.

Apvienojumā ar AWS patentētajām izolācijas tehnoloÄ£ijām Å”ie mehānismi nodroÅ”ina uzticamu darbÄ«bas laika atdalÄ«Å”anu. Šādā veidā izolētas vides nevar piekļūt vai modificēt datus no citām vidēm.

Lai gan vienā microVM var darboties vairāki viena AWS konta izpildlaiki, nekādā gadÄ«jumā microVM nevar koplietot starp dažādiem AWS kontiem. AWS Lambda izmanto tikai divus mehānismus, lai izolētu microVM: EC2 gadÄ«jumus un Firecracker. Viesu izolācija Lambda, pamatojoties uz EC2 gadÄ«jumiem, ir pastāvējusi kopÅ” 2015. gada. Firecracker ir jauns atvērtā pirmkoda hipervizors, ko AWS Ä«paÅ”i izstrādājis bezserveru darba slodzēm un tika ieviests 2018. gadā. Fiziskā aparatÅ«ra, kurā darbojas microVM, tiek koplietota starp darba slodzēm dažādos kontos.

Vides un procesa stāvokļu saglabāŔana

Lai gan Lambda izpildlaiki ir unikāli dažādām funkcijām, tie var atkārtoti izsaukt vienu un to paÅ”u funkciju, kas nozÄ«mē, ka izpildlaiks var izdzÄ«vot vairākas stundas, pirms tas tiek iznÄ«cināts.

Katram Lambda izpildlaikam ir arÄ« ierakstāma failu sistēma, kas pieejama, izmantojot direktoriju /tmp. Tās saturam nevar piekļūt no citiem izpildlaikiem. Ciktāl tas attiecas uz procesa stāvokļa noturÄ«bu, faili, kas ierakstÄ«ti /tmp, pastāv visu izpildlaika vides dzÄ«ves ciklu. Tas ļauj uzkrāt vairāku zvanu rezultātus, kas ir Ä«paÅ”i noderÄ«gi dārgām darbÄ«bām, piemēram, maŔīnmācÄ«Å”anās modeļu ielādei.

Zvanu datu pārsūtīŔana

Invoke API var izmantot divos režīmos: notikumu režīmā un pieprasījuma-atbildes režīmā. Notikuma režīmā zvans tiek pievienots rindai vēlākai izpildei. Pieprasījuma-atbildes režīmā funkcija tiek izsaukta uzreiz ar sniegto lietderīgo slodzi, pēc kuras atbilde tiek atgriezta. Abos gadījumos funkcija darbojas Lambda vidē, bet ar dažādiem lietderīgās slodzes ceļiem.

PieprasÄ«juma-atbildes zvanu laikā lietderÄ«gā slodze plÅ«st no pieprasÄ«jumu apstrādes API (API Caller), piemēram, AWS API Gateway vai AWS SDK, uz slodzes balansētāju un pēc tam uz Lambda zvanu pakalpojumu (Invoke Service). Pēdējais nosaka atbilstoÅ”o vidi funkcijas izpildei un nodod tur lietderÄ«go slodzi, lai pabeigtu zvanu. Slodzes balansētājs saņem ar TLS aizsargātu trafiku internetā. Satiksme Lambda pakalpojumā ā€” pēc slodzes balansētāja ā€” iet caur iekŔējo VPC noteiktā AWS reÄ£ionā.

Detalizēta AWS Lambda analīze

AWS Lambda zvanu apstrādes modelis: pieprasījuma-atbildes režīms

Pasākumu zvanus var veikt nekavējoties vai pievienot rindai. Dažos gadÄ«jumos rinda tiek ieviesta, izmantojot Amazon SQS (Amazon Simple Queue Service), kas nodod zvanus Lambda zvanu izpildes pakalpojumam, izmantojot iekŔējo aptaujas procesu. PārraidÄ«tā trafika tiek aizsargāta ar TLS, un Amazon SQS glabāto datu papildu Å”ifrÄ“Å”ana netiek veikta.

Notikumu izsaukumi neatgriež atbildes ā€” Lambda darbinieks vienkārÅ”i ignorē jebkādu atbildes informāciju. Uz notikumiem balstÄ«tus zvanus no Amazon S3, Amazon SNS, CloudWatch un citiem avotiem Lambda apstrādā notikumu režīmā. Zvani no Amazon Kinesis un DynamoDB straumēm, SQS rindām, Application Load Balancer un API Gateway zvani tiek apstrādāti pieprasÄ«juma-atbildes veidā.

Uzraudzība

Varat pārraudzīt un pārbaudīt Lambda funkcijas, izmantojot dažādus AWS mehānismus un pakalpojumus, tostarp tālāk norādītos.

Amazones mākoņu pulkstenis
Apkopo dažādu statistiku, piemēram, pieprasÄ«jumu skaitu, pieprasÄ«jumu ilgumu un neizdevuÅ”os pieprasÄ«jumu skaitu.

Amazon CloudTrail
Ļauj reģistrēt, nepārtraukti uzraudzīt un uzturēt konta darbības informāciju, kas saistīta ar jūsu AWS infrastruktūru. Jums būs pilnīga to darbību vēsture, kas veiktas, izmantojot AWS pārvaldības konsoli, AWS SDK, komandrindas rīkus un citus AWS pakalpojumus.

AWS rentgens
NodroÅ”ina pilnÄ«gu pārskatāmÄ«bu par visiem pieprasÄ«juma apstrādes posmiem jÅ«su lietojumprogrammā, pamatojoties uz tās iekŔējo komponentu karti. Ä»auj analizēt lietojumprogrammas izstrādes un ražoÅ”anas vidēs.

AWS konfigurācija
JÅ«s varēsiet izsekot izmaiņām Lambda funkciju konfigurācijā (tostarp dzÄ“Å”anu) un izpildlaikos, tagos, apdarinātāju nosaukumos, koda lielumā, atmiņas sadalÄ«jumā, taimauta iestatÄ«jumos un vienlaicÄ«bas iestatÄ«jumos, kā arÄ« Lambda IAM izpildes lomai, apakÅ”tÄ«klam un droŔības grupu saistÄ«jumiem. .

Secinājums

AWS Lambda piedāvā jaudÄ«gu rÄ«ku komplektu droÅ”u un mērogojamu lietojumprogrammu izveidei. Daudzas no AWS Lambda droŔības un atbilstÄ«bas praksēm ir tādas paÅ”as kā citos AWS pakalpojumos, lai gan ir arÄ« izņēmumi. No 2019. gada marta Lambda atbilst SOC 1, SOC 2, SOC 3, PCI DSS, VeselÄ«bas apdroÅ”ināŔanas pārnesamÄ«bas un atbildÄ«bas likuma (HIPAA) atbilstÄ«bai un citiem noteikumiem. Tāpēc, domājot par nākamās lietojumprogrammas ievieÅ”anu, apsveriet AWS Lambda pakalpojumu ā€” tas var bÅ«t jÅ«su uzdevumam vispiemērotākais.

Avots: www.habr.com

Pievieno komentāru