Analiżi dettaljata tal-AWS Lambda

It-traduzzjoni tal-artiklu tħejjiet speċifikament għall-istudenti tal-kors "Servizzi tas-Cloud". Interessat li tiżviluppa f'din id-direzzjoni? Ara l-klassi ewlenija minn Egor Zuev (TeamLead f'InBit) "Servizz AWS EC2" u ingħaqad mal-grupp tal-kors li jmiss: jibda fis-26 ta’ Settembru.

Analiżi dettaljata tal-AWS Lambda

Aktar nies qed jemigraw lejn AWS Lambda għall-iskalabbiltà, il-prestazzjoni, l-iffrankar, u l-abbiltà li jimmaniġġjaw miljuni jew saħansitra triljuni ta’ talbiet kull xahar. Biex tagħmel dan, m'għandekx bżonn timmaniġġja l-infrastruttura li fuqha jaħdem is-servizz. U l-autoscaling jippermettilek li taqdi eluf ta' talbiet simultanji kull sekonda. Naħseb li AWS Lambda jista' bi dritt jissejjaħ wieħed mis-servizzi AWS l-aktar popolari.

AWS Lambda

AWS Lambda huwa servizz tal-kompjuters bla servers immexxi mill-avvenimenti li jippermettilek tħaddem kodiċi mingħajr ma tipprovdi jew timmaniġġja servers u testendi servizzi oħra tal-AWS billi tuża loġika tad-dwana. Lambda twieġeb awtomatikament għal diversi avvenimenti (imsejħa triggers), bħal talbiet HTTP permezz ta 'Amazon API Gateway, bidliet fid-dejta f'bramel Amazon S3 jew tabelli Amazon DynamoDB; jew tista' tmexxi l-kodiċi tiegħek permezz ta' sejħiet API billi tuża l-AWS SDK u t-tranżizzjonijiet tal-istat f'AWS Step Functions.

Lambda tħaddem kodiċi fuq infrastruttura tal-kompjuters disponibbli ħafna u hija kompletament responsabbli għall-amministrazzjoni tal-pjattaforma sottostanti, inkluż il-manutenzjoni tas-server u tas-sistema operattiva, il-forniment tar-riżorsi, l-iskala awtomatika, il-monitoraġġ tal-kodiċi u l-illoggjar. Jiġifieri, għandek bżonn biss ittella' l-kodiċi tiegħek u tikkonfigura kif u meta għandha tiġi eżegwita. Min-naħa tiegħu, is-servizz jieħu ħsieb it-tnedija tiegħu u jiżgura disponibbiltà għolja tal-applikazzjoni tiegħek.

Meta taqleb għal Lambda?

AWS Lambda hija pjattaforma tal-kompjuters konvenjenti li hija adattata għal varjetà ta' każijiet ta' użu, sakemm il-lingwa u l-ħin tar-runtime tal-kodiċi tiegħek huma appoġġjati mis-servizz. Jekk trid tiffoka fuq il-kodiċi u l-loġika tan-negozju tiegħek waqt li testerna l-manutenzjoni, il-forniment u l-iskala tas-server bi spiża raġonevoli, AWS Lambda hija definittivament it-triq li trid timxi.

Lambda hija ideali għall-ħolqien ta 'interfaces ta' programmazzjoni, u meta tintuża flimkien ma 'API Gateway, tista' tnaqqas b'mod sinifikanti l-ispejjeż u tasal fis-suq aktar malajr. Hemm modi differenti kif tuża l-funzjonijiet u l-għażliet Lambda għall-organizzazzjoni ta 'arkitettura mingħajr server - kulħadd jista' jagħżel xi ħaġa adattata abbażi tal-għan tiegħu.

