Analisi dettagliata di AWS Lambda

A traduzzione di l'articulu hè stata preparata apposta per i studienti di u corsu "Servizi cloud". Interessatu à sviluppà in questa direzzione? Fighjate a master class di Egor Zuev (TeamLead à InBit) "Serviziu AWS EC2" è unisce à u prossimu gruppu di corsu : principia u 26 di sittembri.

Analisi dettagliata di AWS Lambda

Più persone migranu à AWS Lambda per scalabilità, prestazione, risparmiu, è a capacità di gestisce milioni o ancu trilioni di richieste per mese. Per fà questu, ùn avete micca bisognu di gestisce l'infrastruttura nantu à quale u serviziu viaghja. È l'autoscaling vi permette di serve migliaia di dumande simultanee per seconda. Pensu chì AWS Lambda pò esse chjamatu unu di i servizii AWS più populari.

AWS Lambda

AWS Lambda hè un serviziu di calculu senza servitore guidatu da eventi chì vi permette di eseguisce codice senza furnisce o gestisce i servitori è estende altri servizii AWS utilizendu logica persunalizata. Lambda risponde automaticamente à diversi avvenimenti (chjamati triggers), cum'è richieste HTTP attraversu Amazon API Gateway, cambiamenti di dati in buckets Amazon S3 o tabelle Amazon DynamoDB; o pudete eseguisce u vostru codice attraversu chiamate API utilizendu l'SDK AWS è e transizioni di statu in AWS Step Functions.

Lambda esegue u codice nantu à una infrastruttura informatica altamente dispunibile è hè cumplettamente rispunsevule per l'amministrazione di a piattaforma sottostante, cumpresa u mantenimentu di u servitore è u sistema operatore, l'approvvigionamentu di risorse, l'autoscaling, u monitoraghju di u codice è u logu. Vale à dì, basta à carica u vostru codice è cunfigurà cumu è quandu deve esse eseguitu. À u turnu, u serviziu hà da piglià cura di u so lanciamentu è assicurà una alta dispunibilità di a vostra applicazione.

Quandu passà à Lambda?

AWS Lambda hè una piattaforma informatica cunvene chì hè adattata per una varietà di casi d'usu, sempre chì a lingua è u runtime di u vostru codice sò supportati da u serviziu. Se vulete fucalizza nantu à u vostru codice è a logica di l'impresa mentre esternalizza u mantenimentu di u servitore, l'approvvigionamentu è a scala à un costu raghjone, AWS Lambda hè sicuramente u modu da andà.

Lambda hè ideale per creà interfacce di prugrammazione, è quandu s'utilice in cunjunzione cù API Gateway, pudete riduce significativamente i costi è ghjunghje à u mercatu più veloce. Ci hè parechje manere di utilizà e funzioni Lambda è l'opzioni per urganizà una architettura senza servitore - ognunu pò sceglie qualcosa adattatu basatu annantu à u so scopu.

Lambda permette di fà una larga gamma di attività. Cusì, grazia à u supportu CloudWatch, pudete creà attività differite è automatizà i prucessi individuali. Ùn ci hè micca restrizioni à a natura è a intensità di l'usu di u serviziu (u cunsumu di memoria è u tempu sò cunsiderati), è nunda ùn impedisce di travaglià sistematicamente in un microserviziu cumpletu basatu in Lambda.

Quì pudete creà azioni orientate à u serviziu chì ùn viaghjanu micca continuamente. Un esempiu tipicu hè a scala di l'imagine. Ancu in u casu di sistemi distribuiti, e funzioni Lambda restanu pertinenti.

Allora, se ùn vulete micca trattà cù l'assignazione è a gestione di risorse di l'informatica, pruvate AWS Lambda; Se ùn avete micca bisognu di calculi pisanti è intensivi di risorse, pruvate ancu AWS Lambda; se u vostru codice corre periodicamente, hè ghjustu, duvete pruvà AWS Lambda.

