Таҳлили муфассали AWS Lambda

Тарҷумаи мақола махсус барои донишҷӯёни курс омода шудааст "Хидматҳои абрӣ". Мехоҳед дар ин самт рушд кунед? Мастер-класси Егор Зуевро тамошо кунед (TeamLead дар InBit) "Хизматрасонии AWS EC2" ва ба гурУхи навбатии курс дохил шавед: 26 сентябрь.

Таҳлили муфассали AWS Lambda

Шумораи бештари одамон ба AWS Lambda барои миқёспазирӣ, иҷроиш, сарфакорӣ ва қобилияти коркарди миллионҳо ва ҳатто триллионҳо дархостҳо дар як моҳ муҳоҷират мекунанд. Барои ин ба шумо лозим нест, ки инфрасохтореро, ки хидмат дар он кор мекунад, идора кунед. Ва миқёси автоматӣ ба шумо имкон медиҳад, ки ҳазорҳо дархостҳои ҳамзамон дар як сонияро иҷро кунед. Ман фикр мекунам, ки AWS Lambda-ро дуруст метавон яке аз маъмултарин хидматҳои AWS номид.

AWS Lambda

AWS Lambda як хидмати компютерии бидуни серверест, ки ба рӯйдодҳо асос ёфтааст, ки ба шумо имкон медиҳад кодро бидуни таъмин ё идоракунии серверҳо иҷро кунед ва дигар хидматҳои AWS-ро бо истифода аз мантиқи фармоишӣ васеъ кунед. Lambda ба таври худкор ба рӯйдодҳои гуногун посух медиҳад (триггерҳо номида мешавад), ба монанди дархостҳои HTTP тавассути Amazon API Gateway, тағирот ба маълумот дар сатилҳои Amazon S3 ё ҷадвалҳои Amazon DynamoDB; ё шумо метавонед рамзи худро тавассути зангҳои API бо истифода аз AWS SDK ва гузариши ҳолати AWS Step Functions иҷро кунед.

Lambda кодро дар инфрасохтори компютерии хеле дастрас иҷро мекунад ва барои идоракунии платформаи асосӣ, аз ҷумла хидматрасонии сервер ва системаи амалиётӣ, таъмини захираҳо, миқёси худкор, мониторинги кодҳо ва сабти ном комилан масъул аст. Яъне, ба шумо танҳо лозим аст, ки рамзи худро бор кунед ва танзим кунед, ки чӣ гуна ва кай бояд иҷро шавад. Дар навбати худ, хидмат дар бораи ба кор андохтани он ғамхорӣ мекунад ва дастрасии баланди замимаи шуморо таъмин мекунад.

Кай бояд ба Lambda гузаред?

AWS Lambda як платформаи ҳисоббарории мувофиқ аст, ки барои ҳолатҳои гуногуни истифода мувофиқ аст, ба шарте ки забон ва вақти иҷрои рамзи шумо аз ҷониби хидмат дастгирӣ карда шавад. Агар шумо хоҳед, ки ба код ва мантиқи тиҷории худ ҳангоми аутсорсинг нигоҳдории сервер, таъминот ва миқёс бо арзиши оқилона таваҷҷӯҳ кунед, AWS Lambda бешубҳа роҳи рафтан аст.

Lambda барои эҷоди интерфейсҳои барномасозӣ беҳтарин аст ва вақте ки дар якҷоягӣ бо API Gateway истифода мешавад, шумо метавонед хароҷотро ба таври назаррас коҳиш диҳед ва зудтар ба бозор ворид шавед. Роҳҳои гуногуни истифодаи функсияҳои Lambda ва имконоти ташкили меъмории бе сервер вуҷуд доранд - ҳар кас метавонад вобаста ба ҳадафи худ чизи мувофиқро интихоб кунад.

