Uchambuzi wa kina wa AWS Lambda

Tafsiri ya makala hiyo ilitayarishwa mahsusi kwa ajili ya wanafunzi wa kozi hiyo "Huduma za wingu". Je, ungependa kuendeleza katika mwelekeo huu? Tazama darasa la bwana na Egor Zuev (TeamLead katika InBit) "Huduma ya AWS EC2" na ujiunge na kikundi kinachofuata cha kozi: itaanza Septemba 26.

Uchambuzi wa kina wa AWS Lambda

Watu zaidi wanahamia AWS Lambda kwa ajili ya kuongeza kasi, utendakazi, akiba na uwezo wa kushughulikia mamilioni au hata matrilioni ya maombi kwa mwezi. Ili kufanya hivyo, huna haja ya kusimamia miundombinu ambayo huduma inaendesha. Na kuongeza kasi hukuruhusu kutumikia maelfu ya maombi ya wakati mmoja kwa sekunde. Nadhani AWS Lambda inaweza kuitwa moja ya huduma maarufu za AWS.

AWS Lambda

AWS Lambda ni huduma ya kompyuta isiyo na seva inayoendeshwa na hafla ambayo hukuruhusu kuendesha msimbo bila kutoa au kudhibiti seva na kupanua huduma zingine za AWS kwa kutumia mantiki maalum. Lambda hujibu kiotomatiki matukio mbalimbali (yanayoitwa vichochezi), kama vile maombi ya HTTP kupitia Amazon API Gateway, mabadiliko ya data katika ndoo za Amazon S3 au meza za Amazon DynamoDB; au unaweza kutekeleza msimbo wako kupitia simu za API kwa kutumia AWS SDK na hali ya mabadiliko katika Shughuli za Hatua za AWS.

Lambda huendesha msimbo kwenye miundombinu ya kompyuta inayopatikana kwa wingi na inawajibika kikamilifu kwa kusimamia jukwaa la msingi, ikijumuisha matengenezo ya seva na mfumo wa uendeshaji, utoaji wa rasilimali, kuongeza kiotomatiki, ufuatiliaji wa msimbo na ukataji miti. Hiyo ni, unahitaji tu kupakia msimbo wako na usanidi jinsi na wakati unapaswa kutekelezwa. Kwa upande mwingine, huduma itashughulikia uzinduzi wake na kuhakikisha upatikanaji wa juu wa programu yako.

Wakati wa kubadili kwa Lambda?

AWS Lambda ni jukwaa rahisi la kompyuta ambalo linafaa kwa hali mbalimbali za matumizi, mradi tu lugha na muda wa matumizi wa msimbo wako unaauniwa na huduma. Ikiwa unataka kuzingatia msimbo wako na mantiki ya biashara wakati wa kutoa matengenezo ya seva, utoaji, na kuongeza kwa gharama nzuri, AWS Lambda hakika ndiyo njia ya kufanya.

Lambda ni bora kwa kuunda miingiliano ya programu, na inapotumiwa kwa kushirikiana na API Gateway, unaweza kupunguza gharama kwa kiasi kikubwa na kupata soko haraka. Kuna njia tofauti za kutumia kazi za Lambda na chaguzi za kuandaa usanifu usio na seva - kila mtu anaweza kuchagua kitu kinachofaa kulingana na lengo lake.

Lambda hukuruhusu kufanya anuwai ya kazi. Kwa hivyo, shukrani kwa usaidizi wa CloudWatch, unaweza kuunda kazi zilizoahirishwa na kubinafsisha michakato ya mtu binafsi. Hakuna vikwazo juu ya asili na ukubwa wa matumizi ya huduma (matumizi ya kumbukumbu na wakati huzingatiwa), na hakuna kitu kinachokuzuia kufanya kazi kwa utaratibu kwenye huduma ndogo kamili kulingana na Lambda.

Hapa unaweza kuunda vitendo vinavyolenga huduma ambavyo haviendeshwi mfululizo. Mfano wa kawaida ni kuongeza picha. Hata katika kesi ya mifumo iliyosambazwa, kazi za Lambda zinabaki kuwa muhimu.

Kwa hivyo, ikiwa hutaki kushughulika na ugawaji na udhibiti wa rasilimali za kompyuta, jaribu AWS Lambda; ikiwa hauitaji mahesabu mazito, yanayotumia rasilimali nyingi, pia jaribu AWS Lambda; ikiwa nambari yako inaendesha mara kwa mara, hiyo ni sawa, unapaswa kujaribu AWS Lambda.

usalama

