Analiza e detajuar e AWS Lambda

Përkthimi i artikullit është përgatitur posaçërisht për studentët e kursit «Shërbimet e Cloud». A jeni të interesuar të zhvilloni në këtë fushë? Shikoni masterclass-in e Egor Zuev (TeamLead në kompaninë InBit) «Shërbimi AWS EC2» dhe bashkohuni me grupin më të afërt të kursit: fillon më 26 Shtator.

Analiza e detajuar e AWS Lambda

Një numër gjithnjë e më i madh njerëzish po kalojnë në AWS Lambda për shkak të shkallëzueshmërisë, performancës, kursimeve dhe mundësisë për të përpunuar miliona dhe madje triliona kërkesash në muaj. Për këtë, nuk është e nevojshme të menaxhohet infrastruktura mbi të cilën funksionon shërbimi. Automatizimi i shkallëzimit lejon shërbimin e mijëra kërkesave të njëkohshme në sekondë. Mendoj se AWS Lambda mund të quhet me të drejtë një nga shërbimet më të kërkuara të AWS.

AWS Lambda

AWS Lambda është një shërbim i bazuar në ngjarje për llogaritje pa serverë, i cili lejon ekzekutimin e kodit pa dedikim dhe administrim të serverëve dhe plotëson shërbime të tjera të AWS në bazë të logjikës së përdoruesit. Lambda reagon automatikisht ndaj ngjarjeve të ndryshme (të ashtuquajturat ngacmime), si p.sh. kërkesat HTTP përmes Amazon API Gateway, ndryshimit të të dhënave në kovat e Amazon S3 ose tabelat e Amazon DynamoDB; gjithashtu, mund të shpërndani kodin tuaj përmes thirrjeve API duke përdorur AWS SDK dhe kalimet midis gjendjeve në AWS Step Functions.

Lambda ekzekuton kodin në një infrastrukturë të llogaritjes me disponueshmëri të lartë dhe merr përsipër administrimin e platformës nën të, duke përfshirë mbështetje për serverët dhe sistemin operativ, ndarjen e burimeve, automatizimin e shkallëzimit, monitorimin e kodit dhe mbajtjen e regjistrave. Domethënë, është e mjaftueshme të ngarkoni kodin tuaj dhe të konfiguroni si dhe kur duhet të ekzekutohet. Në anën tjetër, shërbimi do t'i kujdeset për ekzekutimin e tij dhe të sigurojë disponueshmërinë e lartë të aplikacionit tuaj.

Kur të kaloni në Lambda?

AWS Lambda është një platformë llogaritëse e përshtatshme për shumë skenarë aplikimi, sigurisht, nëse gjuha dhe mjedisi i ekzekutimit të kodit tuaj mbështeten nga shërbimi. Nëse dëshironi të përqendroheni në kod dhe logjikën e biznesit, duke i besuar administrimin e serverëve, ndarjen e burimeve dhe shkallëzimin një ofruesi të tretë për një çmim të arsyeshëm, atëherë me siguri duhet të kaloni në AWS Lambda.

Lambda është ideale për krijimin e ndërfaqeve programore, dhe nëse përdorim shërbimin së bashku me API Gateway, mund të reduktoni ndjeshëm shpenzimet dhe të dilni më shpejt në treg. Ekzistojnë mënyra të ndryshme për të përdorur funksionet Lambda dhe mundësi për të organizuar një arkitekturë pa server; çdo dikush mund të zgjedhë diçka të përshtatshme në përputhje me qëllimin e vendosur.

Lambda lejon ekzekutimin e një gamë të gjerë detyrash. Kështu, falë mbështetjes për CloudWatch, mund të krijoni detyra të planifikuara dhe të automatizoni procese të veçanta. Nuk ka asnjë kufizim në natyrën dhe intensitetin e përdorimit të shërbimit (merren parasysh konsumimi i memories dhe koha), dhe nuk ka asgjë që t'ju pengojë të punoni gradualisht mbi një mikroshërbim të plotë mbi bazën e Lambda.

Këtu mund të krijoni veprime të orientuara nga shërbimet, të cilat nuk kryhen vazhdimisht. Një shembull tipik është shkallëzimi i imazheve. Edhe në rastin e sistemeve të shpërndara, funksionet Lambda nuk humbin relevante.

Pra, nëse nuk dëshironi të merret me ndarjen dhe administrimin e burimeve llogaritëse — provoni AWS Lambda; nëse nuk keni nevojë për llogaritje të rënda dhe burimshumë — gjithashtu provoni AWS Lambda; nëse kodi juaj ekzekutohet herë pas here — gjithçka është në rregull, duhet të provoni AWS Lambda.

