AWS Lambda-ren analisi zehatza

Artikuluaren itzulpena ikastaroko ikasleentzat bereziki prestatu zen "Hodeiko zerbitzuak". Norabide honetan garatzea interesatzen zaizu? Ikusi Egor Zuev-en (TeamLead InBit-en) klase magistrala "AWS EC2 zerbitzua" eta hurrengo ikastaroko taldean sartu: irailaren 26an hasiko da.

AWS Lambda-ren analisi zehatza

Jende gehiago migratzen ari da AWS Lambda-ra eskalagarritasuna, errendimendua, aurrezpena eta hilero milioika edo bilioi eskaera kudeatzeko gaitasuna lortzeko. Horretarako, ez duzu zerbitzua exekutatzen den azpiegitura kudeatu beharrik. Eta eskalatze automatikoak segundoko milaka eskaera aldi berean zerbitzatzeko aukera ematen du. AWS Lambda AWS zerbitzu ezagunenetako bat dei daitekeela uste dut.

AWS Lambda

AWS Lambda gertaeretan oinarritutako zerbitzaririk gabeko konputazio-zerbitzu bat da, eta kodea exekutatu ahal izango duzu zerbitzariak hornitu edo kudeatu gabe eta beste AWS zerbitzu batzuk hedatzea logika pertsonalizatua erabiliz. Lambdak automatikoki erantzuten die hainbat gertaerari (abiarazle deitzen zaie), hala nola Amazon API Gateway bidez HTTP eskaerak, Amazon S3 kuboetako datuen aldaketak edo Amazon DynamoDB tauletan; edo zure kodea API deien bidez exekutatu dezakezu AWS SDK eta egoera-trantsizioak erabiliz AWS Step Functions-en.

Lambdak exekutatzen du kodea erabilgarritasun handiko konputazio-azpiegitura batean eta azpiko plataforma administratzeaz arduratzen da, zerbitzariaren eta sistema eragilearen mantentze-lanak, baliabideen hornikuntza, eskalatze automatikoa, kodearen jarraipena eta erregistroa barne. Hau da, zure kodea igo eta nola eta noiz exekutatu behar den konfiguratu besterik ez duzu behar. Era berean, zerbitzuak abiarazteaz arduratuko da eta zure aplikazioaren erabilgarritasun handia bermatuko du.

Noiz aldatu Lambdara?

AWS Lambda informatika-plataforma erosoa da, erabilera-kasu ezberdinetarako egokia dena, betiere zure kodearen hizkuntza eta exekuzio-denbora zerbitzuak onartzen baditu. Zure kodean eta negozio-logikan zentratu nahi baduzu zerbitzariaren mantentze-lanak, hornikuntzak eta eskalatzeak arrazoizko kostu batean azpikontratatuz gero, AWS Lambda da, zalantzarik gabe.

Lambda aproposa da programazio-interfazeak sortzeko, eta API Gateway-rekin batera erabiltzen denean, kostuak nabarmen murrizten dituzu eta azkarrago merkaturatu dezakezu. Zerbitzaririk gabeko arkitektura antolatzeko Lambda funtzioak eta aukerak erabiltzeko modu desberdinak daude; bakoitzak bere helburuaren arabera egokia den zerbait aukeratu dezake.

Lambdak hainbat zeregin egiteko aukera ematen du. Horrela, CloudWatch laguntzari esker, atzeratutako zereginak sor ditzakezu eta prozesu indibidualak automatiza ditzakezu. Ez dago zerbitzuaren erabileraren izaera eta intentsitatearen mugarik (memoriaren kontsumoa eta denbora kontuan hartzen dira), eta ezerk ez dizu eragozten Lambda-n oinarritutako erabateko mikrozerbitzu batean sistematikoki lan egitea.

Hemen etengabe exekutatzen ez diren zerbitzuetara zuzendutako ekintzak sor ditzakezu. Adibide tipiko bat irudien eskalatzea da. Banatutako sistemen kasuan ere, Lambda funtzioek garrantzitsuak izaten jarraitzen dute.

Beraz, baliabide informatikoen esleipen eta kudeaketari aurre egin nahi ez bazaio, saiatu AWS Lambda; kalkulu astunak behar ez badituzu, baliabideak behar dituztenak, saiatu AWS Lambda ere; zure kodea aldian-aldian exekutatzen bada, hori da, AWS Lambda probatu beharko zenuke.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