Hadi sasa hakuna malalamiko kuhusu usalama. Kwa upande mwingine, kwa kuwa michakato mingi ya ndani na vipengele vya utekelezaji wa mtindo huu vimefichwa kutoka kwa mtumiaji wa mazingira ya wakati wa kukimbia ya AWS Lambda, baadhi ya sheria zinazokubaliwa kwa ujumla za usalama wa wingu huwa hazifai.

Kama huduma nyingi za AWS, Lambda hutolewa kwa misingi ya usalama na utiifu iliyoshirikiwa kati ya AWS na mteja. Kanuni hii inapunguza mzigo wa uendeshaji kwa mteja, kwani AWS inachukua kazi za kudumisha, kusimamia na kufuatilia vipengele vya huduma - kutoka kwa mfumo wa uendeshaji wa jeshi na safu ya virtualization hadi usalama wa kimwili wa mali ya miundombinu.

Tukizungumza haswa kuhusu AWS Lambda, AWS ina jukumu la kudhibiti miundombinu ya msingi, huduma za msingi zinazohusiana, mfumo wa uendeshaji na jukwaa la programu. Wakati mteja anajibika kwa usalama wa kanuni yake, kuhifadhi data za siri, kudhibiti upatikanaji wake, pamoja na huduma ya Lambda na rasilimali (Usimamizi wa Utambulisho na Ufikiaji, IAM), ikiwa ni pamoja na ndani ya mipaka ya kazi zinazotumiwa.

Mchoro ulio hapa chini unaonyesha muundo wa uwajibikaji ulioshirikiwa kama unavyotumika kwa AWS Lambda. Wajibu wa AWS ni wa rangi ya chungwa na Wajibu wa Mteja ni wa bluu. Kama unavyoona, AWS inachukua jukumu zaidi kwa programu zilizotumwa kwenye huduma.

Uchambuzi wa kina wa AWS Lambda

Muundo wa Uwajibikaji Ulioshirikiwa Unatumika kwa AWS Lambda

Wakati wa kukimbia wa Lambda

Faida kuu ya Lambda ni kwamba kwa kufanya kazi kwa niaba yako, huduma yenyewe inagawa rasilimali muhimu. Unaweza kuepuka kupoteza muda na jitihada juu ya usimamizi wa mfumo na kuzingatia mantiki ya biashara na coding.

Huduma ya Lambda imegawanywa katika ndege mbili. Ya kwanza ni ndege ya kudhibiti. Kulingana na Wikipedia, ndege ya udhibiti ni sehemu ya mtandao inayohusika na kusafirisha trafiki inayoashiria na uelekezaji. Ni sehemu ya msingi ambayo hufanya maamuzi ya kimataifa kuhusu utoaji, huduma, na kusambaza mzigo wa kazi. Kwa kuongezea, ndege ya udhibiti hufanya kazi kama topolojia ya mtandao ya mtoaji suluhisho, inayowajibika kwa kuelekeza na kudhibiti trafiki.

Ndege ya pili ni ndege ya data. Ni, kama ndege ya udhibiti, ina kazi zake. Ndege inayodhibiti hutoa API za kudhibiti vitendakazi (CreateFunction, UpdateFunctionCode) na kudhibiti jinsi Lambda inavyowasiliana na huduma zingine za AWS. Ndege ya data inadhibiti API ya Omba, ambayo huendesha vitendaji vya Lambda. Baada ya kazi kuitwa, ndege ya udhibiti hutenga au kuchagua mazingira yaliyopo ya kukimbia ambayo yameandaliwa kabla ya kazi hiyo, na kisha kutekeleza msimbo ndani yake.

AWS Lambda inaauni lugha mbalimbali za programu, ikiwa ni pamoja na Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, na nyinginezo, kupitia mazingira husika ya wakati wa kutekeleza. AWS huwasasisha mara kwa mara, husambaza viraka vya usalama, na kufanya shughuli zingine za matengenezo kwenye mazingira haya. Lambda hukuruhusu kutumia lugha zingine pia, mradi utekeleze wakati unaofaa wa kukimbia mwenyewe. Na kisha utakuwa na utunzaji wa matengenezo yake, ikiwa ni pamoja na kufuatilia usalama wake.

Yote hufanyaje kazi na jinsi huduma itafanya kazi zako?