Siguria

Deritani nuk ka paqartësi për sigurinë. Nga ana tjetër, për shkak se nga përdoruesi fshehen shumë procese të brendshme dhe veçoritë e realizimit të këtij modeli, disa rregulla të njohura të sigurisë në re humbasin relevancën e tyre.

Si shumica e shërbimeve të AWS, Lambda ofrohet sipas parimit të përgjegjësisë së përbashkët midis AWS dhe klientit për aspektet e sigurisë dhe përputhjes me rregullat. Ky parim zvogëlon ngarkesën operative për klientin, pasi AWS merr përsipër detyrat e mbështetjes, administrimit dhe kontrollit të komponentëve të shërbimit — nga sistemi operativ i hostit dhe niveli i virtualizimit deri te siguria fizike e objekteve të infrastrukturës.

Nëse flasim specifikisht për AWS Lambda, AWS është përgjegjës për menaxhimin e infrastrukturës nën, shërbimet e bazës që lidhen, sistemin operativ dhe platformën për aplikacione. Ndërsa klienti është përgjegjës për sigurinë e kodit të tij, ruajtjen e të dhënave të ndjeshme, kontrollin e aksesit ndaj tyre, si dhe ndaj shërbimit dhe burimeve të Lambda (Menaxhimi i Identitetit dhe Aksesit, IAM), duke përfshirë brenda funksioneve të përdorura.

Në diagramin e mëposhtëm është paraqitur modeli i përgjegjësisë së përbashkët, që aplikohet për AWS Lambda. Sfera e përgjegjësisë së AWS është e ngjyrosur në ngjyrë portokalli, ndërsa përgjegjësia e klientit është në ngjyrë blu. Siç e shihni, AWS merr më shumë përgjegjësi për aplikacionet që janë deployed në shërbim.

Analiza e detajuar e AWS Lambda

Modeli i përgjegjësisë së përbashkët që aplikohet për AWS Lambda

Mjedisi i ekzekutimit të Lambda

Avantazhi kryesor i Lambda është se, duke ekzekutuar funksionin në emër tuaj, shërbimi ndan vetë burimet e nevojshme. Ju mund të mos humbni kohë dhe energji në administrimin e sistemeve dhe të përqendroheni në logjikën e biznesit dhe shkruani kodin.

Shërbimi Lambda është i ndarë në dy plane. E para - plani i menaxhimit. Sipas Wikipedia, plani i menaxhimit (control plane) është pjesa e rrjetit që është përgjegjëse për transportimin e trafikut të sinjalit dhe ruterimin. Ai është komponenti kryesor që merr vendime globale për ndarjen, shërbimin dhe shpërndarjen e ngarkesave të punës. Gjithashtu, plani i menaxhimit vepron si topologjia rrjetë e ofruesit të zgjidhjes, që është përgjegjëse për ruterimin e trafikut dhe menaxhimin e tij.

Plani i dytë - plani i të dhënave. Ai ka, po ashtu, detyra të vetat. Plani i menaxhimit ofron API për menaxhimin e funksioneve (CreateFunction, UpdateFunctionCode) dhe kontrollon ndërveprimin e Lambda me shërbime të tjera të AWS. Plani i të dhënave menaxhon API thirrjet (Invoke API), që aktivizon funksionet Lambda. Pas thirrjes së funksionit, plani i menaxhimit ndan ose zgjedh një mjedis ekzekutimi të ekzistueshëm, i përgatitur paraprakisht për këtë funksion dhe pastaj ekzekuton kodin në të.

AWS Lambda mbështet shumë gjuhë programimi, duke përfshirë Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 dhe të tjera, përmes mjediseve përkatëse të ekzekutimit. AWS i përditëson ato rregullisht, shpërndan korigjime të sigurisë dhe realizon operacione të tjera për mirëmbajtjen e këtyre mjeteve. Lambda gjithashtu lejon përdorimin e gjuhëve të tjera nëse ju vetë implementoni mjedisin përkatës të ekzekutimit. Dhe atëherë ju do të duhet të merrni përsipër mirëmbajtjen e tij, duke përfshirë ruajtjen e sigurisë.

Si funksionon gjithçka dhe si do të ekzekutojë shërbimi funksionet tuaja?