Lambda ба шумо имкон медиҳад, ки доираи васеи вазифаҳоро иҷро кунед. Ҳамин тариқ, ба шарофати дастгирии CloudWatch, шумо метавонед вазифаҳои таъхиршударо эҷод кунед ва равандҳои инфиродӣ автоматӣ кунед. Дар хусусият ва шиддатнокии истифодаи хидмат маҳдудият вуҷуд надорад (истеъмоли хотира ва вақт ба назар гирифта мешавад) ва ҳеҷ чиз ба шумо барои мунтазам кор кардан дар микросервиси мукаммал дар асоси Lambda халал намерасонад.

Дар ин ҷо шумо метавонед амалҳои ба хидмат нигаронидашударо эҷод кунед, ки пайваста иҷро намешаванд. Мисоли маъмулӣ миқёси тасвир аст. Ҳатто дар сурати системаҳои тақсимшуда, функсияҳои Lambda аҳамияти худро нигоҳ медоранд.

Ҳамин тавр, агар шумо нахоҳед, ки бо тақсим ва идоракунии захираҳои компютерӣ сарукор дошта бошед, AWS Lambda-ро санҷед; агар ба шумо ҳисобҳои вазнин ва серталаб лозим набошад, инчунин AWS Lambda-ро санҷед; агар рамзи шумо мунтазам кор кунад, ин дуруст аст, шумо бояд AWS Lambda-ро санҷед.

Амният

То ҳол дар бораи бехатарӣ шикояте нест. Аз тарафи дигар, азбаски бисёре аз равандҳои дохилӣ ва хусусиятҳои татбиқи ин модел аз корбари муҳити AWS Lambda идорашаванда пинҳон шудаанд, баъзе қоидаҳои ба таври умум қабулшудаи амнияти абр номувофиқ мешаванд.

Мисли аксари хидматҳои AWS, Lambda дар асоси амният ва мутобиқати муштарак байни AWS ва муштарӣ таъмин карда мешавад. Ин принсип сарбории амалиётии муштариро коҳиш медиҳад, зеро AWS вазифаҳои нигоҳдорӣ, идоракунӣ ва мониторинги ҷузъҳои хидматро - аз системаи оператсионии ҳост ва қабати виртуализатсия то амнияти ҷисмонии дороиҳои инфрасохторӣ ба дӯш мегирад.

Махсусан дар бораи AWS Lambda сухан гӯем, AWS барои идоракунии инфрасохтори асосӣ, хидматҳои марбута, системаи амалиётӣ ва платформаи барнома масъул аст. Дар ҳоле ки муштарӣ барои амнияти коди худ, нигаҳдории маълумоти махфӣ, назорати дастрасӣ ба он, инчунин ба хидмат ва захираҳои Lambda (Идентификатсия ва дастрасӣ, IAM), аз ҷумла дар доираи функсияҳои истифодашуда масъул аст.

Диаграммаи зер модели масъулияти муштаракро нишон медиҳад, зеро он ба AWS Lambda дахл дорад. Масъулияти AWS норанҷӣ ва Масъулияти муштарӣ кабуд аст. Тавре ки шумо мебинед, AWS барои замимаҳои дар хидмат ҷойгиршуда масъулияти бештарро ба дӯш мегирад.

Таҳлили муфассали AWS Lambda

Модели масъулияти муштарак ба AWS Lambda татбиқшаванда

Вақти кори Lambda

Бартарии асосии Lambda дар он аст, ки тавассути иҷрои вазифа аз номи шумо худи хидмат захираҳои заруриро ҷудо мекунад. Шумо метавонед вақт ва саъю кӯшишро дар идоракунии система пешгирӣ кунед ва ба мантиқ ва рамзгузории тиҷорат тамаркуз кунед.

Хизматрасонии Lambda ба ду ҳавопаймо тақсим шудааст. Аввалин ҳавопаймои идоракунӣ мебошад. Мувофиқи Wikipedia, ҳавопаймои идоракунӣ қисми шабакаест, ки барои интиқоли трафики сигнализатсия ва масир масъул аст. Он ҷузъи асосӣест, ки қарорҳои глобалиро дар бораи таъмин, хидматрасонӣ ва тақсими сарбории корӣ қабул мекунад. Илова бар ин, ҳавопаймои идоракунӣ ҳамчун топологияи шабакаи провайдери ҳалли масъала амал мекунад, ки барои масир ва идоракунии трафик масъул аст.

