Analisis rinci AWS Lambda

Terjemahan artikel disiapake khusus kanggo siswa kursus kasebut "Layanan awan". Tertarik ngembangake arah kasebut? Nonton kelas master dening Egor Zuev (TeamLead ing InBit) "Layanan AWS EC2" lan gabung karo klompok kursus sabanjure: diwiwiti tanggal 26 September.

Analisis rinci AWS Lambda

Luwih akeh wong sing pindhah menyang AWS Lambda kanggo skalabilitas, kinerja, tabungan, lan kemampuan kanggo nangani jutaan utawa malah triliunan panjaluk saben wulan. Kanggo nindakake iki, sampeyan ora perlu ngatur infrastruktur sing digunakake layanan kasebut. Lan autoscaling ngidini sampeyan nglayani ewu panjalukan simultan per detik. Aku mikir AWS Lambda bisa diarani minangka salah sawijining layanan AWS sing paling populer.

AWAK Lambda

AWS Lambda minangka layanan komputasi tanpa server sing didorong acara sing ngidini sampeyan mbukak kode tanpa nyedhiyakake utawa ngatur server lan ngluwihi layanan AWS liyane nggunakake logika khusus. Lambda kanthi otomatis nanggapi macem-macem acara (disebut pemicu), kayata panjalukan HTTP liwat Amazon API Gateway, owah-owahan data ing ember Amazon S3 utawa tabel Amazon DynamoDB; utawa sampeyan bisa mbukak kode liwat telpon API nggunakake AWS SDK lan transisi negara ing AWS Step Functions.

Lambda mbukak kode ing infrastruktur komputasi sing kasedhiya banget lan tanggung jawab kanggo ngatur platform dhasar, kalebu pangopènan server lan sistem operasi, penyediaan sumber daya, skala otomatis, ngawasi kode, lan logging. Yaiku, sampeyan mung kudu ngunggah kode lan ngatur carane lan kapan kudu dieksekusi. Sabanjure, layanan kasebut bakal ngurus peluncuran lan njamin kasedhiyan aplikasi sampeyan.

Nalika pindhah menyang Lambda?

AWS Lambda minangka platform komputasi sing trep sing cocog kanggo macem-macem kasus panggunaan, anggere basa lan runtime kode sampeyan didhukung dening layanan kasebut. Yen sampeyan pengin fokus ing kode lan logika bisnis nalika outsourcing pangopènan server, provisioning, lan skala kanthi biaya sing cukup, AWS Lambda mesthi dadi cara.

Lambda becik kanggo nggawe antarmuka program, lan nalika digunakake bebarengan karo API Gateway, sampeyan bisa Ngartekno nyuda biaya lan njaluk menyang pasar luwih cepet. Ana macem-macem cara kanggo nggunakake fungsi lan opsi Lambda kanggo ngatur arsitektur tanpa server - kabeh wong bisa milih sing cocog adhedhasar tujuane.

Lambda ngidini sampeyan nindakake macem-macem tugas. Dadi, thanks kanggo dhukungan CloudWatch, sampeyan bisa nggawe tugas sing ditundha lan ngotomatisasi proses individu. Ora ana watesan babagan sifat lan intensitas panggunaan layanan kasebut (konsumsi memori lan wektu dianggep), lan ora ana sing ngalangi sampeyan kanthi sistematis nggarap layanan mikro lengkap adhedhasar Lambda.

Ing kene sampeyan bisa nggawe tumindak berorientasi layanan sing ora terus-terusan. Conto khas yaiku skala gambar. Malah ing kasus sistem sing disebarake, fungsi Lambda tetep relevan.

Dadi, yen sampeyan ora pengin ngatasi alokasi lan ngatur sumber daya komputasi, coba AWS Lambda; yen sampeyan ora perlu abot, petungan sumber-intensif, uga nyoba AWS Lambda; yen kode mlaku periodik, iku bener, sampeyan kudu nyoba AWS Lambda.

Keamanan

Nganti saiki ora ana keluhan babagan safety. Ing sisih liya, amarga akeh proses internal lan fitur implementasi model iki didhelikake saka pangguna lingkungan runtime sing dikelola AWS Lambda, sawetara aturan keamanan maya sing umum ditampa dadi ora relevan.

Kaya umume layanan AWS, Lambda diwenehake kanthi basis keamanan lan kepatuhan bebarengan antarane AWS lan pelanggan. Prinsip iki nyuda beban operasional ing klien, amarga AWS njupuk tugas kanggo njaga, ngatur lan ngawasi komponen layanan - saka sistem operasi inang lan lapisan virtualisasi menyang keamanan fisik aset infrastruktur.

Khusus babagan AWS Lambda, AWS tanggung jawab kanggo ngatur infrastruktur dhasar, layanan dhasar sing gegandhengan, sistem operasi, lan platform aplikasi. Nalika klien tanggung jawab kanggo keamanan kode kasebut, nyimpen data rahasia, ngontrol akses, uga layanan lan sumber daya Lambda (Manajemen Identitas lan Akses, IAM), kalebu ing watesan fungsi sing digunakake.

