AWS Lambda ning batafsil tahlili

Maqolaning tarjimasi kurs talabalari uchun maxsus tayyorlangan "Bulutli xizmatlar". Ushbu yo'nalishda rivojlanishga qiziqasizmi? Egor Zuevning master-klassini tomosha qiling (InBit da TeamLead) "AWS EC2 xizmati" va keyingi kurs guruhiga qo'shiling: 26 sentyabrda boshlanadi.

AWS Lambda ning batafsil tahlili

Ko‘proq odamlar AWS Lambda’ga ko‘lamlilik, unumdorlik, tejash va oyiga millionlab yoki hatto trillionlab so‘rovlarni ko‘rib chiqish imkoniyati uchun o‘tmoqda. Buning uchun xizmat ishlayotgan infratuzilmani boshqarish shart emas. Va avtomatik o'lchov bir soniyada bir vaqtning o'zida minglab so'rovlarga xizmat ko'rsatish imkonini beradi. Menimcha, AWS Lambda haqli ravishda eng mashhur AWS xizmatlaridan biri deb atash mumkin.

AWS Lambda

AWS Lambda bu hodisaga asoslangan serversiz hisoblash xizmati boʻlib, u sizga serverlarni tayyorlamasdan yoki boshqarmasdan kodni ishga tushirishga va maxsus mantiqdan foydalangan holda boshqa AWS xizmatlarini kengaytirishga imkon beradi. Lambda avtomatik ravishda Amazon API Gateway orqali HTTP so'rovlari, Amazon S3 paqirlari yoki Amazon DynamoDB jadvallaridagi ma'lumotlarga o'zgartirishlar kabi turli hodisalarga (triggerlar deb ataladi) javob beradi; yoki kodingizni AWS SDK yordamida API chaqiruvlari va AWS Step Functionsʼdagi holat oʻtishlarini ishlatishingiz mumkin.

Lambda yuqori darajada mavjud bo'lgan hisoblash infratuzilmasida kodni boshqaradi va server va operatsion tizimga texnik xizmat ko'rsatish, resurslarni ta'minlash, avtomatik masshtablash, kod monitoringi va jurnalni yozish kabi asosiy platformani boshqarish uchun to'liq javobgardir. Ya'ni, siz shunchaki kodingizni yuklashingiz va uni qanday va qachon bajarish kerakligini sozlashingiz kerak. O'z navbatida, xizmat uning ishga tushirilishi haqida g'amxo'rlik qiladi va ilovangizning yuqori darajada mavjudligini ta'minlaydi.

Lambda-ga qachon o'tish kerak?

AWS Lambda — kodingiz tili va ish vaqti xizmat tomonidan qoʻllab-quvvatlansa, turli xil foydalanish holatlari uchun mos boʻlgan qulay hisoblash platformasi. Agar siz serverga texnik xizmat ko'rsatish, ta'minlash va o'rtacha narxda masshtablashda o'z kodingiz va biznes mantig'ingizga e'tibor qaratmoqchi bo'lsangiz, AWS Lambda albatta borishning yo'lidir.

Lambda dasturlash interfeyslarini yaratish uchun ideal va API Gateway bilan birgalikda foydalanilganda siz xarajatlarni sezilarli darajada kamaytirishingiz va bozorga tezroq kirishingiz mumkin. Lambda funktsiyalaridan foydalanishning turli usullari va serversiz arxitekturani tashkil qilish variantlari mavjud - har kim o'z maqsadiga qarab mos keladigan narsani tanlashi mumkin.

Lambda sizga keng ko'lamli vazifalarni bajarishga imkon beradi. Shunday qilib, CloudWatch qo'llab-quvvatlashi tufayli siz kechiktirilgan vazifalarni yaratishingiz va individual jarayonlarni avtomatlashtirishingiz mumkin. Xizmatdan foydalanish tabiati va intensivligi bo'yicha hech qanday cheklovlar yo'q (xotira sarfi va vaqt hisobga olinadi) va Lambda asosidagi to'liq mikroservisda tizimli ravishda ishlashingizga hech narsa to'sqinlik qilmaydi.