Orain arte ez dago segurtasunari buruzko kexarik. Bestalde, eredu honen barne prozesu eta inplementazio-ezaugarri asko AWS Lambda kudeatutako exekuzio-ingurunearen erabiltzaileari ezkutatuta daudenez, orokorrean onartutako hodeiaren segurtasun-arau batzuk garrantzirik gabe geratzen dira.

AWS zerbitzu gehienak bezala, Lambda AWS eta bezeroaren arteko segurtasun eta betetze partekatutako oinarrian eskaintzen da. Printzipio honek bezeroaren zama operatiboa murrizten du, AWS-k zerbitzuaren osagaiak mantentzeko, administratzeko eta monitorizatzeko zereginak hartzen baititu - ostalariaren sistema eragiletik eta birtualizazio-geruzatik azpiegitura-aktiboen segurtasun fisikoraino.

AWS Lambdari buruz zehazki, AWS azpiko azpiegitura, lotutako azpiko zerbitzuak, sistema eragilea eta aplikazio plataforma kudeatzeaz arduratzen da. Bezeroa bere kodearen segurtasunaz arduratzen den bitartean, isilpeko datuak gordetzeaz gain, sarbidea kontrolatzeaz gain, Lambda zerbitzuaren eta baliabideen (Identitatea eta Sarbideen Kudeaketa, IAM), erabilitako funtzioen mugen barruan barne.

Beheko diagramak erantzukizun partekatuaren eredua erakusten du AWS Lambda-ri aplikatzen zaion moduan. AWS Erantzukizuna laranja da eta Bezeroaren Erantzukizuna urdina. Ikus dezakezunez, AWS-k erantzukizun handiagoa hartzen du zerbitzuan inplementatutako aplikazioen gainean.

AWS Lambda-ren analisi zehatza

Erantzukizun partekatuaren eredua AWS Lambda-ri aplikagarria

Lambda exekuzioa

Lambdaren abantaila nagusia da zure izenean funtzio bat eginez, zerbitzuak berak behar diren baliabideak esleitzen dituela. Sistemaren administrazioan denbora eta esfortzua galtzea saihestu dezakezu eta negozio-logikan eta kodifikazioan zentratu.

Lambda zerbitzua bi planotan banatzen da. Lehenengoa kontrol-planoa da. Wikipediaren arabera, kontrol-hegazkina seinaleztapen-trafikoa garraiatzeaz eta bideratzeaz arduratzen den sarearen zatia da. Lan-kargak hornitzeari, zerbitzua emateari eta banaketari buruzko erabaki globalak hartzen dituen osagai nagusia da. Gainera, kontrol-planoak irtenbide-hornitzailearen sare-topologia gisa jokatzen du, trafikoa bideratzeaz eta kudeatzeaz arduratzen dena.

Bigarren planoa datuen planoa da. Kontrol-hegazkinak bezala, bere zereginak ditu. Kontrol-planoak funtzioak kudeatzeko APIak eskaintzen ditu (CreateFunction, UpdateFunctionCode) eta Lambda beste AWS zerbitzu batzuekin nola komunikatzen den kontrolatzen du. Datu-planoak Invoke APIa kontrolatzen du, Lambda funtzioak exekutatzen dituena. Funtzio bati deitu ondoren, kontrol-planoak funtzio horretarako aurrez prestatutako exekuzio-ingurune bat esleitzen edo hautatzen du, eta, ondoren, bertan kodea exekutatzen du.

AWS Lambda-k hainbat programazio-lengoaia onartzen ditu, besteak beste, Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 eta beste batzuk, dagozkien exekuzio-inguruneen bidez. AWS-k aldizka eguneratzen ditu, segurtasun-adabakiak banatzen ditu eta beste mantentze-jarduera batzuk egiten ditu ingurune horietan. Lambdak beste hizkuntza batzuk ere erabiltzeko aukera ematen dizu, baldin eta exekuzio-denbora egokia ezartzen baduzu. Eta gero bere mantentze-lanak zaindu beharko dituzu, baita segurtasuna kontrolatuz ere.

Nola funtzionatzen du guztiak eta nola beteko ditu zerbitzuak zure funtzioak?

