Detaillearre analyze fan AWS Lambda

De oersetting fan it artikel waard spesifyk taret foar de learlingen fan 'e kursus "Cloud tsjinsten". Ynteressearre yn ûntwikkeling yn dizze rjochting? Besjoch de masterklasse fan Egor Zuev (TeamLead by InBit) "AWS EC2 tsjinst" en doch mei oan de folgjende kursusgroep: begjint op 26 septimber.

Detaillearre analyze fan AWS Lambda

Mear minsken migrearje nei AWS Lambda foar skalberens, prestaasjes, besparring, en de mooglikheid om miljoenen of sels trillions oanfragen per moanne te behanneljen. Om dit te dwaan hoege jo de ynfrastruktuer net te behearjen wêrop de tsjinst rint. En autoscaling lit jo tûzenen simultane oanfragen per sekonde tsjinje. Ik tink dat AWS Lambda mei rjocht ien fan 'e populêrste AWS-tsjinsten kin wurde neamd.

AWS Lambda

AWS Lambda is in evenemint-oandreaune serverleaze komputertsjinst wêrmei jo koade kinne útfiere sûnder servers te leverjen of te behearjen en oare AWS-tsjinsten út te wreidzjen mei oanpaste logika. Lambda reagearret automatysk op ferskate eveneminten (neamd triggers), lykas HTTP-oanfragen fia Amazon API Gateway, feroaringen oan gegevens yn Amazon S3-bakken of Amazon DynamoDB-tabellen; of jo kinne jo koade útfiere fia API-oproppen mei de AWS SDK en steattransysjes yn AWS Step Functions.

Lambda rint koade op in heul beskikbere komputerynfrastruktuer en is folslein ferantwurdlik foar it administrearjen fan it ûnderlizzende platfoarm, ynklusyf ûnderhâld fan server en bestjoeringssysteem, boarnefoarsjenning, auto-skaalfergrutting, koademonitoring en logging. Dat is, jo moatte gewoan jo koade uploade en ynstelle hoe en wannear it moat wurde útfierd. Op syn beurt sil de tsjinst soargje foar har lansearring en soargje foar hege beskikberens fan jo applikaasje.

Wannear oerskeakelje nei Lambda?

AWS Lambda is in handich komputerplatfoarm dat geskikt is foar in ferskaat oan gebrûksgefallen, salang't de taal en runtime fan jo koade wurde stipe troch de tsjinst. As jo ​​wolle fokusje op jo koade en bedriuwslogika by it útbesteegjen fan serverûnderhâld, foarsjenning en skaalfergrutting tsjin in ridlike kosten, is AWS Lambda perfoarst de manier om te gean.

Lambda is ideaal foar it meitsjen fan programmearring Schnittstellen, en doe't brûkt yn gearhing mei API Gateway, kinne jo gâns ferminderje kosten en komme ta merk flugger. D'r binne ferskate manieren om Lambda-funksjes en opsjes te brûken foar it organisearjen fan in serverleaze arsjitektuer - elkenien kin wat passend kieze op basis fan har doel.

Lambda kinne jo útfiere in breed skala oan taken. Sa kinne jo, tank oan CloudWatch-stipe, útstelde taken oanmeitsje en yndividuele prosessen automatisearje. D'r binne gjin beheiningen op 'e aard en yntinsiteit fan gebrûk fan' e tsjinst (ûnthâldferbrûk en tiid wurde rekken holden), en neat foarkomt dat jo systematysk wurkje oan in folweardige mikroservice basearre op Lambda.

Hjir kinne jo tsjinstrjochte aksjes oanmeitsje dy't net kontinu rinne. In typysk foarbyld is ôfbylding skaalfergrutting. Sels yn it gefal fan ferdielde systemen bliuwe Lambda-funksjes relevant.

Dus, as jo net wolle omgean mei it allocearjen en behearen fan komputerboarnen, besykje dan AWS Lambda; as jo gjin swiere, boarne-yntinsive berekkeningen nedich binne, besykje ek AWS Lambda; as jo koade rint periodyk, dat is rjocht, Jo moatte besykje AWS Lambda.

