Analisis lengkep AWS Lambda

Tarjamahan artikel ieu disiapkeun husus pikeun siswa tangtu "Layanan awan". Kabetot dina ngembangkeun arah ieu? Nonton kelas master ku Egor Zuev (TeamLead di InBit) "Layanan AWS EC2" sareng gabung ka grup kursus salajengna: dimimitian dina 26 Séptémber.

Analisis lengkep AWS Lambda

Langkung seueur jalma anu migrasi ka AWS Lambda pikeun skalabilitas, kinerja, tabungan, sareng kamampuan pikeun nanganan jutaan bahkan triliunan pamundut per bulan. Jang ngalampahkeun ieu, anjeun henteu kedah ngatur infrastruktur dimana jasa dijalankeun. Jeung autoscaling ngidinan Anjeun pikeun ngalayanan rébuan requests simultaneous per detik. Jigana AWS Lambda bisa rightfully disebut salah sahiji layanan AWS pang populerna.

AWS Lambda

AWS Lambda mangrupikeun jasa komputasi tanpa server anu didorong acara anu ngamungkinkeun anjeun ngajalankeun kode tanpa nyayogikeun atanapi ngatur server sareng manjangkeun jasa AWS anu sanés nganggo logika khusus. Lambda otomatis ngabales sagala rupa acara (disebut pemicu), kayaning requests HTTP ngaliwatan Amazon API Gateway, parobahan data dina Amazon S3 ember atawa tabel Amazon DynamoDB; atawa anjeun bisa ngajalankeun kode anjeun ngaliwatan panggero API ngagunakeun AWS SDK sarta transisi kaayaan di AWS Lengkah Fungsi.

Lambda ngajalankeun kode dina infrastruktur komputasi anu sayogi pisan sareng tanggung jawab sapinuhna pikeun ngokolakeun platform dasar, kalebet pangropéa server sareng sistem operasi, penyediaan sumber daya, skala otomatis, ngawas kode, sareng logging. Hartina, anjeun ngan ukur kedah unggah kode anjeun sareng ngonpigurasikeun kumaha sareng iraha éta kedah dieksekusi. Sabalikna, jasa bakal ngurus peluncuranana sareng mastikeun kasadiaan luhur aplikasi anjeun.

Iraha ngalih ka Lambda?

AWS Lambda mangrupakeun platform komputasi merenah nu cocog pikeun rupa-rupa pamakean kasus, salami basa jeung runtime kode anjeun dirojong ku layanan. Upami anjeun hoyong difokuskeun kodeu sareng logika bisnis anjeun nalika outsourcing pangropéa server, panyediaan, sareng skala kalayan biaya anu lumayan, AWS Lambda pasti jalanna.

Lambda mangrupa idéal pikeun nyieun interfaces programming, sarta lamun dipaké ditéang jeung API gateway, Anjeun bisa nyata ngurangan biaya jeung meunang ka pasar gancang. Aya sababaraha cara pikeun ngagunakeun fungsi Lambda sareng pilihan pikeun ngatur arsitektur tanpa server - sadayana tiasa milih anu cocog dumasar kana tujuanana.

Lambda ngidinan Anjeun pikeun ngalakukeun rupa-rupa pancén. Janten, hatur nuhun kana dukungan CloudWatch, anjeun tiasa nyiptakeun tugas anu ditunda sareng ngajadikeun otomatis prosés individu. Henteu aya larangan dina sifat sareng inténsitas pamakean jasa (konsumsi mémori sareng waktos dipertimbangkeun), sareng teu aya anu ngahalangan anjeun sacara sistematis ngerjakeun microservice pinuh dumasar kana Lambda.

Di dieu anjeun tiasa nyiptakeun tindakan berorientasi jasa anu henteu jalan terus. Hiji conto has nyaéta skala gambar. Malah dina kasus sistem anu disebarkeun, fungsi Lambda tetep relevan.

Janten, upami anjeun henteu hoyong ngurus alokasi sareng ngatur sumber komputasi, cobian AWS Lambda; lamun teu perlu beurat, itungan sumberdaya-intensif, ogé coba AWS Lambda; lamun kode Anjeun ngajalankeun périodik, éta katuhu, anjeun kudu nyobaan AWS Lambda.