Seguretat

Finu a ora ùn ci hè micca lagnanza nantu à a sicurità. Per d 'altra banda, postu chì parechji di i prucessi interni è e funzioni di implementazione di stu mudellu sò oculati da l'utilizatori di l'ambiente di runtime amministratu AWS Lambda, alcune regule generalmente accettate di sicurità di nuvola diventanu irrilevanti.

Cum'è a maiò parte di i servizii AWS, Lambda hè furnitu nantu à una basa di sicurezza è cunfurmità spartuti trà AWS è u cliente. Stu principiu riduce a carica operativa nantu à u cliente, postu chì AWS assume i compiti di mantene, amministrà è monitorizà i cumpunenti di u serviziu - da u sistema operatore host è a strata di virtualizazione à a sicurità fisica di l'assi infrastrutturali.

Parlendu specificamente di AWS Lambda, AWS hè rispunsevule per a gestione di l'infrastruttura sottostante, i servizii sottostanti associati, u sistema operatore è a piattaforma di l'applicazione. Mentri u cliente hè rispunsevuli di a sicurità di u so codice, almacenà dati cunfidenziale, cuntrullà l'accessu à questu, è ancu à u serviziu Lambda è risorse (Identity and Access Management, IAM), ancu in i limiti di e funzioni utilizati.

U diagramma quì sottu mostra u mudellu di rispunsabilità cumuna cumu si applica à AWS Lambda. A Responsabilità AWS hè aranciu è a Responsabilità di u Cliente hè blu. Comu pudete vede, AWS assume più rispunsabilità per l'applicazioni implementate nantu à u serviziu.

Analisi dettagliata di AWS Lambda

Modellu di Responsabilità Condivisa Applicabile à AWS Lambda

Lambda runtime

U vantaghju principalu di Lambda hè chì, esercitu una funzione in u vostru nome, u serviziu stessu attribuisce i risorse necessarii. Pudete evità di perde u tempu è u sforzu in l'amministrazione di u sistema è fucalizza nantu à a logica di l'affari è a codificazione.

U serviziu Lambda hè divisu in dui piani. U primu hè u pianu di cuntrollu. Sicondu Wikipedia, u pianu di cuntrollu hè a parte di a reta rispunsevuli di u trasportu di u trafficu di signalazione è di u routing. Hè u cumpunente primariu chì face decisioni glubale nantu à l'approvvigionamentu, u serviziu è a distribuzione di carichi di travagliu. Inoltre, u pianu di cuntrollu agisce cum'è a topologia di a rete di u fornitore di suluzione, rispunsevuli di u routing è a gestione di u trafficu.

U sicondu pianu hè u pianu di dati. Hè, cum'è u pianu di cuntrollu, hà u so propiu compitu. U pianu di cuntrollu furnisce API per a gestione di funzioni (CreateFunction, UpdateFunctionCode) è cuntrolla cumu Lambda cumunica cù altri servizii AWS. U pianu di dati cuntrolla l'API Invoke, chì esegue funzioni Lambda. Dopu chì una funzione hè chjamata, u pianu di cuntrollu attribuisce o selezziunate un ambiente di runtime esistente chì hè pre-preparatu per quella funzione, è poi eseguisce u codice in questu.

AWS Lambda supporta una varietà di linguaggi di prugrammazione, cumprese Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, è altri, attraversu i so ambienti di runtime rispettivi. AWS li aghjurnà regularmente, distribuisce patch di sicurezza è esegue altre attività di mantenimentu in questi ambienti. Lambda vi permette di usà ancu altre lingue, basta chì implementate u runtime adattatu stessu. È tandu vi tuccherà à piglià cura di u so mantenimentu, cumpresi a surviglianza di a so sicurità.

Cumu funziona tuttu è cumu u serviziu farà e vostre funzioni?

