Analîzek berfireh a AWS Lambda

Wergera gotarê bi taybetî ji bo xwendekarên qursê hatiye amadekirin "Xizmetên Cloud". Meraq dikin ku di vî alî de pêşve bibin? Li dersa masterê ya Egor Zuev (TeamLead li InBit) temaşe bikin "Xizmeta AWS EC2" û beşdarî koma qursa din bibin: 26ê Îlonê dest pê dike.

Analîzek berfireh a AWS Lambda

Zêdetir mirov ji bo pîvandin, performans, teserûfkirin, û şiyana ku mehê bi mîlyonan an tewra bi trîlyonan daxwazan bişopînin koçî AWS Lambda dikin. Ji bo vê yekê, hûn ne hewce ne ku binesaziya ku karûbar li ser dimeşîne birêve bibin. Û otoscaling destûrê dide te ku hûn di her çirkeyê de bi hezaran daxwazên hevdemî xizmetê bikin. Ez difikirim AWS Lambda bi rast dikare wekî yek ji karûbarên AWS-ê yên herî populer were binav kirin.

AWS Lambda

AWS Lambda karûbarek komputera bê server-rêvebir e ku dihêle hûn kodê bêyî peydakirin an birêvebirina serveran bimeşînin û karûbarên din ên AWS bi karanîna mantiqa xwerû dirêj bikin. Lambda bixweber bersivê dide bûyerên cihêreng (ku jê re dibejin), wek daxwazên HTTP bi navgîniya Amazon API Gateway, guheztinên daneyan di kepçeyên Amazon S3 an tabloyên Amazon DynamoDB de; an jî hûn dikarin koda xwe bi navgîniya bangên API-ê bi karanîna AWS SDK û veguheztinên dewletê di Fonksiyonên Step AWS de bimeşînin.

Lambda kodê li ser binesaziyek hesabkerî ya pir berdest dimeşîne û bi tevahî berpirsiyar e ji rêvebirina platforma bingehîn, di nav de parastina server û pergala xebitandinê, peydakirina çavkaniyê, pîvandina otomatîkî, çavdêriya kodê, û têketinê. Ango, hûn tenê hewce ne ku koda xwe bar bikin û mîheng bikin ka ew çawa û kengê divê were darve kirin. Di encamê de, karûbar dê destpêkirina xwe bigire û hebûna bilind a serîlêdana we piştrast bike.

Kengê meriv li Lambda veguherîne?

AWS Lambda platformek komputerê ya hêsan e ku ji bo cûrbecûr rewşên karanîna minasib e, heya ku ziman û dema xebitandina koda we ji hêla karûbarê ve were piştgirî kirin. Ger hûn dixwazin dema ku hûn lêçûnek maqûl didin lêçûn, peydakirin û pîvandina serverê li ser kod û mantiqa karsaziya xwe bisekinin, AWS Lambda bê guman riya ku diçe ye.

Lambda ji bo afirandina navberên bernamekirinê îdeal e, û gava ku bi API Gateway re tê bikar anîn, hûn dikarin bi girîngî lêçûn kêm bikin û zûtir bigihîjin bazarê. Ji bo organîzekirina mîmariya bê server awayên cûda yên karanîna fonksiyon û vebijarkên Lambda hene - her kes dikare li gorî armanca xwe tiştek guncan hilbijêrin.

Lambda destûrê dide te ku hûn cûrbecûr karan pêk bînin. Bi vî rengî, bi saya piştgirîya CloudWatch, hûn dikarin peywirên paşdemayî biafirînin û pêvajoyên kesane bixweber bikin. Li ser xweza û tundiya karanîna karûbarê ti sînorkirin tune (xerckirina bîranîn û dem têne hesibandin), û tiştek nahêle ku hûn bi rêkûpêk li ser mîkroxizmetek bêkêmasî ya li ser bingeha Lambda bixebitin.

Li vir hûn dikarin çalakiyên karûbarê-oriented ku bi domdarî nameşin biafirînin. Nimûneyek tîpîk pîvana wêneyê ye. Tewra di rewşa pergalên belavbûyî de, fonksiyonên Lambda têkildar dimînin.

Ji ber vê yekê, heke hûn nexwazin ku bi veqetandin û birêvebirina çavkaniyên komputerê re mijûl bibin, AWS Lambda biceribînin; heke hûn ne hewce ne hesabên giran, çavkanî-dijwar, AWS Lambda jî biceribînin; heke koda we bi periyodîk dimeşe, rast e, divê hûn AWS Lambda biceribînin.

Ewlekariyê