Ҳавопаймои дуюм ҳавопаймои маълумот аст. Вай, монанди самолёти идоракунй, вазифахои худро дорад. Ҳавопаймои идоракунӣ APIҳоро барои идоракунии функсияҳо (CreateFunction, UpdateFunctionCode) таъмин мекунад ва назорат мекунад, ки чӣ тавр Lambda бо дигар хидматҳои AWS муошират мекунад. Ҳавопаймои маълумот Invoke API-ро идора мекунад, ки функсияҳои Lambda-ро иҷро мекунад. Пас аз даъват кардани функсия, ҳавопаймои идоракунӣ муҳити мавҷудаи вақти корро, ки барои ин функсия пешакӣ омода шудааст, ҷудо мекунад ё интихоб мекунад ва сипас кодро дар он иҷро мекунад.

AWS Lambda забонҳои гуногуни барномасозиро, аз ҷумла Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 ва дигаронро тавассути муҳити мувофиқи вақти корӣ дастгирӣ мекунад. AWS онҳоро мунтазам навсозӣ мекунад, часбҳои амниятӣ паҳн мекунад ва дигар фаъолиятҳои нигоҳубинро дар ин муҳитҳо иҷро мекунад. Lambda ба шумо имкон медиҳад, ки забонҳои дигарро низ истифода баред, ба шарте ки шумо вақти мувофиқро худатон иҷро кунед. Ва он гоҳ шумо бояд дар бораи нигоҳдории он, аз ҷумла назорати бехатарии он ғамхорӣ кунед.

Ин ҳама чӣ гуна кор мекунад ва хидмат вазифаҳои шуморо чӣ гуна иҷро мекунад?

Ҳар як функсия дар як ё якчанд муҳитҳои бахшидашуда кор мекунад, ки танҳо барои ҳаёти ин функсия вуҷуд доранд ва сипас нобуд мешаванд. Ҳар як муҳит дар як вақт танҳо як занг мезанад, аммо он аз нав истифода мешавад, агар ба як функсия зангҳои сершумор вуҷуд дошта бошанд. Ҳама муҳитҳои вақти корӣ дар мошинҳои виртуалӣ бо виртуализатсияи сахтафзор кор мекунанд - ба ном microVMs. Ҳар як microVM ба ҳисоби мушаххаси AWS таъин карда мешавад ва метавонад аз ҷониби муҳитҳо барои иҷрои вазифаҳои гуногун дар дохили он ҳисоб дубора истифода шавад. MicroVMs ба блокҳои сохтани платформаи сахтафзори Lambda Worker, ки аз ҷониби AWS тааллуқ ва идора карда мешавад, баста шудаанд. Як вақти корро аз ҷониби вазифаҳои гуногун истифода бурдан мумкин нест ва ё microVMҳо барои ҳисобҳои гуногуни AWS хос нестанд.

Таҳлили муфассали AWS Lambda

Модели изолятсияи AWS Lambda

Ҷудокунии муҳити корӣ бо истифода аз якчанд механизмҳо амалӣ карда мешавад. Дар сатҳи болоии ҳар як муҳит нусхаҳои алоҳидаи ҷузъҳои зерин мавҷуданд:

  • Рамзи функсия
  • Ҳама гуна қабатҳои Lambda барои функсия интихоб карда шудаанд
  • Муҳити иҷрои функсия
  • Фазои ҳадди ақали корбар дар асоси Amazon Linux