Feiligens

Oant no ta binne der gjin klachten oer feiligens. Oan 'e oare kant, om't in protte fan' e ynterne prosessen en ymplemintaasjefunksjes fan dit model ferburgen binne foar de brûker fan 'e AWS Lambda managed runtime-omjouwing, wurde guon algemien akseptearre regels fan wolkfeiligens irrelevant.

Lykas de measte AWS-tsjinsten, wurdt Lambda levere op in dielde feiligens- en neilibjenbasis tusken AWS en de klant. Dit prinsipe ferleget de operasjonele lêst op 'e kliïnt, om't AWS de taken oernimt fan ûnderhâld, administraasje en tafersjoch fan tsjinstkomponinten - fan it hostbestjoeringssysteem en de virtualisaasjelaach oant de fysike feiligens fan ynfrastruktueraktiva.

Spesifyk praat oer AWS Lambda, AWS is ferantwurdlik foar it behearen fan de ûnderlizzende ynfrastruktuer, assosjearre ûnderlizzende tsjinsten, bestjoeringssysteem en applikaasjeplatfoarm. Wylst de klant is ferantwurdlik foar de feiligens fan syn koade, opslach fan fertroulike gegevens, kontrôle fan tagong ta it, likegoed as foar de Lambda tsjinst en middels (Identiteit en tagong Management, IAM), ynklusyf binnen de grinzen fan de funksjes brûkt.

It diagram hjirûnder toant it model foar dielde ferantwurdlikens sa't it jildt foar AWS Lambda. AWS Responsibility is oranje en Customer Responsibility is blau. Lykas jo kinne sjen, nimt AWS mear ferantwurdlikens foar de applikaasjes ynset op 'e tsjinst.

Detaillearre analyze fan AWS Lambda

Dielde ferantwurdlikensmodel fan tapassing op AWS Lambda

Lambda runtime

It wichtichste foardiel fan Lambda is dat troch it útfieren fan in funksje út jo namme, de tsjinst sels de nedige middels allocearret. Jo kinne foarkomme dat jo tiid en muoite fergrieme oan systeemadministraasje en fokusje op bedriuwslogika en kodearring.

De Lambda-tsjinst is ferdield yn twa fleantugen. De earste is de kontrôle fleanmasine. Neffens Wikipedia is it kontrôlefleantúch it diel fan it netwurk dat ferantwurdlik is foar it ferfier fan sinjaalferkear en routing. It is de primêre komponint dy't wrâldwide besluten makket oer foarsjenning, tsjinst en distribúsje fan wurkdruk. Derneist fungearret it kontrôlefleantúch as de netwurktopology fan 'e oplossingprovider, ferantwurdlik foar routing en behear fan ferkear.

It twadde fleantúch is it gegevensfleantúch. It hat, lykas it kontrôlefleantúch, syn eigen taken. It kontrôlefleantúch leveret API's foar it behearen fan funksjes (CreateFunction, UpdateFunctionCode) en kontrolearret hoe't Lambda kommunisearret mei oare AWS-tsjinsten. It gegevensfleantúch kontrolearret de Invoke API, dy't Lambda-funksjes útfiert. Nei in funksje wurdt neamd, de kontrôle fleantúch allocates of selektearje in besteande runtime omjouwing dat is foarôf taret op dy funksje, en dan fiert de koade yn it.

AWS Lambda stipet in ferskaat oan programmeartalen, ynklusyf Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, en oaren, fia har respektive runtime-omjouwings. AWS fernijt se geregeldwei, distribuearret befeiligingspatches en fiert oare ûnderhâldsaktiviteiten út op dizze omjouwings. Lambda lit jo ek oare talen brûke, op betingst dat jo sels de passende runtime implementearje. En dan sille jo moatte soargje foar it ûnderhâld, ynklusyf tafersjoch op syn feiligens.

Hoe wurket it allegear en hoe sil de tsjinst jo funksjes útfiere?