Funtzio bakoitza ingurune dedikatu batean edo gehiagotan exekutatzen da, funtzio horren bizitza osoan bakarrik existitzen direnak eta gero suntsitzen direnak. Ingurune bakoitzak dei bakarra egiten du aldi berean, baina funtzio bererako serie-dei anitz badaude berrerabiltzen da. Exekuzio-ingurune guztiak hardware birtualizazioa duten makina birtualetan exekutatzen dira - microVM izenekoak. MicroVM bakoitza AWS kontu jakin bati esleitzen zaio eta inguruneek berrerabili dezakete kontu horren barruan funtzio desberdinak betetzeko. MicroVM-ak Lambda Worker hardware-plataformaren eraikuntza-blokeetan biltzen dira, AWS-ren jabetzakoa eta kudeatzen duena. Exekuzio-denbora bera ezin dute funtzio ezberdinek erabili, ezta mikroVM-ak ere AWS kontu desberdinetarako bakarrak.

AWS Lambda-ren analisi zehatza

AWS Lambda isolamendu eredua

Exekuzio-inguruneen isolamendua hainbat mekanismo erabiliz ezartzen da. Ingurune bakoitzaren goiko mailan osagai hauen kopia bereiziak daude:

  • Funtzio-kodea
  • Funtziorako hautatutako edozein Lambda geruza
  • Funtzioa exekutatzeko ingurunea
  • Erabiltzaileen gutxieneko espazioa Amazon Linux-en oinarrituta

Honako mekanismo hauek erabiltzen dira exekuzio-ingurune desberdinak isolatzeko:

  • cgroups - mugatu CPU, memoria, biltegiratze eta sareko baliabideetarako sarbidea exekuzio-ingurune bakoitzeko;
  • namespaces - taldekatze prozesuen IDak, erabiltzaile IDak, sareko interfazeak eta Linux nukleoak kudeatutako beste baliabide batzuk. Exekuzio-denbora bakoitza bere izen-eremuan exekutatzen da;
  • seccomp-bpf - exekuzioan erabil daitezkeen sistema-deiak mugatzen ditu;
  • iptables eta bideratze-taulak - exekuzio-inguruneak elkarrengandik isolatzea;
  • chroot - azpiko fitxategi-sistemarako sarbide mugatua eskaintzen du.

AWS jabedun isolamendu teknologiekin konbinatuta, mekanismo hauek exekuzio denboraren bereizketa fidagarria bermatzen dute. Horrela isolatutako inguruneek ezin dituzte beste ingurune batzuetako datuak sartu edo aldatu.

AWS kontu bereko hainbat exekuzio-denbora mikroVM bakar batean exekutatu daitezkeen arren, ezin dira inolaz ere mikroVMak partekatu AWS kontu ezberdinen artean. AWS Lambdak bi mekanismo baino ez ditu erabiltzen mikroVMak isolatzeko: EC2 instantziak eta Firecracker. Lambda-n gonbidatuen isolamendua EC2 instantzietan oinarrituta dago 2015etik. Firecracker kode irekiko hipervisor berria da AWS-k zerbitzaririk gabeko lan-kargarako bereziki diseinatua eta 2018an aurkeztua. MicroVM-ak exekutatzen dituen hardware fisikoa kontu ezberdinetako lan-kargaren artean partekatzen da.

Inguruneak eta prozesu-egoerak gordetzea

Lambda exekuzio-denborak funtzio desberdinetarako bakarrak diren arren, funtzio berari behin eta berriz dei diezaiokete, hau da, exekuzio-denborak hainbat orduz iraun dezake suntsitu aurretik.

Lambda exekuzio-denbora bakoitzak /tmp direktorioaren bidez eskuragarri dagoen fitxategi-sistema idazteko modua ere badu. Bere edukia ezin da beste exekuzio-denboretatik atzitu. Prozesuaren egoera iraunkortasunari dagokionez, /tmp-n idatzitako fitxategiak exekuzio-ingurunearen bizi-ziklo osoan daude. Horri esker, hainbat deiren emaitzak pila daitezke, eta hori bereziki erabilgarria da eragiketa garestietarako, esate baterako, ikasketa automatikoko ereduak kargatzeko.

Dei datuen transferentzia