Барои ҷудо кардани муҳитҳои гуногуни иҷро механизмҳои зерин истифода мешаванд:

  • cgroups - маҳдуд кардани дастрасӣ ба CPU, хотира, нигоҳдорӣ ва захираҳои шабака барои ҳар як муҳити корӣ;
  • фазоҳои номҳо - гурӯҳбандии ID-ҳои раванд, ID-и корбар, интерфейсҳои шабакавӣ ва дигар захираҳое, ки аз ҷониби ядрои Linux идора карда мешаванд. Ҳар як вақти корӣ дар фазои номи худ кор мекунад;
  • seccomp-bpf - зангҳои системаро, ки дар вақти корӣ истифода мешаванд, маҳдуд мекунад;
  • iptables ва ҷадвалҳои масир - ҷудокунии муҳити иҷро аз ҳамдигар;
  • chroot - дастрасии маҳдуд ба системаи файлии асосиро таъмин мекунад.

Дар якҷоягӣ бо технологияҳои ҷудокунии хусусии AWS, ин механизмҳо ҷудокунии боэътимоди вақти корро таъмин мекунанд. Муҳити бо ин роҳ ҷудошуда ба маълумот аз муҳитҳои дигар дастрасӣ ё тағир дода наметавонанд.

Ҳарчанд вақтҳои сершумори як ҳисоби AWS метавонанд дар як microVM кор кунанд, дар ҳеҷ ваҷҳ наметавонад microVMҳоро байни ҳисобҳои гуногуни AWS тақсим кард. AWS Lambda барои ҷудо кардани microVMҳо танҳо ду механизмро истифода мебарад: намунаҳои EC2 ва Firecracker. Изолятсияи меҳмонон дар Ламбда дар асоси мисолҳои EC2 аз соли 2015 инҷониб вуҷуд дорад. Firecracker як гипервизори нави кушодаасос аст, ки махсус аз ҷониби AWS барои сарбории бе сервер тарҳрезӣ шудааст ва дар соли 2018 муаррифӣ шудааст. Таҷҳизоти ҷисмонӣ, ки microVMs кор мекунад, байни сарбории корӣ дар ҳисобҳои гуногун тақсим карда мешавад.

Захираи муҳитҳо ва ҳолати раванд

Гарчанде ки вақтҳои Lambda барои функсияҳои гуногун беназиранд, онҳо метавонанд як функсияро такроран даъват кунанд, яъне вақти кор метавонад якчанд соат пеш аз нобудшавӣ зинда монад.

Ҳар як вақти кори Lambda инчунин дорои системаи файлии навишташаванда, ки тавассути директорияи /tmp дастрас аст. Мундариҷаи онро аз дигар вақтҳои корӣ дастрас кардан мумкин нест. Дар мавриди устувории ҳолати раванд, файлҳои ба /tmp навишташуда барои тамоми давраи ҳаёти муҳити корӣ вуҷуд доранд. Ин имкон медиҳад, ки натиҷаҳои зангҳои сершумор ҷамъ карда шаванд, ки ин махсусан барои амалиёти гаронбаҳо ба монанди боркунии моделҳои омӯзиши мошин муфид аст.

Интиқоли маълумот занг

API-и Invoke-ро метавон дар ду намуд истифода бурд: ҳолати рӯйдодҳо ва реҷаи посух ба дархост. Дар ҳолати ҳодиса, занг барои иҷрои баъдӣ ба навбат илова карда мешавад. Дар реҷаи дархост-ҷавоб, функсия бо сарбории пешниҳодшуда фавран даъват карда мешавад, ки пас аз он ҷавоб баргардонида мешавад. Дар ҳарду ҳолат, функсия дар муҳити Lambda кор мекунад, аммо бо роҳҳои гуногуни боркунӣ.

Ҳангоми зангҳои посух ба дархост, бори пардохт аз API коркарди дархост (API Calller), ба монанди AWS API Gateway ё AWS SDK, ба мувозинаткунандаи сарборӣ ва сипас ба хидмати занги Lambda (Invoke Service) мегузарад. Охирин муҳити мувофиқро барои иҷрои функсия муайян мекунад ва бори пурборро барои анҷом додани занг ба он ҷо интиқол медиҳад. Тавозуни сарборӣ трафики аз TLS ҳифзшударо тавассути Интернет қабул мекунад. Трафик дар дохили хидмати Lambda - пас аз мувозинати сарборӣ - тавассути VPC дохилӣ дар минтақаи мушаххаси AWS мегузарад.