Ogni funzione corre in unu o più ambienti dedicati, chì esistenu solu per a vita di quella funzione è sò poi distrutti. Ogni ambiente face solu una chjama à u mumentu, ma hè riutilizatu s'ellu ci sò parechje chjama seriali à a listessa funzione. Tutti l'ambienti di runtime funzionanu in macchine virtuali cù virtualizazione hardware - i cosiddetti microVM. Ogni microVM hè assignatu à un contu AWS specificu è pò esse riutilizatu da l'ambienti per eseguisce diverse funzioni in quellu contu. I MicroVM sò imballati in blocchi di costruzione di a piattaforma hardware Lambda Worker, chì hè posseduta è operata da AWS. U listessu runtime ùn pò micca esse usatu da diverse funzioni, nè microVM ùn sò unichi per diversi cunti AWS.

Analisi dettagliata di AWS Lambda

AWS Lambda Isolation Model

L'isolamentu di l'ambienti runtime hè implementatu cù parechji miccanismi. À u livellu superiore di ogni ambiente ci sò copie separate di i seguenti cumpunenti:

  • Codice di funzione
  • Ogni strati Lambda selezziunati per a funzione
  • Ambiente di esecuzione di funzioni
  • Spaziu minimu d'utilizatori basatu annantu à Amazon Linux

I seguenti meccanismi sò usati per isolà diversi ambienti di esecuzione:

  • cgroups - limità l'accessu à CPU, memoria, almacenamiento è risorse di rete per ogni ambiente di runtime;
  • namespaces - raggruppamenti ID di prucessu, ID d'utilizatori, interfacce di rete è altre risorse gestite da u kernel Linux. Ogni runtime corre in u so propiu namespace;
  • seccomp-bpf - restringe e chjama di u sistema chì ponu esse utilizati in u runtime;
  • iptables è routing tables - isolamentu di l'ambienti di esecuzione l'un l'altru;
  • chroot - furnisce un accessu limitatu à u sistema di schedari sottu.

Cumbinati cù tecnulugii di isolamentu proprietarii AWS, questi meccanismi assicuranu una separazione di runtime affidabile. Ambienti isolati in questu modu ùn ponu micca accede o mudificà e dati da altri ambienti.

Ancu se parechji runtimes di u stessu contu AWS ponu eseguisce nantu à una sola microVM, in nessuna circustanza i microVM ponu esse spartuti trà diversi cunti AWS. AWS Lambda usa solu dui meccanismi per isolà i microVM: istanze EC2 è Firecracker. L'isulazione di l'ospiti in Lambda basatu annantu à l'istanze EC2 hè stata dapoi u 2015. Firecracker hè un novu hypervisor open source cuncepitu specificamente da AWS per carichi di travagliu senza servitore è introduttu in 2018. U hardware fisicu chì esegue microVM hè spartutu trà carichi di travagliu in diversi cunti.

Salvà ambienti è stati di prucessu

Ancu se i runtimes Lambda sò unichi per e diverse funzioni, ponu chjamà a listessa funzione ripetutamente, vale à dì chì u runtime pò sopravvive per parechje ore prima di esse distruttu.

Ogni runtime Lambda hà ancu un sistema di fugliale scrivibile accessibile attraversu u cartulare /tmp. U so cuntenutu ùn pò esse accessu da altri runtimes. In quantu à a persistenza di u statu di prucessu, i schedarii scritti à / tmp esistenu per tuttu u ciclu di vita di l'ambiente runtime. Questu permette à i risultati di parechje chjamate per esse accumulate, chì hè soprattuttu utile per operazioni caru cum'è caricate mudelli di apprendimentu di machine.

Chjamate u trasferimentu di dati

L'API Invoke pò esse usata in dui modi: u modu di avvenimentu è u modu di dumanda-risposta. In u modu di l'avvenimentu, a chjama hè aghjuntu à una fila per eseguisce dopu. In u modu di dumanda-risposta, a funzione hè chjamata istantaneamente cù u payload furnitu, dopu chì a risposta hè tornata. In i dui casi, a funzione eseguisce in un ambiente Lambda, ma cù percorsi di carichi diversi.