Bu yerda siz doimiy ishlamaydigan xizmatga yo'naltirilgan harakatlar yaratishingiz mumkin. Oddiy misol tasvirni masshtablashdir. Hatto taqsimlangan tizimlarda ham Lambda funktsiyalari dolzarbligicha qolmoqda.

Shunday qilib, agar siz hisoblash resurslarini taqsimlash va boshqarish bilan shug‘ullanishni istamasangiz, AWS Lambda’ni sinab ko‘ring; agar sizga og'ir, resurslarni ko'p talab qiladigan hisob-kitoblar kerak bo'lmasa, AWS Lambda'ni ham sinab ko'ring; agar sizning kodingiz vaqti-vaqti bilan ishlayotgan bo'lsa, bu to'g'ri, siz AWS Lambda-ni sinab ko'rishingiz kerak.

Xavfsizlik

Hozircha xavfsizlik bo'yicha hech qanday shikoyatlar yo'q. Boshqa tomondan, ushbu modelning ko'pgina ichki jarayonlari va amalga oshirish xususiyatlari AWS Lambda tomonidan boshqariladigan ish vaqti muhiti foydalanuvchisidan yashirilganligi sababli, bulut xavfsizligining ba'zi umumiy qabul qilingan qoidalari ahamiyatsiz bo'lib qoladi.

Ko'pgina AWS xizmatlari singari, Lambda ham AWS va mijoz o'rtasida umumiy xavfsizlik va muvofiqlik asosida taqdim etiladi. Ushbu tamoyil mijozning operatsion yukini kamaytiradi, chunki AWS xizmat komponentlarini saqlash, boshqarish va monitoring qilish vazifalarini oladi - xost operatsion tizimi va virtualizatsiya qatlamidan tortib infratuzilma aktivlarining jismoniy xavfsizligiga qadar.

Xususan, AWS Lambda haqida gapiradigan bo'lsak, AWS asosiy infratuzilmani, tegishli asosiy xizmatlarni, operatsion tizimni va dastur platformasini boshqarish uchun javobgardir. Mijoz o'z kodining xavfsizligi, maxfiy ma'lumotlarni saqlash, unga kirishni nazorat qilish, shuningdek, Lambda xizmati va resurslariga (Identity and Access Management, IAM), shu jumladan foydalaniladigan funktsiyalar doirasida javobgar bo'ladi.

Quyidagi diagrammada AWS Lambda uchun qo'llaniladigan umumiy javobgarlik modeli ko'rsatilgan. AWS mas'uliyati to'q sariq rangda, mijozning javobgarligi esa ko'k rangda. Ko'rib turganingizdek, AWS xizmatda o'rnatilgan ilovalar uchun ko'proq mas'uliyatni o'z zimmasiga oladi.

AWS Lambda ning batafsil tahlili

AWS Lambda uchun qo'llaniladigan umumiy javobgarlik modeli

Lambda ish vaqti

Lambda ning asosiy afzalligi shundaki, sizning nomingizdan funktsiyani bajarish orqali xizmatning o'zi kerakli resurslarni ajratadi. Tizim boshqaruviga vaqt va kuch sarflashdan qochishingiz va biznes mantig'i va kodlashga e'tibor berishingiz mumkin.

Lambda xizmati ikki tekislikka bo'lingan. Birinchisi - boshqaruv tekisligi. Vikipediya ma'lumotlariga ko'ra, boshqaruv tekisligi tarmoqning signalli trafik va marshrutni tashish uchun mas'ul bo'lgan qismidir. Bu ish yuklarini ta'minlash, xizmat ko'rsatish va taqsimlash bo'yicha global qarorlarni qabul qiluvchi asosiy komponentdir. Bundan tashqari, boshqaruv tekisligi trafikni yo'naltirish va boshqarish uchun mas'ul bo'lgan yechim provayderining tarmoq topologiyasi sifatida ishlaydi.