Kila chaguo la kukokotoa huendesha katika mazingira moja au zaidi yaliyojitolea, ambayo yanapatikana tu kwa maisha ya kitendakazi hicho na kisha kuharibiwa. Kila mazingira hupiga simu moja tu kwa wakati mmoja, lakini inatumiwa tena ikiwa kuna simu nyingi za mfululizo kwa utendaji sawa. Mazingira yote ya wakati wa utekelezaji huendeshwa kwenye mashine pepe zilizo na uboreshaji wa maunzi - zinazoitwa microVM. Kila microVM imetumwa kwa akaunti mahususi ya AWS na inaweza kutumika tena na mazingira kutekeleza majukumu tofauti ndani ya akaunti hiyo. MicroVM huwekwa kwenye vifurushi vya ujenzi wa jukwaa la maunzi la Lambda Worker, ambalo linamilikiwa na kuendeshwa na AWS. Muda sawa wa utekelezaji hauwezi kutumiwa na vitendakazi tofauti, wala microVM si za kipekee kwa akaunti tofauti za AWS.

Uchambuzi wa kina wa AWS Lambda

Mfano wa Kutengwa wa AWS Lambda

Kutengwa kwa mazingira ya wakati wa kukimbia hutekelezwa kwa kutumia njia kadhaa. Katika kiwango cha juu cha kila mazingira kuna nakala tofauti za vifaa vifuatavyo:

  • Msimbo wa kazi
  • Tabaka zozote za Lambda zilizochaguliwa kwa chaguo la kukokotoa
  • Mazingira ya utekelezaji wa kazi
  • Nafasi ndogo ya mtumiaji kulingana na Amazon Linux

Mbinu zifuatazo hutumiwa kutenga mazingira tofauti ya utekelezaji:

  • cgroups - kikomo upatikanaji wa CPU, kumbukumbu, hifadhi na rasilimali za mtandao kwa kila mazingira ya kukimbia;
  • nafasi za majina - vitambulisho vya mchakato wa kupanga, vitambulisho vya mtumiaji, violesura vya mtandao na rasilimali zingine zinazodhibitiwa na kinu cha Linux. Kila wakati wa kukimbia huendesha katika nafasi yake ya jina;
  • seccomp-bpf - inazuia simu za mfumo ambazo zinaweza kutumika wakati wa kukimbia;
  • iptables na meza za routing - kutengwa kwa mazingira ya utekelezaji kutoka kwa kila mmoja;
  • chroot - hutoa ufikiaji mdogo kwa mfumo wa faili wa msingi.

Ikiunganishwa na teknolojia za utengaji za wamiliki wa AWS, mbinu hizi huhakikisha utenganisho unaotegemewa wakati wa utekelezaji. Mazingira yaliyotengwa kwa njia hii hayawezi kufikia au kurekebisha data kutoka kwa mazingira mengine.

Ingawa nyakati nyingi za utendakazi za akaunti hiyo ya AWS zinaweza kuendeshwa kwenye microVM moja, hakuna hali yoyote microVM zinaweza kushirikiwa kati ya akaunti tofauti za AWS. AWS Lambda hutumia mbinu mbili pekee ili kutenga microVMs: matukio ya EC2 na Firecracker. Kutengwa kwa wageni katika Lambda kulingana na matukio ya EC2 kumekuwapo tangu 2015. Firecracker ni hypervisor mpya ya chanzo huria iliyoundwa mahsusi na AWS kwa upakiaji wa kazi bila seva na ilianzishwa mnamo 2018. Vifaa halisi vinavyoendesha microVM vinashirikiwa kati ya mizigo ya kazi katika akaunti tofauti.

Kuhifadhi mazingira na majimbo ya mchakato

Ingawa saa za utekelezaji za Lambda ni za kipekee kwa vitendaji tofauti, zinaweza kuita utendaji sawa mara kwa mara, kumaanisha muda wa utekelezaji unaweza kudumu kwa saa kadhaa kabla ya kuharibiwa.

Kila wakati wa utekelezaji wa Lambda pia una mfumo wa faili unaoweza kuandikwa unaopatikana kupitia saraka ya /tmp. Yaliyomo hayawezi kufikiwa kutoka kwa nyakati zingine za utekelezaji. Kwa upande wa kuendelea kwa hali ya mchakato, faili zilizoandikwa kwa /tmp zipo kwa mzunguko mzima wa maisha ya mazingira ya wakati wa kukimbia. Hii inaruhusu matokeo ya simu nyingi kukusanywa, ambayo ni muhimu sana kwa shughuli za gharama kubwa kama vile kupakia miundo ya kujifunza kwa mashine.

Piga uhamishaji wa data