Invoke APIa bi modutan erabil daiteke: gertaera moduan eta eskaera-erantzun moduan. Gertaera moduan, deia ilara batera gehitzen da gero exekutatzeko. Eskaera-erantzun moduan, funtzioari berehala deitzen zaio emandako kargarekin, eta ondoren erantzuna itzultzen da. Bi kasuetan, funtzioa Lambda ingurunean exekutatzen da, baina karga-bide ezberdinekin.

Eskaera-erantzun deietan, karga karga eskaerak prozesatzeko API batetik (API deitzailea), hala nola AWS API Gateway edo AWS SDK, karga-orekatzailera joaten da eta, ondoren, Lambda dei-zerbitzura (Invoke Service). Azken honek funtzioa exekutatzeko ingurune egokia zehazten du eta karga hor pasatzen du deia osatzeko. Karga-orekatzaileak TLS bidez babestutako trafikoa jasotzen du Interneten. Lambda zerbitzuko trafikoa (karga-orekatzailearen ondoren) barneko VPC batetik igarotzen da AWS eskualde jakin batean.

AWS Lambda-ren analisi zehatza

AWS Lambda deiak prozesatzeko eredua: eskaera-erantzun modua

Gertaera deiak berehala egin daitezke edo ilara batean gehi daitezke. Zenbait kasutan, ilara Amazon SQS (Amazon Simple Queue Service) erabiliz inplementatzen da, eta deiak Lambda deiak betetzeko zerbitzura pasatzen ditu barne galdeketa prozesu baten bidez. Igorritako trafikoa TLS bidez babestuta dago, eta Amazon SQS-n gordetako datuen enkriptazio gehigarririk ez dago.

Gertaeren deiek ez dute erantzunik itzultzen; Lambda Worker-ek erantzunen informaziorik ez du jaramonik egiten. Amazon S3, Amazon SNS, CloudWatch eta beste iturri batzuen gertaeretan oinarritutako deiak gertaera moduan prozesatzen ditu Lambdak. Amazon Kinesis eta DynamoDB korronteetako deiak, SQS ilarak, Application Load Balancer eta API Gateway deiak eskaera-erantzun moduan prozesatzen dira.

jarraipenaren

Lambda funtzioak kontrolatu eta ikuskatu ditzakezu AWSko hainbat mekanismo eta zerbitzu erabiliz, besteak beste.

amazoncloudwatch
Hainbat estatistika biltzen ditu, hala nola, eskaera kopurua, eskaeren iraupena eta huts egin duten eskaera kopurua.

Amazon CloudTrail
Zure AWS azpiegiturarekin lotutako kontu-jardueraren informazioa saioa hasteko, etengabe kontrolatzeko eta mantentzeko aukera ematen dizu. AWS Kudeaketa Kontsola, AWS SDK, komando lerroko tresnak eta AWS beste zerbitzu batzuk erabiliz egindako ekintzen historia osoa izango duzu.

AWS X izpiak
Zure aplikazioan eskaerak prozesatzeko fase guztietan ikusgarritasun osoa eskaintzen du barne osagaien mapan oinarrituta. Garapenean eta ekoizpen inguruneetan aplikazioak aztertzeko aukera ematen du.

AWS konfigurazioa
Lambda funtzioaren konfigurazioan (ezabaketa barne) eta exekuzio-denborak, etiketak, kudeatzaile-izenak, kode-tamaina, memoria-esleipena, denbora-muga-ezarpenak eta aldiberekotasun-ezarpenak eta Lambda IAM exekuzio-rolaren, azpisareen eta segurtasun-taldeen loturen aldaketen jarraipena egin ahal izango duzu. .

Ondorioa

AWS Lambda-k tresna multzo indartsua eskaintzen du aplikazio seguruak eta eskalagarriak sortzeko. AWS Lambda-n segurtasun- eta betetze-praktika asko AWS zerbitzuetako beste zerbitzu batzuen berdinak dira, nahiz eta salbuespenak egon. 2019ko martxotik aurrera, Lambdak SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) eta beste arau batzuk betetzen ditu. Beraz, zure hurrengo aplikazioa ezartzea pentsatzen ari zarenean, kontuan hartu AWS Lambda zerbitzua - zure zereginerako egokiena izan daiteke.

Iturria: www.habr.com

Gehitu iruzkin berria