Elke funksje rint yn ien of mear tawijde omjouwings, dy't allinich besteane foar it libben fan dy funksje en wurde dan ferneatige. Eltse omjouwing makket mar ien oprop tagelyk, mar it wurdt werbrûkt as der meardere serial oproppen nei deselde funksje. Alle runtime-omjouwings rinne op firtuele masines mei hardware-virtualisaasje - saneamde microVM's. Elke microVM wurdt tawiisd oan in spesifyk AWS-akkount en kin opnij brûkt wurde troch omjouwings om ferskate funksjes út te fieren binnen dat akkount. MicroVM's wurde ferpakt yn boublokken fan it Lambda Worker-hardwareplatfoarm, dat eigendom is en wurdt eksploitearre troch AWS. Deselde runtime kin net brûkt wurde troch ferskate funksjes, noch binne microVM's unyk foar ferskate AWS-akkounts.

Detaillearre analyze fan AWS Lambda

AWS Lambda Isolaasje Model

Isolaasje fan runtime-omjouwings wurdt ymplementearre mei ferskate meganismen. Op it boppeste nivo fan elke omjouwing binne d'r aparte kopyen fan 'e folgjende komponinten:

  • Funksje koade
  • Elke Lambda-lagen selektearre foar de funksje
  • Funksje útfiering omjouwing
  • Minimale brûkersromte basearre op Amazon Linux

De folgjende meganismen wurde brûkt om ferskate útfieringsomjouwingen te isolearjen:

  • cgroups - beheine tagong ta CPU, ûnthâld, opslach en netwurkboarnen foar elke runtime-omjouwing;
  • nammeromten - groepearjen fan proses-ID's, brûkers-ID's, netwurkynterfaces en oare boarnen beheard troch de Linux-kernel. Elke runtime rint yn syn eigen nammeromte;
  • seccomp-bpf - beheint de systeemoproppen dy't kinne wurde brûkt yn 'e runtime;
  • iptables en routing tabellen - isolaasje fan útfiering omjouwings fan elkoar;
  • chroot - jout beheinde tagong ta it ûnderlizzende bestânsysteem.

Yn kombinaasje mei AWS proprietêre isolaasjetechnologyen soargje dizze meganismen foar betroubere runtime-skieding. Omjouwings dy't op dizze manier isolearre binne, kinne gjin tagong krije ta of wizigje gegevens út oare omjouwings.

Hoewol meardere runtimes fan itselde AWS-akkount kinne rinne op ien microVM, kinne ûnder gjin omstannichheden microVM's wurde dield tusken ferskate AWS-akkounts. AWS Lambda brûkt mar twa meganismen om microVM's te isolearjen: EC2-eksimplaren en Firecracker. Gastisolaasje yn Lambda basearre op EC2-eksimplaren bestiet sûnt 2015. Firecracker is in nije iepen boarne hypervisor spesifyk ûntworpen troch AWS foar serverless workloads en yntrodusearre yn 2018. De fysike hardware dy't microVM's draait, wurdt dield tusken workloads oer ferskate akkounts.

Bewarje omjouwings en proses steaten

Hoewol't Lambda-runtimes unyk binne foar ferskate funksjes, kinne se deselde funksje ferskate kearen neame, wat betsjut dat de runtime ferskate oeren kin oerlibje foardat se ferneatige wurde.

Elke Lambda-runtime hat ek in skriuwber bestânsysteem tagonklik fia de map /tmp. De ynhâld kin net tagonklik wurde fan oare runtimes. Wat persistinsje oanbelanget, besteane triemmen skreaun nei /tmp foar de hiele libbenssyklus fan 'e runtime-omjouwing. Hjirmei kinne de resultaten fan meardere oproppen wurde sammele, wat foaral nuttich is foar djoere operaasjes lykas laden fan masine-learmodellen.

Call gegevens oerdracht