kasalametan

Sajauh ieu teu aya keluhan ngeunaan kaamanan. Di sisi anu sanés, kusabab seueur prosés internal sareng fitur palaksanaan modél ieu disumputkeun tina pangguna lingkungan runtime anu diurus AWS Lambda, sababaraha aturan kaamanan awan anu ditarima sacara umum janten teu relevan.

Sapertos seueur jasa AWS, Lambda disayogikeun dina dasar kaamanan sareng patuh anu dibagi antara AWS sareng nasabah. Prinsip ieu ngurangan beungbeurat operasional dina klien, saprak AWS nyandak tugas ngajaga, administering jeung ngawaskeun komponén jasa - ti sistem operasi host sarta lapisan virtualization kana kaamanan fisik aset infrastruktur.

Khususna ngeunaan AWS Lambda, AWS tanggung jawab pikeun ngatur infrastruktur dasar, jasa dasar anu aya hubunganana, sistem operasi, sareng platform aplikasi. Sedengkeun klien nu tanggung jawab kaamanan kode-Na, nyimpen data rahasia, ngadalikeun aksés ka eta, kitu ogé pikeun Lambda ladenan jeung sumber daya (Identity and Access Management, IAM), kaasup dina watesan fungsi dipaké.

Diagram di handap nembongkeun model tanggung jawab dibagikeun sakumaha eta manglaku ka AWS Lambda. Tanggung jawab AWS warna oranyeu sareng Tanggung jawab Palanggan biru. Sakumaha anjeun tiasa tingali, AWS nyandak langkung tanggung jawab pikeun aplikasi anu dipasang dina jasa éta.

Analisis lengkep AWS Lambda

Modél Tanggung Jawab Dibagikeun pikeun AWS Lambda

Lambda runtime

Kauntungan utama Lambda nyaéta yén ku ngalaksanakeun fungsi atas nama anjeun, jasa éta nyalira nyayogikeun sumber daya anu diperyogikeun. Anjeun tiasa ngahindarkeun waktos sareng usaha pikeun administrasi sistem sareng fokus kana logika bisnis sareng coding.

Layanan Lambda dibagi jadi dua pesawat. Anu kahiji nyaéta pesawat kontrol. Numutkeun kana Wikipedia, pesawat kontrol mangrupikeun bagian tina jaringan anu tanggung jawab pikeun ngangkut lalu lintas sinyal sareng rute. Ieu mangrupikeun komponén utami anu ngadamel kaputusan global ngeunaan nyayogikeun, ngalayanan, sareng ngadistribusikaeun beban kerja. Salaku tambahan, pesawat kontrol tindakan salaku topologi jaringan panyadia solusi, jawab routing sareng ngatur lalu lintas.

Pesawat kadua nyaéta pesawat data. Éta, sapertos pesawat kontrol, gaduh tugas sorangan. Pesawat kontrol nyadiakeun API pikeun ngatur fungsi (CreateFunction, UpdateFunctionCode) jeung ngadalikeun kumaha Lambda komunikasi sareng jasa AWS séjén. Pesawat data ngadalikeun Invoke API, anu ngajalankeun fungsi Lambda. Saatos fungsi disebut, pesawat kontrol allocates atawa milih hiji lingkungan runtime aya nu tos disiapkeun pikeun fungsi éta, lajeng executes kode di dinya.

AWS Lambda ngarojong rupa-rupa basa program, kaasup Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, jeung sajabana, ngaliwatan lingkungan runtime masing-masing. AWS rutin ngapdet aranjeunna, nyebarkeun patch kaamanan, sareng ngalaksanakeun kagiatan pangropéa sanés dina lingkungan ieu. Lambda ngamungkinkeun anjeun ngagunakeun basa anu sanés ogé, upami anjeun ngalaksanakeun runtime anu pas sorangan. Teras anjeun kedah ngurus perawatanna, kalebet ngawaskeun kasalametanana.

Kumaha éta sadayana tiasa dianggo sareng kumaha jasa bakal ngalaksanakeun fungsi anjeun?