Ikkinchi tekislik - ma'lumotlar tekisligi. Boshqaruv tekisligi singari, u ham o'z vazifalariga ega. Boshqaruv tekisligi funksiyalarni boshqarish uchun API’larni taqdim etadi (CreateFunction, UpdateFunctionCode) va Lambda’ning boshqa AWS xizmatlari bilan qanday bog‘lanishini nazorat qiladi. Ma'lumotlar tekisligi Lambda funksiyalarini boshqaradigan Invoke API-ni boshqaradi. Funktsiya chaqirilgandan so'ng, boshqaruv tekisligi ushbu funktsiya uchun oldindan tayyorlangan mavjud ish vaqti muhitini ajratadi yoki tanlaydi va keyin undagi kodni bajaradi.

AWS Lambda turli xil dasturlash tillarini, jumladan Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 va boshqalarni tegishli ish vaqti muhitlari orqali qo‘llab-quvvatlaydi. AWS ularni muntazam yangilab turadi, xavfsizlik yamoqlarini tarqatadi va ushbu muhitlarda boshqa texnik xizmat ko'rsatish faoliyatini amalga oshiradi. Lambda sizga tegishli ish vaqtini o'zingiz amalga oshirsangiz, boshqa tillardan ham foydalanish imkonini beradi. Va keyin siz uni saqlash, shu jumladan xavfsizligini kuzatish haqida g'amxo'rlik qilishingiz kerak bo'ladi.

Bularning barchasi qanday ishlaydi va xizmat sizning vazifalaringizni qanday bajaradi?

Har bir funktsiya bir yoki bir nechta ajratilgan muhitda ishlaydi, ular faqat ushbu funktsiyaning ishlash muddati uchun mavjud va keyin yo'q qilinadi. Har bir muhit bir vaqtning o'zida faqat bitta qo'ng'iroqni amalga oshiradi, lekin bir xil funktsiyaga bir nechta ketma-ket qo'ng'iroqlar mavjud bo'lsa, u qayta ishlatiladi. Barcha ish vaqti muhitlari apparat virtualizatsiyasiga ega virtual mashinalarda ishlaydi - microVM deb ataladi. Har bir microVM ma'lum bir AWS hisobiga tayinlangan va u hisobdagi turli funktsiyalarni bajarish uchun muhitlar tomonidan qayta ishlatilishi mumkin. MicroVM'lar AWS kompaniyasiga tegishli bo'lgan va boshqariladigan Lambda Worker apparat platformasining qurilish bloklariga o'rnatilgan. Xuddi shu ish vaqtini turli funktsiyalarda ishlatib bo'lmaydi, shuningdek, microVM'lar turli AWS hisoblari uchun xos emas.

AWS Lambda ning batafsil tahlili

AWS Lambda izolyatsiyasi modeli

Ish vaqti muhitini izolyatsiya qilish bir nechta mexanizmlar yordamida amalga oshiriladi. Har bir muhitning yuqori darajasida quyidagi komponentlarning alohida nusxalari mavjud:

  • Funktsiya kodi
  • Funktsiya uchun tanlangan har qanday Lambda qatlamlari
  • Funktsiyani bajarish muhiti
  • Amazon Linux asosidagi minimal foydalanuvchi maydoni