API ya Omba inaweza kutumika katika hali mbili: hali ya tukio na hali ya kujibu ombi. Katika hali ya tukio, simu inaongezwa kwenye foleni kwa ajili ya utekelezaji wa baadaye. Katika hali ya ombi-majibu, kazi inaitwa mara moja na malipo yaliyotolewa, baada ya hapo majibu yanarejeshwa. Katika visa vyote viwili, kazi inaendeshwa katika mazingira ya Lambda, lakini kwa njia tofauti za upakiaji.

Wakati wa simu za kujibu ombi, upakiaji hutiririka kutoka kwa API ya kuchakata ombi (API ya Mpigaji), kama vile AWS API Gateway au AWS SDK, hadi kwenye sawazisha la upakiaji, na kisha hadi huduma ya simu ya Lambda (Huduma ya Omba). Mwisho huamua mazingira yanayofaa ya kutekeleza kazi na hupitisha mzigo hapo ili kukamilisha simu. Kisawazisha mzigo hupokea trafiki inayolindwa na TLS kwenye Mtandao. Trafiki ndani ya huduma ya Lambda—baada ya kusawazisha mzigo—hupitia VPC ya ndani katika eneo mahususi la AWS.

Uchambuzi wa kina wa AWS Lambda

Mfano wa Kuchakata Simu ya AWS Lambda: Njia ya Kujibu Ombi

Simu za tukio zinaweza kupigwa mara moja au kuongezwa kwenye foleni. Katika baadhi ya matukio, foleni inatekelezwa kwa kutumia Amazon SQS (Huduma ya Foleni Rahisi ya Amazon), ambayo hupitisha simu kwa huduma ya utimilifu wa simu ya Lambda kupitia mchakato wa wapiga kura wa ndani. Trafiki inayotumwa inalindwa na TLS, na hakuna usimbaji fiche wa ziada wa data iliyohifadhiwa katika Amazon SQS.

Simu za matukio hazirejeshi majibu—Mfanyakazi wa Lambda anapuuza tu taarifa zozote za majibu. Simu zinazotegemea tukio kutoka Amazon S3, Amazon SNS, CloudWatch, na vyanzo vingine huchakatwa na Lambda katika hali ya tukio. Simu kutoka kwa mitiririko ya Amazon Kinesis na DynamoDB, foleni za SQS, Kisawazisha cha Upakiaji wa Programu, na simu za API Gateway huchakatwa kwa mtindo wa kujibu ombi.

Ufuatiliaji

Unaweza kufuatilia na kukagua utendaji wa Lambda kwa kutumia mbinu na huduma mbalimbali za AWS, zikiwemo zifuatazo.

amazoncloudwatch
Hukusanya takwimu mbalimbali kama vile idadi ya maombi, muda wa maombi na idadi ya maombi ambayo hayakufaulu.

Amazon CloudTrail
Hukuruhusu kuweka kumbukumbu, kufuatilia na kudumisha maelezo ya shughuli za akaunti yanayohusiana na miundombinu yako ya AWS. Utakuwa na historia kamili ya vitendo vilivyotekelezwa kwa kutumia AWS Management Console, AWS SDK, zana za mstari wa amri na huduma zingine za AWS.

AWS X-Ray
Hutoa mwonekano kamili katika hatua zote za uchakataji wa ombi katika programu yako kulingana na ramani ya vipengele vyake vya ndani. Hukuruhusu kuchanganua programu wakati wa usanidi na katika mazingira ya uzalishaji.

Usanidi wa AWS
Utaweza kufuatilia mabadiliko ya usanidi wa chaguo la kukokotoa la Lambda (ikiwa ni pamoja na kufuta) na nyakati za utekelezaji, lebo, majina ya vidhibiti, saizi ya msimbo, mgao wa kumbukumbu, mipangilio ya muda wa kuisha na mipangilio ya sarafu, pamoja na jukumu la utekelezaji la Lambda IAM, subnetting na vifungo vya vikundi vya usalama. .

Hitimisho

AWS Lambda inatoa seti kubwa ya zana za kujenga programu salama na hatarishi. Mbinu nyingi za usalama na kufuata katika AWS Lambda ni sawa na katika huduma zingine za AWS, ingawa kuna vighairi. Kuanzia Machi 2019, Lambda inatii sheria za SOC 1, SOC 2, SOC 3, PCI DSS, Sheria ya Ubebaji wa Bima ya Afya na Uwajibikaji (HIPAA) na kanuni nyinginezo. Kwa hivyo, unapofikiria kuhusu kutekeleza ombi lako linalofuata, zingatia huduma ya AWS Lambda - inaweza kuwa bora zaidi kwa kazi yako.

Chanzo: mapenzi.com

Kuongeza maoni