De Invoke API kin brûkt wurde yn twa modi: evenemint modus en fersyk-antwurd modus. Yn evenemint modus, de oprop wurdt tafoege oan in wachtrige foar lettere útfiering. Yn fersyk-antwurd modus wurdt de funksje direkt oanroppen mei de levere lading, wêrnei't it antwurd wurdt weromjûn. Yn beide gefallen, de funksje rint yn in Lambda omjouwing, mar mei ferskillende payload paden.

Tidens opropen mei fersyk-antwurd streamt de loadload fan in oanfraachferwurkings-API (API Caller), lykas AWS API Gateway of AWS SDK, nei de loadbalancer, en dan nei de Lambda-oproptsjinst (Invoke Service). De lêste bepaalt de passende omjouwing foar it útfieren fan de funksje en jout de lading dêr troch om de oprop te foltôgjen. De load balancer ûntfangt TLS-beskerme ferkear oer it ynternet. Ferkear binnen de Lambda-tsjinst - nei de loadbalancer - giet troch in ynterne VPC yn in spesifike AWS-regio.

Detaillearre analyze fan AWS Lambda

AWS Lambda Call Processing Model: Request-Response Mode

Eventoproppen kinne fuortendaliks makke wurde of tafoege wurde oan in wachtrige. Yn guon gefallen wurdt de wachtrige ymplementearre mei Amazon SQS (Amazon Simple Queue Service), dy't petearen trochjaan oan de Lambda-opropferfollingstsjinst fia in ynterne pollerproses. It trochstjoerde ferkear wurdt beskerme troch TLS, en d'r is gjin ekstra fersifering fan gegevens opslein yn Amazon SQS.

Eventoproppen jouwe gjin antwurden werom - de Lambda Worker negearret gewoan alle antwurdynformaasje. Event-basearre petearen fan Amazon S3, Amazon SNS, CloudWatch en oare boarnen wurde ferwurke troch Lambda yn evenemintemodus. Oproppen fan Amazon Kinesis- en DynamoDB-streamen, SQS-wachtrijen, Application Load Balancer, en API Gateway-oproppen wurde ferwurke op in fersyk-antwurd manier.

Monitoring

Jo kinne Lambda-funksjes kontrolearje en kontrolearje mei in ferskaat oan AWS-meganismen en tsjinsten, ynklusyf de folgjende.

amazoncloudwatch
Sammelet ferskate statistiken lykas it oantal oanfragen, de doer fan oanfragen, en it oantal oanfragen dat mislearre.

Amazon CloudTrail
Stelt jo yn steat om oan te melden, kontinu te kontrolearjen en te ûnderhâlden ynformaasje oer accountaktiviteit ferbûn mei jo AWS-ynfrastruktuer. Jo sille in folsleine skiednis hawwe fan aksjes útfierd mei de AWS Management Console, AWS SDK, kommandorigelark en oare AWS-tsjinsten.

AWS X-Ray
Biedt folsleine sichtberens yn alle stadia fan oanfraachferwurking yn jo applikaasje basearre op in kaart fan har ynterne komponinten. Hjirmei kinne jo applikaasjes analysearje tidens ûntwikkeling en yn produksjeomjouwings.

AWS konfiguraasje
Jo sille wizigingen kinne folgje oan Lambda-funksjekonfiguraasje (ynklusyf wiskjen) en runtimes, tags, hannelsnammen, koadegrutte, ûnthâldtawizing, time-outynstellingen en ynstellings foar tagelyk, lykas ek Lambda IAM-útfierrol, subnetting, en bindingen fan befeiligingsgroepen .

konklúzje

AWS Lambda biedt in krêftige set ark foar it bouwen fan feilige en skalbere applikaasjes. In protte fan 'e feiligens- en neilibjenpraktiken yn AWS Lambda binne itselde as yn oare AWS-tsjinsten, hoewol d'r binne útsûnderingen. Mei yngong fan maart 2019 is Lambda konform mei SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) neilibjen, en oare regeljouwing. Dus, as jo tinke oan it ymplementearjen fan jo folgjende applikaasje, beskôgje dan de AWS Lambda-tsjinst - it kin it bêste passe foar jo taak.

Boarne: www.habr.com

Add a comment