Heya niha der barê ewlehiyê de tu gilî nînin. Ji hêla din ve, ji ber ku gelek pêvajoyên hundurîn û taybetmendiyên pêkanîna vê modelê ji bikarhênerê hawîrdora xebitandinê ya AWS Lambda veşartî ne, hin qaîdeyên gelemperî yên pejirandî yên ewlehiya ewr ne girîng dibin.

Mîna piraniya karûbarên AWS, Lambda li ser bingehek ewlehî û lihevhatina hevbeş di navbera AWS û xerîdar de tê peyda kirin. Ev prensîb barê xebitandinê li ser xerîdar kêm dike, ji ber ku AWS peywirên parastin, rêvebirin û çavdêrîkirina hêmanên karûbarê digire - ji pergala xebitandina mêvandar û qata virtualbûnê heya ewlehiya laşî ya hebûnên binesaziyê.

Bi taybetî di derbarê AWS Lambda de diaxivin, AWS berpirsiyar e ji bo birêvebirina binesaziya bingehîn, karûbarên bingehîn ên têkildar, pergala xebitandinê, û platforma serîlêdanê. Dema ku xerîdar ji ewlehiya koda xwe, hilanîna daneyên nepenî, kontrolkirina gihîştina wê, û her weha karûbar û çavkaniyan Lambda (Rêveberiya Nasname û Gihîştinê, IAM) berpirsiyar e, di nav de di nav sînorên fonksiyonên hatî bikar anîn de.

Diagrama jêrîn modela berpirsiyariya hevpar nîşan dide ku ew ji AWS Lambda re derbas dibe. Berpirsiyariya AWS porteqalî ye û Berpirsiyariya Xerîdar şîn e. Wekî ku hûn dikarin bibînin, AWS ji bo serîlêdanên ku li ser karûbarê hatine bicîh kirin bêtir berpirsiyariyê digire.

Analîzek berfireh a AWS Lambda

Modela Berpirsiyariya Parvekirî ya ku ji AWS Lambda re tê sepandin

Lambda runtime

Feydeya sereke ya Lambda ev e ku bi pêkanîna fonksiyonek li ser navê we, karûbar bixwe çavkaniyên pêwîst vediqetîne. Hûn dikarin ji wendakirina dem û hewldana li ser rêveberiya pergalê dûr bisekinin û li ser mantiq û kodkirina karsaziyê bisekinin.

Karûbarê Lambda di du balafiran de tê dabeş kirin. Ya yekem balafira kontrolê ye. Li gorî Wikipedia, balafira kontrolê beşek ji torê ye ku berpirsiyariya veguheztina seyrûsefer û rêwiyan dike. Ew pêkhateya bingehîn e ku biryarên gerdûnî di derheqê peydakirin, xizmetkirin û belavkirina barkêşan de digire. Wekî din, balafira kontrolê wekî topolojiya torê ya peydakerê çareseriyê, berpirsiyarê rêkirin û birêvebirina seyrûseferê tevdigere.

Balafira duyemîn balafira daneyê ye. Ew, mîna balafira kontrolê, karên xwe hene. Balafira kontrolê ji bo birêvebirina fonksiyonan API-yan peyda dike (CreateFunction, UpdateFunctionCode) û kontrol dike ka Lambda çawa bi karûbarên din ên AWS re têkilî dike. Balafira daneyê Invoke API-ya ku fonksiyonên Lambda dimeşîne kontrol dike. Piştî ku fonksiyonek tê gazî kirin, balafira kontrolê jîngehek dema xebitandinê ya heyî ku ji bo wê fonksiyonê ji berê ve hatî amade kirin vediqetîne an hildibijêre, û dûv re kodê di wê de dimeşîne.

AWS Lambda bi navgîniya hawîrdorên dema xebitandinê yên rêzdar, cûrbecûr zimanên bernamekirinê piştgirî dike, di nav de Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, û yên din. AWS bi rêkûpêk wan nûve dike, pişkên ewlehiyê belav dike, û çalakiyên din ên lênêrînê li ser van hawîrdoran pêk tîne. Lambda destûrê dide te ku hûn zimanên din jî bikar bînin, bi şertê ku hûn bi xwe dema xebitandinê ya guncan bicîh bînin. Û hingê hûn ê neçar bimînin ku lênêrîna wê, tevî çavdêriya ewlehiya wê, bikin.

Ew hemî çawa dixebite û karûbar dê fonksiyonên we çawa pêk bîne?