Unggal fungsi dijalankeun dina hiji atawa leuwih lingkungan dedicated, nu aya ngan pikeun kahirupan fungsi nu lajeng ancur. Unggal lingkungan ngajadikeun ngan hiji panggero dina hiji waktu, tapi dipaké deui lamun aya sababaraha panggero serial ka fungsi anu sarua. Sadaya lingkungan runtime dijalankeun dina mesin virtual sareng virtualisasi hardware - anu disebut microVMs. Unggal microVM ditugaskeun ka akun AWS khusus sareng tiasa dianggo deui ku lingkungan pikeun ngalaksanakeun fungsi anu béda dina akun éta. MicroVMs dikemas kana blok wangunan platform hardware Lambda Worker, anu dipiboga sareng dioperasikeun ku AWS. Runtime sarua teu bisa dipaké ku fungsi béda, atawa microVMs unik kana rekening AWS béda.

Analisis lengkep AWS Lambda

Modél Isolasi AWS Lambda

Isolasi lingkungan runtime dilaksanakeun nganggo sababaraha mékanisme. Di tingkat luhur unggal lingkungan aya salinan misah tina komponén ieu:

  • Kodeu fungsi
  • Sakur lapisan Lambda dipilih pikeun fungsina
  • Lingkungan palaksanaan fungsi
  • Ruang pangguna minimal dumasar kana Amazon Linux

Mékanisme di handap ieu dianggo pikeun ngasingkeun lingkungan palaksanaan anu béda:

  • cgroups - ngawatesan aksés ka CPU, memori, neundeun jeung sumber jaringan pikeun tiap lingkungan runtime;
  • namespaces - ID prosés grouping, ID pamaké, interfaces jaringan jeung sumber sejenna dikelola ku kernel Linux Ubuntu. Unggal runtime dijalankeun dina namespace sorangan;
  • seccomp-bpf - ngabatesan sauran sistem anu tiasa dianggo dina waktos runtime;
  • iptables sareng tabel routing - isolasi lingkungan palaksanaan ti silih;
  • chroot - nyadiakeun aksés kawates kana sistem file kaayaan.

Digabungkeun sareng téknologi isolasi proprietary AWS, mékanisme ieu mastikeun pamisahan runtime anu dipercaya. Lingkungan anu terasing ku cara ieu teu tiasa ngaksés atanapi ngarobih data tina lingkungan anu sanés.

Sanajan sababaraha runtimes akun AWS sarua bisa dijalankeun dina microVM tunggal, dina kaayaan naon microVMs bisa dibagikeun antara rekening AWS béda. AWS Lambda ngan ngagunakeun dua mékanisme pikeun ngasingkeun microVMs: instansi EC2 sareng Firecracker. Isolasi tamu di Lambda dumasar kana instansi EC2 parantos aya ti saprak 2015. Firecracker mangrupikeun hypervisor open source énggal anu dirarancang khusus ku AWS pikeun beban kerja tanpa server sareng diwanohkeun dina 2018. Parangkat keras fisik anu ngajalankeun microVM dibagi antara beban kerja dina akun anu béda.

Nyimpen lingkungan sareng kaayaan prosés

Sanajan runtime Lambda unik pikeun pungsi anu béda-béda, aranjeunna tiasa nyauran pungsi anu sami sababaraha kali, hartosna runtime tiasa salamet sababaraha jam sateuacan ancur.

Unggal runtime Lambda ogé gaduh sistem file anu tiasa ditulis tiasa diaksés ngalangkungan diréktori / tmp. Eusi na teu bisa diaksés ti runtimes séjén. Sajauh ngeunaan kegigihan kaayaan prosés, file anu ditulis ka /tmp aya pikeun sakabéh siklus kahirupan lingkungan runtime. Hal ieu ngamungkinkeun hasil tina sababaraha télépon bisa akumulasi, nu hususna kapaké pikeun operasi mahal kayaning loading model learning mesin.

Telepon mindahkeun data