Lambda jippermettilek li twettaq firxa wiesgħa ta 'kompiti. Għalhekk, grazzi għall-appoġġ ta 'CloudWatch, tista' toħloq kompiti differiti u tawtomatizza proċessi individwali. M'hemm l-ebda restrizzjonijiet fuq in-natura u l-intensità tal-użu tas-servizz (il-konsum tal-memorja u l-ħin huma kkunsidrati), u xejn ma jipprevjenik milli taħdem b'mod sistematiku fuq mikroservizz sħiħ ibbażat fuq Lambda.

Hawnhekk tista 'toħloq azzjonijiet orjentati lejn is-servizz li ma jaħdmux kontinwament. Eżempju tipiku huwa l-iskala tal-immaġni. Anke fil-każ ta' sistemi distribwiti, il-funzjonijiet Lambda jibqgħu rilevanti.

Għalhekk, jekk ma tridx tittratta l-allokazzjoni u l-ġestjoni tar-riżorsi tal-kompjuter, ipprova AWS Lambda; jekk m'għandekx bżonn kalkoli tqal u li jużaw ħafna riżorsi, ipprova wkoll AWS Lambda; jekk il-kodiċi tiegħek jaħdem perjodikament, hekk hu, għandek tipprova AWS Lambda.

sigurtà

S'issa m'hemm l-ebda ilment dwar is-sigurtà. Min-naħa l-oħra, peress li ħafna mill-proċessi interni u l-karatteristiċi ta 'implimentazzjoni ta' dan il-mudell huma moħbija mill-utent tal-ambjent runtime ġestit AWS Lambda, xi regoli ġeneralment aċċettati tas-sigurtà tal-cloud isiru irrilevanti.

Bħall-biċċa l-kbira tas-servizzi tal-AWS, Lambda hija pprovduta fuq bażi ta' sigurtà u konformità kondiviża bejn AWS u l-klijent. Dan il-prinċipju jnaqqas il-piż operattiv fuq il-klijent, peress li AWS tieħu l-kompiti taż-żamma, l-amministrazzjoni u l-monitoraġġ tal-komponenti tas-servizz - mis-sistema operattiva ospitanti u s-saff ta 'virtwalizzazzjoni sas-sigurtà fiżika tal-assi tal-infrastruttura.

B'mod speċifiku dwar AWS Lambda, AWS huwa responsabbli għall-ġestjoni tal-infrastruttura sottostanti, is-servizzi sottostanti assoċjati, is-sistema operattiva, u l-pjattaforma tal-applikazzjoni. Filwaqt li l-klijent huwa responsabbli għas-sigurtà tal-kodiċi tiegħu, il-ħażna ta 'data kunfidenzjali, il-kontroll tal-aċċess għaliha, kif ukoll għas-servizz u r-riżorsi Lambda (Identity and Access Management, IAM), inkluż fil-limiti tal-funzjonijiet użati.

Id-dijagramma t'hawn taħt turi l-mudell ta' responsabbiltà kondiviża kif japplika għal AWS Lambda. Ir-Responsabbiltà tal-AWS hija oranġjo u r-Responsabbiltà tal-Klijent hija blu. Kif tistgħu taraw, AWS tieħu aktar responsabbiltà għall-applikazzjonijiet skjerati fuq is-servizz.

Analiżi dettaljata tal-AWS Lambda

Mudell ta' Responsabbiltà Kondiviża Applikabbli għal AWS Lambda

Lambda runtime

Il-vantaġġ ewlieni ta 'Lambda huwa li billi twettaq funzjoni f'ismek, is-servizz innifsu jalloka r-riżorsi meħtieġa. Tista' tevita li taħli ħin u sforz fuq l-amministrazzjoni tas-sistema u tiffoka fuq il-loġika tan-negozju u l-kodifikazzjoni.

