Raksta tulkojums tika sagatavots speciÄli kursa studentiem
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.
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.
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Ä.
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