Detaljna analiza AWS Lambda

Prijevod članka pripremljen je posebno za studente kolegija "Usluge u oblaku". Zainteresirani ste za razvoj u ovom smjeru? Pogledajte majstorski tečaj Egora Zueva (TeamLead na InBitu) "AWS EC2 usluga" i pridružite se sljedećoj grupi tečaja: počinje 26. rujna.

Detaljna analiza AWS Lambda

Sve više ljudi migrira na AWS Lambda zbog skalabilnosti, performansi, ušteda i mogućnosti obrade milijuna ili čak trilijuna zahtjeva mjesečno. Da biste to učinili, ne morate upravljati infrastrukturom na kojoj se usluga izvodi. A automatsko skaliranje vam omogućuje posluživanje tisuća istodobnih zahtjeva u sekundi. Mislim da se AWS Lambda s pravom može nazvati jednom od najpopularnijih AWS usluga.

AWS Lambda

AWS Lambda je računalna usluga bez poslužitelja vođena događajima koja vam omogućuje pokretanje koda bez pružanja ili upravljanja poslužiteljima i proširenje drugih AWS usluga korištenjem prilagođene logike. Lambda automatski odgovara na različite događaje (zvane okidači), kao što su HTTP zahtjevi putem Amazon API Gatewaya, promjene podataka u Amazon S3 segmentima ili Amazon DynamoDB tablicama; ili možete pokrenuti svoj kod kroz API pozive koristeći AWS SDK i prijelaze stanja u AWS Step Functions.

Lambda pokreće kod na visoko dostupnoj računalnoj infrastrukturi i u potpunosti je odgovoran za administriranje temeljne platforme, uključujući održavanje poslužitelja i operativnog sustava, pružanje resursa, automatsko skaliranje, praćenje koda i bilježenje. To jest, samo trebate učitati svoj kod i konfigurirati kako i kada bi se trebao izvršiti. Zauzvrat, servis će se pobrinuti za njegovo pokretanje i osigurati visoku dostupnost vaše aplikacije.

Kada prijeći na Lambdu?

AWS Lambda je praktična računalna platforma koja je prikladna za razne slučajeve upotrebe, sve dok usluga podržava jezik i vrijeme izvođenja vašeg koda. Ako se želite usredotočiti na svoj kod i poslovnu logiku, a uz razumnu cijenu prepustiti outsourcingu održavanja poslužitelja, pružanja usluga i skaliranja, AWS Lambda je definitivno pravi put.

Lambda je idealna za kreiranje programskih sučelja, a kada se koristi u kombinaciji s API Gatewayom, možete značajno smanjiti troškove i brže doći na tržište. Postoje različiti načini korištenja Lambda funkcija i opcija za organiziranje arhitekture bez poslužitelja - svatko može odabrati nešto prikladno na temelju svog cilja.

Lambda vam omogućuje obavljanje širokog spektra zadataka. Stoga, zahvaljujući podršci za CloudWatch, možete kreirati odgođene zadatke i automatizirati pojedinačne procese. Nema ograničenja u pogledu prirode i intenziteta korištenja usluge (uzimaju se u obzir potrošnja memorije i vrijeme), a ništa vas ne sprječava da sustavno radite na punopravnom mikroservisu temeljenom na Lambdi.

Ovdje možete kreirati radnje orijentirane na uslugu koje se ne izvode kontinuirano. Tipičan primjer je skaliranje slike. Čak iu slučaju distribuiranih sustava, Lambda funkcije ostaju relevantne.

Dakle, ako se ne želite baviti dodjelom i upravljanjem računalnim resursima, isprobajte AWS Lambda; ako vam nisu potrebni teški proračuni koji zahtijevaju velike resurse, isprobajte i AWS Lambda; ako se vaš kod povremeno pokreće, to je točno, trebali biste isprobati AWS Lambda.

sigurnosti

Za sada nema pritužbi na sigurnost. S druge strane, budući da su mnogi interni procesi i značajke implementacije ovog modela skriveni od korisnika AWS Lambda upravljanog runtime okruženja, neka općeprihvaćena pravila sigurnosti u oblaku postaju nevažna.

Kao i većina AWS usluga, Lambda se pruža na temelju zajedničke sigurnosti i usklađenosti između AWS-a i korisnika. Ovo načelo smanjuje operativno opterećenje klijenta, budući da AWS preuzima zadatke održavanja, administriranja i nadzora komponenti usluge - od glavnog operativnog sustava i virtualizacijskog sloja do fizičke sigurnosti infrastrukturnih sredstava.

Konkretno govoreći o AWS Lambda, AWS je odgovoran za upravljanje temeljnom infrastrukturom, povezanim temeljnim uslugama, operativnim sustavom i aplikacijskom platformom. Dok je klijent odgovoran za sigurnost svog koda, pohranjivanje povjerljivih podataka, kontrolu pristupa njima, kao i Lambda usluzi i resursima (Identity and Access Management, IAM), uključujući i unutar granica funkcija koje se koriste.