Her fonksiyonek di yek an jî çend hawîrdorên veqetandî de dimeşe, ku tenê ji bo jiyana wê fonksiyonê hene û dûv re têne hilweşandin. Her hawîrdor di carekê de tenê bangek dike, lê ger çend bangên serial ji heman fonksiyonê re hebin ew ji nû ve tê bikar anîn. Hemî hawîrdorên dema xebitandinê li ser makîneyên virtual bi virtualîzasyona hardware-yê ku jê re tê gotin microVM-an têne xebitandin. Her microVM ji hesabek taybetî ya AWS-ê re tê veqetandin û dikare ji hêla hawîrdoran ve were bikar anîn da ku di hundurê wê hesabê de fonksiyonên cûda pêk bîne. MicroVM di nav blokên avakirina platforma hardware ya Lambda Worker de, ku xwedan û ji hêla AWS ve tê xebitandin, têne pak kirin. Heman dema xebitandinê ji hêla fonksiyonên cihêreng ve nayê bikar anîn, ne jî microVM ji hesabên cihêreng ên AWS re yekta ne.

Analîzek berfireh a AWS Lambda

AWS Lambda Isolation Model

Veqetandina hawîrdorên dema xebitandinê bi karanîna çend mekanîzmayan ve tête bicîh kirin. Di asta jorîn a her hawîrdorê de kopiyên cihê yên pêkhateyên jêrîn hene:

  • Koda fonksiyonê
  • Her qatên Lambda ji bo fonksiyonê hatine hilbijartin
  • Jîngeha darvekirina fonksiyonê
  • Cihê bikarhênerê hindiktirîn li ser bingeha Amazon Linux

Mekanîzmayên jêrîn ji bo veqetandina hawîrdorên darvekirinê yên cihêreng têne bikar anîn:

  • cgroups - ji bo her hawîrdora xebitandinê gihîştina CPU, bîranîn, hilanîn û çavkaniyên torê sînordar bikin;
  • cîhên navan - komkirina nasnameyên pêvajoyê, nasnameyên bikarhêner, navgînên torê û çavkaniyên din ên ku ji hêla kernel Linux ve têne rêve kirin. Her runtime di nav navên xwe de derbas dibe;
  • seccomp-bpf - bangên pergalê yên ku di dema xebitandinê de têne bikar anîn sînordar dike;
  • iptables û tabloyên rêvekirinê - veqetandina hawîrdorên darvekirinê ji hevûdu;
  • chroot - gihîştina tixûbdar a pergala pelê ya bingehîn peyda dike.

Bi teknolojiyên veqetandinê yên xwedan AWS re, van mekanîzmayan veqetandina dema xebitandinê ya pêbawer peyda dikin. Jîngehên ku bi vî rengî têne veqetandin nikarin bigihîjin daneyên ji derdorên din an biguhezînin.

Her çend çend demên xebitandinê yên heman hesabê AWS dikarin li ser yek microVM-ê bixebitin, di bin ti şert û mercan de nikarin microVM di navbera hesabên cihêreng ên AWS de werin parve kirin. AWS Lambda ji bo veqetandina microVMs tenê du mekanîzmayan bikar tîne: Mînakên EC2 û Firecracker. Tecrîda mêvanan li Lambda li ser bingeha mînakên EC2 ji sala 2015-an vir ve heye. Firecracker hîpervisorek çavkaniyek vekirî ya nû ye ku bi taybetî ji hêla AWS ve ji bo barkêşên bê server hatî çêkirin û di sala 2018-an de hatî destnîşan kirin. Zehmetiya laşî ya ku microVM-an dimeşîne di nav hesabên cihê de di navbera barkêşên xebatê de têne parve kirin.

Saving jîngehê û dewletên pêvajoyê

Her çend demên xebitandinê yên Lambda ji fonksiyonên cihêreng re bêhempa ne, ew dikarin heman fonksiyonê dubare bang bikin, ango dema xebitandinê dikare çend demjimêran bimîne berî ku were hilweşandin.

Her dema xebitandinê ya Lambda di heman demê de pergalek pelê ya nivîskî jî heye ku bi pelrêça /tmp ve tê gihîştin. Naveroka wê ji demên xebitandinê yên din nayê gihîştin. Bi qasî domdariya dewleta pêvajoyê, pelên ku li /tmp hatine nivîsandin ji bo tevahiya çerxa jiyanê ya hawîrdora xebitandinê hene. Ev dihêle ku encamên gelek bangan werin berhev kirin, ku bi taybetî ji bo operasyonên biha yên wekî barkirina modelên fêrbûna makîneyê bikêr e.

Veguheztina daneyan bang bikin

Invoke API dikare di du awayan de were bikar anîn: moda bûyerê û moda daxwaz-bersiv. Di moda bûyerê de, bang ji bo darvekirina paşê li rêzek tê zêdekirin. Di moda daxwaz-bersiv de, fonksiyonê tavilê bi dravê peydakirî re tê gazî kirin, piştî ku bersiv tê vegerandin. Di her du rewşan de, fonksiyon di hawîrdorek Lambda de, lê bi riyên barkirina cihêreng dimeşe.