Durante e chjama di a dumanda-risposta, u payload scorre da una API di elaborazione di richieste (API Caller), cum'è AWS API Gateway o AWS SDK, à u bilanciatore di carica, è dopu à u serviziu di chjama Lambda (Invoke Service). L'ultime determina l'ambiente adattatu per eseguisce a funzione è passa a carica utile quì per compie a chjama. U bilanciu di carica riceve u trafficu TLS-protetti nantu à Internet. U trafficu in u serviziu Lambda, dopu à u bilanciu di carica, passa per un VPC internu in una regione AWS specifica.

Analisi dettagliata di AWS Lambda

AWS Lambda Call Processing Model: Modu di dumanda-risposta

E chjama di l'avvenimentu ponu esse fatte immediatamente o aghjunte à una fila. In certi casi, a fila hè implementata cù Amazon SQS (Amazon Simple Queue Service), chì passa e chjama à u serviziu di cumpiimentu di chjama Lambda attraversu un prucessu di poller internu. U trafficu trasmessu hè prutettu da TLS, è ùn ci hè micca una criptografia supplementaria di dati almacenati in Amazon SQS.

E chjama di l'avvenimentu ùn restituiscenu micca risposte - u Lambda Worker ignora solu ogni infurmazione di risposta. E chjamate basate nantu à l'avvenimenti da Amazon S3, Amazon SNS, CloudWatch è altre fonti sò processate da Lambda in modu di avvenimentu. I chjamati da Amazon Kinesis è DynamoDB streams, SQS queues, Application Load Balancer, è e chiamate API Gateway sò processati in modu di dumanda-risposta.

Monitoramentu

Pudete monitorà è audità e funzioni Lambda utilizendu una varietà di meccanismi è servizii AWS, cumprese i seguenti.

amazoncloudwatch
Raccoglie diverse statistiche cum'è u numeru di richieste, a durata di e dumande è u numeru di richieste chì anu fallutu.

Amazon CloudTrail
Permette di logà, monitorizà continuamente è mantene l'infurmazioni di l'attività di u contu assuciata cù a vostra infrastruttura AWS. Averete una storia completa di l'azzioni eseguite cù l'AWS Management Console, AWS SDK, strumenti di linea di cummanda è altri servizii AWS.

AWS X-Ray
Fornisce una visibilità cumpleta in tutte e tappe di u processu di a dumanda in a vostra applicazione basatu annantu à una mappa di i so cumpunenti interni. Permette di analizà l'applicazioni durante u sviluppu è in ambienti di produzzione.

AWS Config
Puderete seguità i cambiamenti à a cunfigurazione di a funzione Lambda (cumpresa l'eliminazione) è runtimes, tags, nomi di gestori, dimensione di codice, allocazione di memoria, paràmetri di timeout è paràmetri di cuncurrenza, è ancu u rolu di esecuzione di Lambda IAM, subnetting è associazioni di gruppi di sicurezza. .

cunchiusioni

AWS Lambda offre un putente set di strumenti per custruisce applicazioni sicure è scalabili. Parechje di e pratiche di sicurezza è di conformità in AWS Lambda sò listessi in altri servizii AWS, ancu s'ellu ci sò eccezzioni. Da marzu di u 2019, Lambda hè cumpletu cù SOC 1, SOC 2, SOC 3, PCI DSS, Conformità di l'Attu di Portabilità è Responsabilità di l'Assicuranza Sanitaria (HIPAA) è altre regulazioni. Allora, quandu pensate à implementà a vostra prossima applicazione, cunzidira u serviziu AWS Lambda - pò esse u megliu adattatu per u vostru compitu.

Source: www.habr.com

Add a comment