Donji dijagram prikazuje model podijeljene odgovornosti koji se primjenjuje na AWS Lambda. AWS Responsibility je narančasta, a Customer Responsibility plava. Kao što vidite, AWS preuzima veću odgovornost za aplikacije postavljene na uslugu.

Detaljna analiza AWS Lambda

Model podijeljene odgovornosti primjenjiv na AWS Lambda

Lambda vrijeme izvođenja

Glavna prednost Lambde je da obavljanjem funkcije u vaše ime, usluga sama dodjeljuje potrebne resurse. Možete izbjeći gubljenje vremena i truda na administraciju sustava i fokusirati se na poslovnu logiku i kodiranje.

Lambda usluga je podijeljena u dvije ravnine. Prva je kontrolna ravnina. Prema Wikipediji, kontrolna ravnina je dio mreže odgovoran za prijenos signalnog prometa i usmjeravanje. To je primarna komponenta koja donosi globalne odluke o pružanju, servisiranju i distribuciji radnih opterećenja. Osim toga, kontrolna ravnina djeluje kao mrežna topologija davatelja rješenja, odgovorna za usmjeravanje i upravljanje prometom.

Druga ravnina je podatkovna ravnina. Ona, poput kontrolne ravnine, ima svoje zadatke. Kontrolna ravnina pruža API-je za upravljanje funkcijama (CreateFunction, UpdateFunctionCode) i kontrolira kako Lambda komunicira s drugim AWS uslugama. Podatkovna ravnina kontrolira Invoke API, koji pokreće Lambda funkcije. Nakon što se funkcija pozove, kontrolna ravnina dodjeljuje ili odabire postojeće okruženje za izvođenje koje je unaprijed pripremljeno za tu funkciju, a zatim izvršava kod u njemu.

AWS Lambda podržava niz programskih jezika, uključujući Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 i druge, kroz njihova odgovarajuća runtime okruženja. AWS ih redovito ažurira, distribuira sigurnosne zakrpe i obavlja druge aktivnosti održavanja na tim okruženjima. Lambda vam omogućuje korištenje i drugih jezika, pod uvjetom da sami implementirate odgovarajuće vrijeme izvođenja. A onda ćete se morati pobrinuti za njegovo održavanje, uključujući praćenje njegove sigurnosti.

Kako to sve funkcionira i kako će služba obavljati vaše funkcije?

Svaka funkcija radi u jednom ili više namjenskih okruženja, koja postoje samo tijekom trajanja te funkcije, a zatim se uništavaju. Svako okruženje upućuje samo jedan poziv u isto vrijeme, ali on se ponovno koristi ako postoji više serijskih poziva prema istoj funkciji. Sva runtime okruženja rade na virtualnim strojevima s hardverskom virtualizacijom - takozvanim microVM-ovima. Svaki microVM dodijeljen je određenom AWS računu i okruženja ga mogu ponovno koristiti za izvođenje različitih funkcija unutar tog računa. MicroVM-ovi su pakirani u građevne blokove hardverske platforme Lambda Worker, koja je u vlasništvu i kojom upravlja AWS. Isto vrijeme izvođenja ne mogu koristiti različite funkcije, niti su microVM-ovi jedinstveni za različite AWS račune.

Detaljna analiza AWS Lambda

AWS Lambda izolacijski model

Izolacija runtime okruženja implementirana je pomoću nekoliko mehanizama. Na najvišoj razini svakog okruženja postoje zasebne kopije sljedećih komponenti:

  • Kod funkcije
  • Svi Lambda slojevi odabrani za funkciju
  • Okruženje za izvođenje funkcija
  • Minimalni korisnički prostor temeljen na Amazon Linuxu

Sljedeći mehanizmi koriste se za izolaciju različitih izvršnih okruženja:

  • cgroups - ograničite pristup CPU-u, memoriji, pohrani i mrežnim resursima za svako runtime okruženje;
  • namespaces - grupiranje ID-ova procesa, ID-ova korisnika, mrežnih sučelja i drugih resursa kojima upravlja Linux kernel. Svako runtime radi u vlastitom imenskom prostoru;
  • seccomp-bpf - ograničava sistemske pozive koji se mogu koristiti u vremenu izvođenja;
  • iptables i tablice usmjeravanja - izolacija izvršnih okruženja jedna od druge;
  • chroot - pruža ograničeni pristup osnovnom datotečnom sustavu.

U kombinaciji s vlastitim tehnologijama izolacije AWS-a, ovi mehanizmi osiguravaju pouzdano odvajanje vremena izvođenja. Ovako izolirana okruženja ne mogu pristupiti niti mijenjati podatke iz drugih okruženja.

Iako se više vremena izvođenja istog AWS računa može izvoditi na jednom microVM-u, ni pod kojim okolnostima se microVM-ovi ne mogu dijeliti između različitih AWS računa. AWS Lambda koristi samo dva mehanizma za izolaciju microVM: EC2 instance i Firecracker. Izolacija gostiju u Lambdi na temelju EC2 instanci postoji od 2015. Firecracker je novi hipervizor otvorenog koda koji je posebno dizajnirao AWS za radna opterećenja bez poslužitelja i predstavljen 2018. Fizički hardver koji pokreće microVM dijeli se između radnih opterećenja na različitim računima.