Di dema bangên daxwaz-bersiv de, bargiran ji API-ya pêvajoyê ya daxwaznameyê (API Caller), wek AWS API Gateway an AWS SDK, berbi balanserê barkirinê, û dûv re jî berbi karûbarê banga Lambda (Xizmeta Invoke) diherike. Ya paşîn ji bo pêkanîna fonksiyonê hawîrdora guncan destnîşan dike û bargiraniyê li wir derbas dike da ku bangê temam bike. Balansa barkirinê li ser Înternetê seyrûsefera parastî ya TLS distîne. Trafîka di hundurê karûbarê Lambda de -piştî balansa barkirinê- di navçeyek taybetî ya AWS-ê de ji VPC-ya hundurîn derbas dibe.

Analîzek berfireh a AWS Lambda

Modela Pêvajoya Banga AWS Lambda: Moda Daxwaz-Bersiva

Bangên bûyerê di cih de dikarin werin kirin an li rêzek werin zêdekirin. Di hin rewşan de, rêz bi karanîna Amazon SQS (Xizmeta Queue Simple Amazon) ve tê bicîh kirin, ku bi pêvajoyek pollerek hundurîn bangan ji karûbarê pêkanîna banga Lambda re derbas dike. Trafîka hatî veguheztin ji hêla TLS ve tê parastin, û şîfreyek zêde ya daneyên ku li Amazon SQS hatî hilanîn tune.

Bangên bûyerê bersivan nadin - Karkerê Lambda bi tenê agahdariya bersivê paşguh dike. Bangên-based bûyerê ji Amazon S3, Amazon SNS, CloudWatch, û çavkaniyên din ji hêla Lambda ve di moda bûyerê de têne kirin. Bangên ji çemên Amazon Kinesis û DynamoDB, rêzikên SQS, Balansa Barkirina Serlêdanê, û bangên API Gateway bi şêwazek daxwaz-bersiv têne kirin.

Ingopandin

Hûn dikarin fonksiyonên Lambda bi karanîna cûrbecûr mekanîzma û karûbarên AWS-ê, di nav de yên jêrîn de, bişopînin û bişopînin.

amazoncloudwatch
Statîstîkên cihêreng ên wekî hejmara daxwazan, dirêjahiya daxwazan, û hejmara daxwazên ku têk çûn berhev dike.

Amazon CloudTrail
Destûrê dide we ku hûn agahdariya çalakiya hesabê ku bi binesaziya AWS-ya xwe ve girêdayî ne têkevin, bi domdarî çavdêrî bikin û biparêzin. Hûn ê dîrokek bêkêmasî ya çalakiyên ku bi karanîna Konsola Rêvebiriya AWS, AWS SDK, amûrên rêzika fermanê, û karûbarên din ên AWS-ê têne kirin, hebin.

AWS X-Ray
Di serîlêdana we de li ser bingeha nexşeyek pêkhateyên hundurîn di hemî qonaxên pêvajoyek daxwaznameyê de xuyangiyek bêkêmasî peyda dike. Destûrê dide we ku hûn di dema pêşkeftinê û di hawîrdorên hilberînê de serlêdanan analîz bikin.

AWS Config
Hûn ê karibin guheztinên veavakirina fonksiyona Lambda (di nav de jêbirin) û demên xebitandinê, nîşanan, navên hilberan, mezinahiya kodê, veqetandina bîranînê, mîhengên dema derbasbûnê û mîhengên hevdemiyê, û her weha rola darvekirina Lambda IAM-ê, binenet û girêdanên koma ewlehiyê bişopînin. .

encamê

AWS Lambda ji bo avakirina serîlêdanên ewledar û berbelav komek amûrek hêzdar pêşkêşî dike. Gelek pêkanînên ewlehî û lihevhatinê yên di AWS Lambda de wekî karûbarên din ên AWS-ê ne, her çend îstîsna hene. Ji Adara 2019-an pê ve, Lambda bi SOC 1, SOC 2, SOC 3, PCI DSS, lihevhatina Zagona Veguhastina Bîmeya Tenduristî û Berpirsiyariyê (HIPAA), û rêzikên din ve girêdayî ye. Ji ber vê yekê, gava ku hûn li ser pêkanîna serîlêdana xweya paşîn difikirin, karûbarê AWS Lambda bifikirin - dibe ku ew ji bo peywira we çêtirîn be.

Source: www.habr.com

Add a comment