Diagram ing ngisor iki nuduhake model tanggung jawab bareng sing ditrapake kanggo AWS Lambda. Tanggung jawab AWS oranye lan Tanggung Jawab Pelanggan biru. Kaya sing sampeyan ngerteni, AWS njupuk tanggung jawab luwih akeh kanggo aplikasi sing dipasang ing layanan kasebut.

Analisis rinci AWS Lambda

Model Tanggung Jawab Bersama Ditrapake kanggo AWS Lambda

Lambda runtime

Kauntungan utama Lambda yaiku kanthi nindakake fungsi kanggo sampeyan, layanan kasebut dhewe nyedhiyakake sumber daya sing dibutuhake. Sampeyan bisa supaya mbuang wektu lan gaweyan ing administrasi sistem lan fokus ing logika bisnis lan coding.

Layanan Lambda dipérang dadi rong pesawat. Sing pertama yaiku bidang kontrol. Miturut Wikipedia, pesawat kontrol minangka bagean saka jaringan sing tanggung jawab kanggo ngangkut lalu lintas lan rute. Iki minangka komponen utama sing nggawe keputusan global babagan nyedhiyakake, nglayani, lan nyebarake beban kerja. Kajaba iku, bidang kontrol tumindak minangka topologi jaringan panyedhiya solusi, tanggung jawab kanggo nuntun lan ngatur lalu lintas.

Bidang kapindho yaiku bidang data. Iku, kaya pesawat kontrol, duwe tugas dhewe. Pesawat kontrol menehi API kanggo ngatur fungsi (CreateFunction, UpdateFunctionCode) lan kontrol carane Lambda komunikasi karo layanan AWS liyane. Pesawat data ngontrol Invoke API, sing nganggo fungsi Lambda. Sawise fungsi diarani, bidang kontrol allocates utawa milih lingkungan runtime ana sing wis disiapake kanggo fungsi sing, lan banjur nglakokaké kode ing.

AWS Lambda ndhukung macem-macem basa pamrograman, kalebu Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, lan liya-liyane, liwat lingkungan runtime masing-masing. AWS nganyari kanthi rutin, nyebarake patch keamanan, lan nindakake kegiatan pangopènan liyane ing lingkungan kasebut. Lambda ngidini sampeyan nggunakake basa liyane uga, yen sampeyan nindakake runtime sing cocog dhewe. Banjur sampeyan kudu ngurus pangopènan, kalebu ngawasi safety.

Kepiye carane kabeh lan kepiye layanan bakal nindakake fungsi sampeyan?

Saben fungsi mlaku ing siji utawa luwih lingkungan darmabakti, kang ana mung kanggo urip fungsi lan banjur numpes. Saben lingkungan nggawe mung siji telpon ing wektu, nanging digunakake maneh yen ana sawetara telpon serial kanggo fungsi padha. Kabeh lingkungan runtime mlaku ing mesin virtual kanthi virtualisasi hardware - sing disebut microVMs. Saben microVM ditugasake menyang akun AWS tartamtu lan bisa digunakake maneh dening lingkungan kanggo nindakake fungsi sing beda ing akun kasebut. MicroVMs dikemas dadi blok bangunan platform hardware Lambda Worker, sing diduweni lan dilakokno dening AWS. Runtime sing padha ora bisa digunakake dening fungsi sing beda-beda, uga microVM ora unik kanggo akun AWS sing beda.

Analisis rinci AWS Lambda

Model Isolasi AWS Lambda

Isolasi lingkungan runtime ditindakake kanthi nggunakake sawetara mekanisme. Ing tingkat ndhuwur saben lingkungan ana salinan kapisah saka komponen ing ngisor iki:

  • Kode fungsi
  • Sembarang lapisan Lambda sing dipilih kanggo fungsi kasebut
  • Lingkungan eksekusi fungsi
  • Ruang pangguna minimal adhedhasar Amazon Linux

Mekanisme ing ngisor iki digunakake kanggo ngisolasi lingkungan eksekusi sing beda:

  • cgroups - matesi akses menyang CPU, memori, panyimpenan lan sumber daya jaringan kanggo saben lingkungan runtime;
  • namespaces - ID proses klompok, ID pangguna, antarmuka jaringan lan sumber daya liyane sing dikelola dening kernel Linux. Saben runtime mlaku ing namespace dhewe;
  • seccomp-bpf - matesi telpon sistem sing bisa digunakake ing runtime;
  • iptables lan tabel routing - isolasi lingkungan eksekusi saka saben liyane;
  • chroot - nyedhiyakake akses winates menyang sistem file sing ndasari.

Digabungake karo teknologi isolasi kepemilikan AWS, mekanisme kasebut njamin pemisahan runtime sing dipercaya. Lingkungan sing diisolasi kanthi cara iki ora bisa ngakses utawa ngowahi data saka lingkungan liyane.