Spremanje okruženja i stanja procesa

Iako su Lambda runtimei jedinstveni za različite funkcije, oni mogu više puta pozivati ​​istu funkciju, što znači da runtime može preživjeti nekoliko sati prije nego što bude uništen.

Svako Lambda runtime također ima sustav datoteka u koji se može pisati i kojem se može pristupiti kroz /tmp direktorij. Njegovom sadržaju nije moguće pristupiti iz drugih runtimea. Što se tiče postojanosti stanja procesa, datoteke zapisane u /tmp postoje tijekom cijelog životnog ciklusa runtime okruženja. To omogućuje akumulaciju rezultata višestrukih poziva, što je posebno korisno za skupe operacije kao što je učitavanje modela strojnog učenja.

Prijenos podataka poziva

Invoke API može se koristiti u dva načina: način događaja i način zahtjeva-odgovora. U načinu rada događaja, poziv se dodaje u red za kasnije izvršenje. U načinu rada zahtjev-odgovor, funkcija se trenutno poziva s pruženim sadržajem, nakon čega se vraća odgovor. U oba slučaja, funkcija radi u Lambda okruženju, ali s različitim putevima korisnog opterećenja.

Tijekom poziva zahtjev-odgovor, korisni teret teče od API-ja za obradu zahtjeva (API Caller), kao što je AWS API Gateway ili AWS SDK, do balansera opterećenja, a zatim do usluge Lambda poziva (Invoke Service). Potonji određuje odgovarajuće okruženje za izvršavanje funkcije i prosljeđuje korisni teret tamo da dovrši poziv. Uravnoteživač opterećenja prima promet zaštićen TLS-om preko interneta. Promet unutar Lambda usluge—nakon balansera opterećenja—prolazi kroz interni VPC u određenoj AWS regiji.

Detaljna analiza AWS Lambda

AWS Lambda model obrade poziva: Režim zahtjeva-odgovora

Pozivi za događaje mogu se uputiti odmah ili dodati u red čekanja. U nekim slučajevima, red čekanja implementiran je pomoću Amazon SQS (Amazon Simple Queue Service), koji prosljeđuje pozive Lambda usluzi ispunjenja poziva kroz interni proces anketiranja. Preneseni promet zaštićen je TLS-om, a nema dodatne enkripcije podataka pohranjenih u Amazon SQS.

Pozivi događaja ne vraćaju odgovore — Lambda Worker jednostavno ignorira bilo kakve informacije o odgovoru. Pozive temeljene na događajima s Amazon S3, Amazon SNS, CloudWatch i drugih izvora obrađuje Lambda u načinu rada događaja. Pozivi iz Amazon Kinesis i DynamoDB streamova, SQS redova čekanja, Application Load Balancera i API Gateway poziva obrađuju se na način zahtjev-odgovor.

nadgledanje

Možete nadzirati i revidirati Lambda funkcije pomoću raznih AWS mehanizama i usluga, uključujući sljedeće.

amazoncloudwatch
Prikuplja razne statistike kao što su broj zahtjeva, trajanje zahtjeva i broj zahtjeva koji nisu uspjeli.

Amazon CloudTrail
Omogućuje vam bilježenje, kontinuirano praćenje i održavanje informacija o aktivnosti računa povezanih s vašom AWS infrastrukturom. Imat ćete potpunu povijest radnji izvedenih korištenjem AWS konzole za upravljanje, AWS SDK-a, alata naredbenog retka i drugih AWS usluga.

AWS X-zraka
Pruža potpuni pregled svih faza obrade zahtjeva u vašoj aplikaciji na temelju mape njezinih internih komponenti. Omogućuje analizu aplikacija tijekom razvoja iu proizvodnim okruženjima.

AWS Config
Moći ćete pratiti promjene konfiguracije funkcije Lambda (uključujući brisanje) i vremena izvođenja, oznake, nazive rukovatelja, veličinu koda, dodjelu memorije, postavke vremenskog ograničenja i postavke istodobnosti, kao i ulogu izvršavanja Lambda IAM, podmreže i veza sigurnosne grupe .

Zaključak

AWS Lambda nudi snažan skup alata za izgradnju sigurnih i skalabilnih aplikacija. Mnoge prakse sigurnosti i usklađenosti u AWS Lambda iste su kao i u drugim AWS uslugama, iako postoje iznimke. Od ožujka 2019. Lambda je u skladu sa SOC 1, SOC 2, SOC 3, PCI DSS, usklađenošću sa Zakonom o prenosivosti i odgovornosti zdravstvenog osiguranja (HIPAA) i drugim propisima. Dakle, kada razmišljate o implementaciji svoje sljedeće aplikacije, razmislite o usluzi AWS Lambda - ona bi mogla biti najbolja za vaš zadatak.

Izvor: www.habr.com

Dodajte komentar