Turli ijro muhitlarini ajratish uchun quyidagi mexanizmlar qo'llaniladi:

  • cgroups - har bir ish vaqti muhiti uchun CPU, xotira, saqlash va tarmoq resurslariga kirishni cheklash;
  • nomlar bo'shliqlari - guruhlash jarayoni identifikatorlari, foydalanuvchi identifikatorlari, tarmoq interfeyslari va Linux yadrosi tomonidan boshqariladigan boshqa resurslar. Har bir ish vaqti o'z nom maydonida ishlaydi;
  • seccomp-bpf - ish vaqtida ishlatilishi mumkin bo'lgan tizim qo'ng'iroqlarini cheklaydi;
  • iptables va marshrutlash jadvallari - ijro muhitlarini bir-biridan izolyatsiya qilish;
  • chroot - asosiy fayl tizimiga cheklangan kirishni ta'minlaydi.

AWS xususiy izolyatsiyalash texnologiyalari bilan birgalikda ushbu mexanizmlar ish vaqtini ishonchli ajratishni ta'minlaydi. Shu tarzda izolyatsiya qilingan muhitlar boshqa muhitlardan ma'lumotlarga kira olmaydi yoki o'zgartira olmaydi.

Garchi bir xil AWS hisobining bir nechta ish vaqtlari bitta microVM da ishlashi mumkin bo'lsa-da, hech qanday holatda microVM'larni turli AWS hisoblari o'rtasida taqsimlab bo'lmaydi. AWS Lambda microVM'larni ajratish uchun faqat ikkita mexanizmdan foydalanadi: EC2 nusxalari va Firecracker. EC2 namunalari asosida Lambda-da mehmonlarni izolyatsiya qilish 2015 yildan beri mavjud. Firecracker - serversiz ish yuklari uchun AWS tomonidan maxsus ishlab chiqilgan va 2018 yilda taqdim etilgan yangi ochiq manbali gipervizor. MicroVM ishlaydigan jismoniy apparat turli hisoblardagi ish yuklari o'rtasida taqsimlanadi.

Muhitlarni va jarayon holatlarini saqlash

Lambda ish vaqtlari har xil funksiyalarga xos bo'lsa-da, ular bir xil funktsiyani qayta-qayta chaqirishi mumkin, ya'ni ish vaqti bir necha soat davomida yo'q bo'lib ketishi mumkin.

Har bir Lambda ish vaqti, shuningdek, /tmp katalogi orqali kirish mumkin bo'lgan yoziladigan fayl tizimiga ega. Uning mazmuniga boshqa ish vaqtlaridan kirish mumkin emas. Jarayon holatining barqarorligiga kelsak, /tmp ga yozilgan fayllar ish vaqti muhitining butun hayot aylanishi uchun mavjud. Bu bir nechta qo'ng'iroqlar natijalarini to'plash imkonini beradi, bu ayniqsa, mashinani o'rganish modellarini yuklash kabi qimmat operatsiyalar uchun foydalidir.

Qo'ng'iroq ma'lumotlarini uzatish

Invoke API ikki rejimda ishlatilishi mumkin: voqea rejimi va so'rovga javob berish rejimi. Voqea rejimida qo'ng'iroq keyinchalik bajarish uchun navbatga qo'shiladi. So'rov-javob rejimida funksiya taqdim etilgan foydali yuk bilan bir zumda chaqiriladi, shundan so'ng javob qaytariladi. Ikkala holatda ham funktsiya Lambda muhitida ishlaydi, lekin har xil foydali yuk yo'llari bilan.

So‘rov-javob qo‘ng‘iroqlari vaqtida foydali yuk AWS API Gateway yoki AWS SDK kabi so‘rovni qayta ishlash API’sidan (API Caller) yuk muvozanatlashtiruvchisiga, so‘ngra Lambda qo‘ng‘iroqlar xizmatiga (Invoke Service) o‘tadi. Ikkinchisi funktsiyani bajarish uchun mos muhitni aniqlaydi va qo'ng'iroqni yakunlash uchun foydali yukni u erga uzatadi. Yuk balanslagichi Internet orqali TLS bilan himoyalangan trafikni oladi. Lambda xizmati ichidagi trafik - yuk muvozanatlashtiruvchidan keyin - ma'lum bir AWS hududidagi ichki VPC orqali o'tadi.