Nalika sawetara runtimes akun AWS padha bisa mbukak ing microVM siji, ing kahanan apa microVMs bisa dienggo bareng antarane akun AWS beda. AWS Lambda mung nggunakake rong mekanisme kanggo ngisolasi microVMs: kedadean EC2 lan Firecracker. Pengasingan tamu ing Lambda adhedhasar conto EC2 wis ana wiwit taun 2015. Firecracker minangka hypervisor open source anyar sing dirancang khusus dening AWS kanggo beban kerja tanpa server lan dikenalake ing 2018. Perangkat keras fisik sing mlaku microVMs dituduhake ing antarane beban kerja ing macem-macem akun.

Nyimpen lingkungan lan negara proses

Senajan runtime Lambda unik kanggo macem-macem fungsi, nanging bisa nelpon fungsi sing padha bola-bali, tegese runtime bisa urip sawetara jam sadurunge dirusak.

Saben runtime Lambda uga nduweni sistem file sing bisa ditulis sing bisa diakses liwat direktori /tmp. Isine ora bisa diakses saka runtime liyane. Ing babagan ketekunan negara proses, file sing ditulis menyang / tmp ana kanggo kabeh siklus urip lingkungan runtime. Iki ngidini asil sawetara telpon bisa diklumpukake, sing migunani utamane kanggo operasi sing larang kayata ngemot model pembelajaran mesin.

Transfer data telpon

API Invoke bisa digunakake ing rong mode: mode acara lan mode panjalukan-respon. Ing mode acara, telpon ditambahake menyang antrian kanggo eksekusi mengko. Ing mode panjalukan-respon, fungsi kasebut langsung diarani kanthi muatan sing diwenehake, sawise respon kasebut bali. Ing kasus kasebut, fungsi kasebut mlaku ing lingkungan Lambda, nanging kanthi jalur muatan sing beda.

Sajrone telpon nanggepi panjaluk, muatan kasebut mili saka API pangolahan panjalukan (API Caller), kayata AWS API Gateway utawa AWS SDK, menyang load balancer, banjur menyang layanan telpon Lambda (Invoke Service). Sing terakhir nemtokake lingkungan sing cocog kanggo nglakokake fungsi kasebut lan ngliwati muatan ana kanggo ngrampungake telpon. Load balancer nampa lalu lintas sing dilindhungi TLS liwat Internet. Lalu lintas ing layanan Lambda-sawise load balancer-liwat VPC internal ing wilayah AWS tartamtu.

Analisis rinci AWS Lambda

Model Pangolahan Telpon AWS Lambda: Mode Panjaluk-Respon

Telpon acara bisa langsung digawe utawa ditambahake menyang antrian. Ing sawetara kasus, antrian dileksanakake nggunakake Amazon SQS (Amazon Simple Queue Service), sing ngirim telpon menyang layanan pemenuhan panggilan Lambda liwat proses poller internal. Lalu lintas sing ditularake dilindhungi dening TLS, lan ora ana enkripsi data tambahan sing disimpen ing Amazon SQS.

Telpon acara ora menehi respon - Lambda Worker mung nglirwakake informasi respon apa wae. Telpon adhedhasar acara saka Amazon S3, Amazon SNS, CloudWatch, lan sumber liyane diproses dening Lambda ing mode acara. Telpon saka aliran Amazon Kinesis lan DynamoDB, antrian SQS, Application Load Balancer, lan telpon API Gateway diproses kanthi cara nanggepi panjaluk.

Ngawasi

Sampeyan bisa ngawasi lan ngawasi fungsi Lambda nggunakake macem-macem mekanisme lan layanan AWS, kalebu ing ngisor iki.

amazoncloudwatch
Nglumpukake macem-macem statistik kayata jumlah panjalukan, durasi panjalukan, lan jumlah panjaluk sing gagal.

Amazon CloudTrail
Ngidini sampeyan nyathet, terus ngawasi, lan njaga informasi kegiatan akun sing ana gandhengane karo infrastruktur AWS sampeyan. Sampeyan bakal duwe riwayat lengkap tumindak sing ditindakake nggunakake AWS Management Console, AWS SDK, alat baris perintah, lan layanan AWS liyane.

AWS X-Ray
Nyedhiyakake visibilitas lengkap menyang kabeh tahap pangolahan panjalukan ing aplikasi sampeyan adhedhasar peta komponen internal. Ngidini sampeyan nganalisa aplikasi sajrone pangembangan lan ing lingkungan produksi.

Konfigurasi AWS
Sampeyan bakal bisa nglacak owah-owahan ing konfigurasi fungsi Lambda (kalebu pambusakan) lan runtime, tags, jeneng handler, ukuran kode, alokasi memori, setelan wektu entek lan setelan concurrency, uga Lambda IAM peran eksekusi, subnetting, lan bindings grup keamanan. .

kesimpulan

AWS Lambda nawakake set alat sing kuat kanggo mbangun aplikasi sing aman lan bisa diukur. Akeh praktik keamanan lan kepatuhan ing AWS Lambda padha karo layanan AWS liyane, sanajan ana pangecualian. Wiwit Maret 2019, Lambda tundhuk karo kepatuhan SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA), lan peraturan liyane. Dadi, yen sampeyan mikir babagan ngetrapake aplikasi sabanjure, coba layanan AWS Lambda - bisa uga paling pas kanggo tugas sampeyan.

Source: www.habr.com

Add a comment