Is-servizz Lambda huwa maqsum f'żewġ ajruplani. L-ewwel huwa l-pjan ta 'kontroll. Skont il-Wikipedija, il-pjan ta 'kontroll huwa l-parti tan-netwerk responsabbli għat-trasport tat-traffiku tas-sinjalar u r-rotot. Huwa l-komponent primarju li jieħu deċiżjonijiet globali dwar il-forniment, is-servizz u d-distribuzzjoni tal-piżijiet tax-xogħol. Barra minn hekk, il-pjan ta 'kontroll jaġixxi bħala t-topoloġija tan-netwerk tal-fornitur tas-soluzzjoni, responsabbli għar-rotta u l-ġestjoni tat-traffiku.

It-tieni pjan huwa l-pjan tad-data. Huwa, bħall-pjan ta 'kontroll, għandu l-kompiti tiegħu stess. Il-pjan ta' kontroll jipprovdi APIs għall-ġestjoni tal-funzjonijiet (CreateFunction, UpdateFunctionCode) u jikkontrolla kif Lambda tikkomunika ma' servizzi AWS oħra. Il-pjan tad-dejta jikkontrolla l-API Invoke, li tħaddem funzjonijiet Lambda. Wara li tissejjaħ funzjoni, il-pjan ta 'kontroll jalloka jew jagħżel ambjent ta' runtime eżistenti li huwa ppreparat minn qabel għal dik il-funzjoni, u mbagħad jesegwixxi l-kodiċi fih.

AWS Lambda jappoġġja varjetà ta' lingwi ta' programmar, inklużi Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, u oħrajn, permezz tal-ambjenti runtime rispettivi tagħhom. AWS jaġġornahom regolarment, iqassam irqajja tas-sigurtà, u jwettaq attivitajiet oħra ta 'manutenzjoni fuq dawn l-ambjenti. Lambda jippermettilek tuża lingwi oħra wkoll, sakemm timplimenta r-runtime xieraq lilek innifsek. U mbagħad ikollok tieħu ħsieb il-manutenzjoni tagħha, inkluż il-monitoraġġ tas-sigurtà tagħha.

Kif jaħdem kollox u kif se jwettaq il-funzjonijiet tiegħek is-servizz?

Kull funzjoni taħdem f'ambjent dedikat wieħed jew aktar, li jeżistu biss għall-ħajja ta 'dik il-funzjoni u mbagħad jinqerdu. Kull ambjent jagħmel sejħa waħda biss kull darba, iżda jerġa 'jintuża jekk ikun hemm sejħiet serjali multipli għall-istess funzjoni. L-ambjenti runtime kollha jaħdmu fuq magni virtwali b'virtwalizzazzjoni tal-ħardwer - l-hekk imsejħa microVMs. Kull microVM huwa assenjat għal kont AWS speċifiku u jista 'jerġa' jintuża minn ambjenti biex iwettqu funzjonijiet differenti f'dak il-kont. Il-MicroVMs huma ppakkjati f'blokki ta' bini tal-pjattaforma tal-ħardwer Lambda Worker, li hija proprjetà u mħaddma minn AWS. L-istess runtime ma jistax jintuża minn funzjonijiet differenti, u lanqas il-microVMs huma uniċi għal kontijiet AWS differenti.

Analiżi dettaljata tal-AWS Lambda

Mudell ta' Iżolament AWS Lambda

L-iżolament tal-ambjenti runtime huwa implimentat bl-użu ta 'diversi mekkaniżmi. Fl-ogħla livell ta’ kull ambjent hemm kopji separati tal-komponenti li ġejjin:

  • Kodiċi tal-funzjoni
  • Kwalunkwe saffi Lambda magħżula għall-funzjoni
  • Ambjent ta 'eżekuzzjoni tal-funzjoni
  • Spazju minimu għall-utent ibbażat fuq Amazon Linux