Таҳлили муфассали AWS Lambda

Модели коркарди занги AWS Lambda: Реҷаи дархост-Ҷавоб

Зангҳои рӯйдодӣ метавонанд фавран анҷом дода шаванд ё ба навбат илова карда шаванд. Дар баъзе мавридҳо, навбат бо истифода аз Amazon SQS (Хизматрасонии Amazon Simple Queue) амалӣ карда мешавад, ки зангҳоро ба хидмати иҷроиши занги Lambda тавассути раванди пурсиши дохилӣ интиқол медиҳад. Трафики интиқолшаванда аз ҷониби TLS ҳифз карда мешавад ва рамзгузории иловагии маълумот дар Amazon SQS нигоҳ дошта нашудааст.

Зангҳои рӯйдодҳо ҷавобҳоро барнамегардонанд - Коргари Ламбда ҳама гуна маълумоти посухро нодида мегирад. Зангҳои ба рӯйдодҳо асосёфта аз Amazon S3, Amazon SNS, CloudWatch ва дигар манбаъҳо аз ҷониби Lambda дар ҳолати рӯйдодҳо коркард карда мешаванд. Зангҳо аз ҷараёнҳои Amazon Kinesis ва DynamoDB, навбатҳои SQS, Load Balancer ва зангҳои API Gateway бо усули посух ба дархост коркард карда мешаванд.

Мониторинг

Шумо метавонед функсияҳои Lambda-ро бо истифода аз механизмҳо ва хидматҳои гуногуни AWS, аз ҷумла зерин назорат ва тафтиш кунед.

amazoncloudwatch
Омори гуногун, аз қабили шумораи дархостҳо, давомнокии дархостҳо ва шумораи дархостҳои нокомро ҷамъ меорад.

Amazon CloudTrail
Ба шумо имкон медиҳад, ки маълумотро дар бораи фаъолияти ҳисоби марбут ба инфрасохтори AWS-и худ сабт кунед, пайваста назорат кунед ва нигоҳ доред. Шумо таърихи пурраи амалҳоеро хоҳед дошт, ки бо истифода аз AWS Management Console, AWS SDK, абзорҳои сатри фармон ва дигар хидматҳои AWS анҷом дода мешаванд.

AWS X-Ray
Дар асоси харитаи ҷузъҳои дохилии он, дидани ҳама марҳилаҳои коркарди дархостро дар барномаи шумо таъмин мекунад. Ба шумо имкон медиҳад, ки барномаҳоро ҳангоми таҳия ва муҳити истеҳсолӣ таҳлил кунед.

Танзимоти AWS
Шумо метавонед тағиротро дар конфигуратсияи функсияи Lambda (аз ҷумла ҳазф) ва вақтҳои иҷро, тегҳо, номҳои коркардкунанда, андозаи код, тақсимоти хотира, танзимоти вақт ва танзимоти ҳамзамон, инчунин нақши иҷрои Lambda IAM, зершабака ва пайвастагии гурӯҳи амниятӣ пайгирӣ кунед. .

хулоса

AWS Lambda маҷмӯи пурқуввати асбобҳоро барои сохтани барномаҳои бехатар ва миқёспазир пешниҳод мекунад. Бисёре аз таҷрибаҳои амниятӣ ва мувофиқат дар AWS Lambda бо дигар хидматҳои AWS яксонанд, гарчанде истисноҳо вуҷуд доранд. То моҳи марти соли 2019, Lambda ба SOC 1, SOC 2, SOC 3, PCI DSS, мутобиқати Санади интиқоли суғуртаи саломатӣ ва ҳисоботдиҳӣ (HIPAA) ва дигар қоидаҳо мувофиқат мекунад. Ҳамин тавр, вақте ки шумо дар бораи татбиқи барномаи навбатии худ фикр мекунед, хидмати AWS Lambda-ро баррасӣ кунед - он метавонад барои вазифаи шумо беҳтарин мувофиқ бошад.

Манбаъ: will.com

Илова Эзоҳ