API Invoke tiasa dianggo dina dua modeu: modeu acara sareng modeu réspon-pénta. Dina modeu acara, telepon ditambahkeun kana antrian pikeun palaksanaan engké. Dina modeu pamundut-respons, fungsi disebut instan jeung payload disadiakeun, nu satutasna respon balik. Dina duanana kasus, fungsi jalan di lingkungan Lambda, tapi kalayan jalur payload béda.

Salami sauran réspon-pénta, payload ngalir tina API pamrosésan pamundut (API Caller), sapertos AWS API Gateway atanapi AWS SDK, ka load balancer, teras ka Lambda call service (Invoke Service). Panungtungan nangtukeun lingkungan luyu pikeun executing fungsi jeung ngalirkeun payload aya pikeun ngalengkepan télépon. Pengimbang beban nampi lalu lintas anu ditangtayungan TLS dina Internét. Lalu lintas dina jasa Lambda—sanggeus load balancer—ngaliwatan VPC internal di wewengkon AWS husus.

Analisis lengkep AWS Lambda

AWS Lambda Telepon Processing Modél: Request-Respons Mode

Telepon acara tiasa langsung dilakukeun atanapi ditambah kana antrian. Dina sababaraha kasus, antrian dilaksanakeun nganggo Amazon SQS (Amazon Simple Queue Service), anu ngirimkeun sauran ka ladénan minuhan panggero Lambda ngaliwatan prosés poller internal. Lalu lintas anu dikirimkeun ditangtayungan ku TLS, sareng teu aya énkripsi tambahan data anu disimpen di Amazon SQS.

Telepon acara henteu ngabales réspon - Lambda Worker ngan saukur teu malire inpormasi réspon. Telepon dumasar-kajadian ti Amazon S3, Amazon SNS, CloudWatch, sareng sumber sanésna diolah ku Lambda dina modeu acara. Telepon ti aliran Amazon Kinesis sareng DynamoDB, antrian SQS, Application Load Balancer, sareng sauran API Gateway diprosés dina gaya pamundut-réspon.

Ngawaskeun

Anjeun tiasa ngawas sareng ngaudit fungsi Lambda nganggo sababaraha mékanisme sareng jasa AWS, kalebet ieu di handap.

Amazon CloudWatch
Kumpulkeun rupa-rupa statistik sapertos jumlah pamundut, durasi pamundut, sareng jumlah pamundut anu gagal.

Amazon CloudTrail
Ngidinan anjeun log, terus ngawas, sareng ngajaga inpormasi kagiatan akun anu aya hubunganana sareng infrastruktur AWS anjeun. Anjeun bakal gaduh sajarah lengkep ngeunaan tindakan anu dilakukeun nganggo AWS Management Console, AWS SDK, alat garis paréntah, sareng jasa AWS anu sanés.

AWS X-Ray
Nyayogikeun visibilitas lengkep kana sadaya tahap pamrosésan pamundut dina aplikasi anjeun dumasar kana peta komponén internalna. Ngidinan anjeun nganalisa aplikasi salami pamekaran sareng di lingkungan produksi.

Konfigurasi AWS
Anjeun bakal tiasa ngalacak parobahan konfigurasi fungsi Lambda (kaasup ngahapus) sareng runtimes, tags, nami pawang, ukuran kode, alokasi memori, setélan timeout sareng setelan concurrency, kitu ogé peran palaksanaan Lambda IAM, subnetting, sareng beungkeutan grup kaamanan. .

kacindekan

AWS Lambda nawiskeun sakumpulan alat anu kuat pikeun ngawangun aplikasi anu aman sareng skalabel. Seueur prakték kaamanan sareng patuh dina AWS Lambda sami sareng dina jasa AWS anu sanés, sanaos aya pengecualian. Dina Maret 2019, Lambda patuh kana SOC 1, SOC 2, SOC 3, PCI DSS, Asuransi Kaséhatan Portability and Accountability Act (HIPAA), sareng peraturan anu sanés. Janten, nalika anjeun mikir ngeunaan nerapkeun aplikasi salajengna anjeun, pertimbangkeun jasa AWS Lambda - éta tiasa janten anu paling pas pikeun tugas anjeun.

sumber: www.habr.com

Tambahkeun komentar