Il-mekkaniżmi li ġejjin jintużaw biex jiżolaw ambjenti ta' eżekuzzjoni differenti:

  • cgroups - jillimitaw l-aċċess għal CPU, memorja, ħażna u riżorsi tan-netwerk għal kull ambjent runtime;
  • namespaces - grupp IDs tal-proċess, IDs tal-utenti, interfaces tan-netwerk u riżorsi oħra ġestiti mill-kernel tal-Linux. Kull runtime jimxi fl-ispazju tal-isem tiegħu stess;
  • seccomp-bpf - jirrestrinġi s-sejħiet tas-sistema li jistgħu jintużaw fir-runtime;
  • iptables u routing tables - iżolament ta 'ambjenti ta' eżekuzzjoni minn xulxin;
  • chroot - jipprovdi aċċess limitat għas-sistema tal-fajl sottostanti.

Flimkien ma 'teknoloġiji ta' iżolament proprjetarji tal-AWS, dawn il-mekkaniżmi jiżguraw separazzjoni ta 'runtime affidabbli. Ambjenti iżolati b'dan il-mod ma jistgħux jaċċessaw jew jimmodifikaw data minn ambjenti oħra.

Għalkemm runtimes multipli tal-istess kont AWS jistgħu jaħdmu fuq microVM wieħed, taħt l-ebda ċirkostanza microVMs ma jistgħu jinqasmu bejn kontijiet AWS differenti. AWS Lambda juża biss żewġ mekkaniżmi biex iżola l-microVMs: istanzi EC2 u Firecracker. L-iżolament tal-mistednin f'Lambda ibbażat fuq istanzi EC2 ilu madwar mill-2015. Firecracker huwa hypervisor ġdid ta' sors miftuħ iddisinjat speċifikament minn AWS għal xogħolijiet mingħajr server u introdott fl-2018. Il-ħardwer fiżiku li jħaddem il-microVMs huwa kondiviż bejn il-piżijiet tax-xogħol f'kontijiet differenti.

Iffrankar ta 'ambjenti u stati tal-proċess

Għalkemm runtimes Lambda huma uniċi għal funzjonijiet differenti, jistgħu jsejħu l-istess funzjoni ripetutament, li jfisser li l-runtime jista 'jgħix għal diversi sigħat qabel ma jinqered.

Kull runtime Lambda għandu wkoll sistema ta 'fajls li tista' tinkiteb aċċessibbli permezz tad-direttorju /tmp. Il-kontenut tiegħu ma jistax jiġi aċċessat minn runtimes oħra. Safejn hija kkonċernata l-persistenza tal-istat tal-proċess, fajls miktuba f'/tmp jeżistu għaċ-ċiklu tal-ħajja kollu tal-ambjent tar-runtime. Dan jippermetti li jiġu akkumulati r-riżultati ta 'sejħiet multipli, li huwa speċjalment utli għal operazzjonijiet għaljin bħal tagħbija ta' mudelli ta 'tagħlim bil-magni.

Sejħa trasferiment tad-data

L-API Invoke tista 'tintuża f'żewġ modi: modalità ta' avveniment u modalità ta 'talba-rispons. Fil-modalità avveniment, is-sejħa hija miżjuda ma 'kju għal eżekuzzjoni aktar tard. Fil-modalità ta 'talba-rispons, il-funzjoni tissejjaħ istantanjament bit-tagħbija pprovduta, u wara r-rispons jintbagħat lura. Fiż-żewġ każijiet, il-funzjoni taħdem f'ambjent Lambda, iżda b'mogħdijiet ta 'tagħbija differenti.

Matul is-sejħiet ta' rikjesta-rispons, it-tagħbija tgħaddi minn API tal-ipproċessar tat-talba (API Caller), bħal AWS API Gateway jew AWS SDK, lejn il-load balancer, u mbagħad lejn is-servizz ta' sejħa Lambda (Invoke Service). Dan tal-aħħar jiddetermina l-ambjent xieraq għall-eżekuzzjoni tal-funzjoni u jgħaddi t-tagħbija hemmhekk biex tlesti s-sejħa. Il-load balancer jirċievi traffiku protett minn TLS fuq l-Internet. It-traffiku fi ħdan is-servizz Lambda—wara l-load balancer—jgħaddi minn VPC intern f'reġjun speċifiku tal-AWS.