Çdo funksion punon në një ose më shumë ambiente të dedikuara, që ekzistojnë vetëm gjatë ciklit të jetës së këtij funksioni, dhe pastaj shkatërrohen. Në çdo mjedis ekzekutohet vetëm një thirrje në të njëjtën kohë, por përdoret përsëri nëse ndodhin shumë thirrje serike të të njëjtit funksion. Të gjitha mjediset e ekzekutimit punojnë mbi makina virtuale me virtualizim harduerik - mbi të ashtuquajturat microVM. Çdo microVM caktohet një llogarie specifike të AWS dhe mund të përdoret shumë herë nga mjediset për të ekzekutuar funksione të ndryshme në këtë llogari. MicroVM paketohen në blloqet strukturore të platformës harduerike Lambda Worker, të cilën e zotëron dhe e menaxhon AWS. E njëjta nga mjediset e ekzekutimit nuk mund të përdoren nga funksione të ndryshme, ashtu si microVM janë unike për llogari të ndryshme të AWS.

Analiza e detajuar e AWS Lambda

Modeli i izolimit në AWS Lambda

Izolimi i mjeteve të ekzekutimit janë realizuar me ndihmën e disa mekanizmave. Në nivelin më të lartë, çdo mjedis ka kopje të veçanta të komponentëve të mëposhtëm:

  • Kodi i funksionit
  • Çdo layer Lambda, që është zgjedhur për funksionin
  • Mjedisi i ekzekutimit të funksionit
  • Hapsira minimale e përdoruesit bazuar në Amazon Linux

Për izolimin e mjeteve të ndryshme të ekzekutimit, përdoren mekanizma të tillë:

  • cgroups - kufizimi i aksesit në burimet e CPU, memorie, kapacitet dhënie dhe rrjet për çdo mjedis të ekzekutimit;
  • namespaces - bashkimi në grupe të ID-ve të proceseve, ID-ve të përdoruesve, ndërfaqeve rrjet dhe burimeve të tjera që menaxhohen nga bërthama Linux. Çdo mjedis i ekzekutimit punon në hapësirën e tij emërtimi;
  • seccomp-bpf - kufizimi i thirrjeve sistemike që mund të përdoren në mjedisin e ekzekutimit;
  • iptables dhe tabelat e ruterimit - izolimi i mjeteve të ekzekutimit nga njëra-tjetra;
  • chroot - ofrimi i aksesit të kufizuar në sistemin e skedarëve nënkuptues.

Në kombinim me teknologjitë e pronarit të AWS, mekanizmat e përmendura sigurojnë ndarje të besueshme të mjeteve të ekzekutimit. Mjediset e tilla të izoluara nuk mund të aksesojnë të dhënat e mjeteve të tjera dhe t'i ndryshojnë ato.

Megjithëse disa mjedise ekzekutimi të një llogarie AWS mund të funksionojnë në një microVM, në asnjë rast microVM-të nuk mund të ndahen nga llogari të ndryshme AWS. Për izolim në microVM në AWS Lambda përdoren vetëm dy mekanizma: instancat EC2 dhe Firecracker. Izolimi i mysafirëve (guest isolation) në Lambda që bazohet në instancat EC2 është aplikuar që nga viti 2015. Firecracker është një hipervizor i ri me burim të hapur, i zhvilluar nga AWS për ngarkesat pa server dhe u prezantua në vitin 2018. Pajisjet fizike, mbi të cilat funksionojnë microVM-të, ndahen nga ngarkesat e llogarive të ndryshme.

Ruajtja e mjediseve dhe stacioneve të proceseve

Megjithëse mjediset e ekzekutimit të Lambda janë unik për funksione të ndryshme, ato mund të thirren përsëri për një funksion të njëjtë, do thotë që mjedisi i ekzekutimit mund të ekzistojë për disa orë përpara se të shkatërrohet.

Në çdo mjedis ekzekutimi të Lambda gjithashtu ka një sistem skedarësh me leje për të shkruar, i доступshëm përmes katalogut /tmp. Përmbajtja e tij nuk mund të arrihet nga mjedise të tjera ekzekutimi. Sa i përket ruajtjes së stacioneve të proceseve, skedarët e shkruar në /tmp ekzistojnë gjatë gjithë ciklit të jetës së mjedisit të ekzekutimit. Kjo e bën të mundur grumbullimin e rezultateve të disa thirrjeve, që është veçanërisht e dobishme për operacione të shtrenjta si ngarkimi i modeleve të mësimit të makinerive.

Shkëmbimi i të dhënave të thirrjeve

Interfejsi Invoke API mund të përdoret në dy mënyra: në mënyrën e ngjarjeve dhe në mënyrën 'kërkesë - përgjigje'. Në mënyrën e ngjarjeve, thirrjet shtohen në një radhë për ekzekutim të mëvonshëm. Në mënyrën 'kërkesë - përgjigje', funksioni thirret menjëherë me ngarkesën e siguruar dhe pastaj kthehet përgjigja. Në të dyja rastet, funksioni ekzekutohet në mjedisin e Lambda, por me rruga të ndryshme ngarkesash.