AWS Lambda ning batafsil tahlili

AWS Lambda qo'ng'iroqlarini qayta ishlash modeli: so'rov-javob rejimi

Voqealar qo'ng'iroqlari darhol amalga oshirilishi yoki navbatga qo'shilishi mumkin. Ba'zi hollarda navbat Amazon SQS (Amazon Simple Queue Service) yordamida amalga oshiriladi, u qo'ng'iroqlarni Lambda qo'ng'iroqlarini bajarish xizmatiga ichki so'rov jarayoni orqali uzatadi. O'tkazilayotgan trafik TLS tomonidan himoyalangan va Amazon SQS-da saqlangan ma'lumotlarning qo'shimcha shifrlanishi mavjud emas.

Voqea qo'ng'iroqlari javoblarni qaytarmaydi - Lambda ishchisi har qanday javob ma'lumotlariga e'tibor bermaydi. Amazon S3, Amazon SNS, CloudWatch va boshqa manbalardan hodisaga asoslangan qo'ng'iroqlar Lambda tomonidan voqea rejimida qayta ishlanadi. Amazon Kinesis va DynamoDB oqimlaridan qo'ng'iroqlar, SQS navbatlari, Application Load Balancer va API Gateway qo'ng'iroqlari so'rov-javob usulida qayta ishlanadi.

Monitoring

Siz turli xil AWS mexanizmlari va xizmatlaridan, jumladan, quyidagilardan foydalangan holda Lambda funksiyalarini kuzatishingiz va tekshirishingiz mumkin.

Amazon CloudWatch
So'rovlar soni, so'rovlar davomiyligi va bajarilmagan so'rovlar soni kabi turli statistik ma'lumotlarni to'playdi.

Amazon CloudTrail
AWS infratuzilmangiz bilan bogʻliq hisob qaydnomasi faoliyati maʼlumotlarini tizimga kiritish, doimiy monitoring qilish va saqlash imkonini beradi. Siz AWS Management Console, AWS SDK, buyruq qatori vositalari va boshqa AWS xizmatlaridan foydalangan holda bajarilgan harakatlar tarixiga ega bo'lasiz.

AWS rentgen nurlari
Ilovangizdagi so'rovni qayta ishlashning barcha bosqichlarini uning ichki komponentlari xaritasi asosida to'liq ko'rish imkonini beradi. Ilovalarni ishlab chiqish jarayonida va ishlab chiqarish muhitida tahlil qilish imkonini beradi.

AWS konfiguratsiyasi
Siz Lambda funksiyasi konfiguratsiyasi (jumladan, oʻchirish) va ish vaqtlari, teglar, ishlov beruvchi nomlari, kod oʻlchami, xotira taqsimoti, kutish vaqti sozlamalari va parallellik sozlamalaridagi oʻzgarishlarni, shuningdek, Lambda IAM ijro roli, subnetting va xavfsizlik guruhlari ulanishlarini kuzatishingiz mumkin boʻladi. .

xulosa

AWS Lambda xavfsiz va kengaytiriladigan ilovalarni yaratish uchun kuchli vositalar to'plamini taklif etadi. AWS Lambda’da xavfsizlik va muvofiqlik amaliyotlarining aksariyati boshqa AWS xizmatlari bilan bir xil, ammo istisnolar mavjud. 2019-yil mart oyi holatiga ko‘ra, Lambda SOC 1, SOC 2, SOC 3, PCI DSS, Sog‘liqni saqlash sug‘urtasi portativligi va javobgarligi to‘g‘risidagi qonun (HIPAA) muvofiqligi va boshqa qoidalarga mos keladi. Shunday qilib, keyingi ilovangizni amalga oshirish haqida o'ylayotganingizda, AWS Lambda xizmatini ko'rib chiqing - bu sizning vazifangiz uchun eng mos bo'lishi mumkin.

Manba: www.habr.com

a Izoh qo'shish