Analiżi dettaljata tal-AWS Lambda

Mudell tal-Ipproċessar tas-Sejħiet AWS Lambda: Modalità ta' Talba-Reazzjoni

Sejħiet għall-avvenimenti jistgħu jsiru immedjatament jew jiżdiedu ma 'kju. F'xi każijiet, il-kju jiġi implimentat bl-użu ta' Amazon SQS (Amazon Simple Queue Service), li jgħaddi sejħiet lis-servizz ta' twettiq ta' sejħiet Lambda permezz ta' proċess ta' poller intern. It-traffiku trażmess huwa protett minn TLS, u m'hemm l-ebda encryption addizzjonali tad-dejta maħżuna fl-Amazon SQS.

Is-sejħiet tal-avvenimenti ma jirritornux tweġibiet—il-Lambda Worker sempliċement jinjora kwalunkwe informazzjoni dwar ir-rispons. Sejħiet ibbażati fuq avveniment minn Amazon S3, Amazon SNS, CloudWatch, u sorsi oħra huma pproċessati minn Lambda fil-modalità avveniment. Sejħiet minn flussi Amazon Kinesis u DynamoDB, kjuwijiet SQS, Applikazzjoni Load Balancer, u sejħiet API Gateway huma pproċessati b'mod ta' talba-rispons.

Monitoraġġ

Tista' timmonitorja u tivverifika l-funzjonijiet Lambda billi tuża varjetà ta' mekkaniżmi u servizzi AWS, inklużi dawn li ġejjin.

amazoncloudwatch
Tiġbor statistika varji bħan-numru ta 'talbiet, it-tul ta' talbiet, u n-numru ta 'talbiet li fallew.

Amazon CloudTrail
Jippermettilek tilloggja, tissorvelja kontinwament, u żżomm informazzjoni dwar l-attività tal-kont assoċjata mal-infrastruttura tal-AWS tiegħek. Int ser ikollok storja sħiħa ta' azzjonijiet imwettqa bl-użu tal-AWS Management Console, AWS SDK, għodod tal-linja tal-kmand, u servizzi AWS oħra.

AWS X-Ray
Jipprovdi viżibilità sħiħa fl-istadji kollha tal-ipproċessar tat-talba fl-applikazzjoni tiegħek ibbażata fuq mappa tal-komponenti interni tagħha. Jippermettilek tanalizza l-applikazzjonijiet waqt l-iżvilupp u fl-ambjenti tal-produzzjoni.

AWS Config
Int tkun tista' ssegwi bidliet fil-konfigurazzjoni tal-funzjoni Lambda (inkluż it-tħassir) u runtimes, tikketti, ismijiet ta' handler, daqs tal-kodiċi, allokazzjoni tal-memorja, settings ta' timeout u settings ta' konkorrenza, kif ukoll ir-rwol ta' eżekuzzjoni ta' Lambda IAM, subnetting, u rbit ta' gruppi ta' sigurtà .

Konklużjoni

AWS Lambda joffri sett qawwi ta' għodod għall-bini ta' applikazzjonijiet sikuri u skalabbli. Ħafna mill-prattiki ta' sigurtà u konformità f'AWS Lambda huma l-istess bħal f'servizzi AWS oħra, għalkemm hemm eċċezzjonijiet. Minn Marzu 2019, Lambda hija konformi mal-konformità SOC 1, SOC 2, SOC 3, PCI DSS, konformità tal-Att dwar il-Portabilità u r-Responsabbiltà tal-Assigurazzjoni tas-Saħħa (HIPAA), u regolamenti oħra. Għalhekk, meta tkun qed taħseb biex timplimenta l-applikazzjoni li jmiss tiegħek, ikkunsidra s-servizz AWS Lambda - jista 'jkun l-aħjar għall-kompitu tiegħek.

Sors: www.habr.com

Żid kumment