Gjatë thirrjeve të llojit 'kërkesë - përgjigje', ngarkesa vjen nga API i përpunimit të kërkesave (API Caller), siç është AWS API Gateway ose AWS SDK, në balancuesin e ngarkesës, dhe më pas në shërbimin e thirrjes Lambda (Invoke Service). Ky i fundit përcakton mjedisin e duhur për ekzekutimin e funksionit dhe i kalon atij ngarkesën për të përfunduar thirrjen. Balancuesi i ngarkesës merr trafikun me mbrojtje TLS përmes Internetit. Trafiku brenda shërbimit Lambda, pas balancuesit të ngarkesës, kalon përmes VPC të brendshëm në një rajon të caktuar AWS.

Analiza e detajuar e AWS Lambda

Modeli i përpunimit të thirrjeve AWS Lambda: mënyra 'kërkesë - përgjigje'

Thirrjet e bazuara në ngjarje mund të ekzekutohen menjëherë ose të shtohen në një radhë. Në disa raste, radhën e realizon shërbimi Amazon SQS (Amazon Simple Queue Service), i cili transferon thirrjet në shërbimin e thirrjes Lambda përmes një procesi të brendshëm të pyetjes (poller). Trafiku i transferuar është i mbrojtur nga TLS, ndërkohë që nuk parashikohet asnjë enkriptim të mëtejshëm të të dhënave të ruajtura në Amazon SQS.

Thirrjet e bazuara në ngjarje nuk kthejnë përgjigje - çdo informacion përgjigje Lambda Worker thjesht e injoron. Thirrjet nga burime si Amazon S3, Amazon SNS, CloudWatch dhe burime të tjera përpunohen nga shërbimi Lambda në mënyrë ngjarjeje. Thirrjet nga rrjedhat Amazon Kinesis dhe DynamoDB, thirrjet e radhëve SQS, balancuesin e ngarkesave të aplikacioneve dhe API Gateway përpunohen në mënyrë 'kërkesë - përgjigje'.

Monitorimi

Mund të monitoroni dhe auditoni funksionet Lambda me ndihmën e mekanizmave dhe shërbimeve të ndryshme AWS, përfshirë të mëposhtmit.

Amazon CloudWatch
Mblidhen të dhëna statistike të ndryshme, si numri i kërkesave, koha e ekzekutimit të kërkesave dhe numri i kërkesave që përfunduan me gabime.

Amazon CloudTrail
Lejon mbajtjen e regjistrave, monitorimin e vazhdueshëm dhe ruajtjen e informacionit lidhur me aktivitetet në llogarinë tuaj, në lidhje me infrastrukturen tuaj AWS. Do të keni një histori të plotë të veprimeve të kryera përmes konsolës AWS Management Console, AWS SDK, mjeteve të linjës së komandës dhe shërbimeve të tjera AWS.

AWS X-Ray
Ofron një kuptim të plotë në të gjitha fazat e përpunimit të kërkesave në aplikacionin tuaj, mbi bazën e hartës së komponentëve të tij të brendshëm. Lejon analizimin e aplikacioneve gjatë zhvillimit dhe në mjedisin prodhues.

AWS Config
Do të jeni në gjendje të monitoroni ndryshimet e konfigurimit të funksioneve Lambda (përfshirë fshirjen e tyre) dhe mjediseve të ekzekutimit, etiketimeve, emrave të procesorëve, madhësisë së kodit, shpërndarjes së memories, cilësimeve të kohës së pritjes dhe parametrave të paralelizmit, si dhe rolit të ekzekutimit të Lambda IAM, subnetit dhe lidhjes së grupeve të sigurisë.

Përfundimi

AWS Lambda ofron një set të fuqishëm mjetesh për krijimin e aplikacioneve të sigurta dhe të shkallëzuara. Shumë metoda për sigurimin e sigurisë dhe përputhshmërisë në AWS Lambda nuk ndryshojnë nga ato që përdoren në shërbimet e tjera AWS, megjithëse ka disa përjashtime. Në mars 2019, Lambda përputhej me kërkesat SOC 1, SOC 2, SOC 3, PCI DSS, Ligjin amerikan për kontabilitetin dhe përgjegjshmërinë e sigurimeve shëndetësore (HIPAA) dhe rregullore të tjera. Prandaj, kur mendoni të implementoni një aplikacion të ri, merrni parasysh shërbimin AWS Lambda — ndoshta është zgjidhja më e mirë për nevojat tuaja.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster