Бе сервер аз ҷониби рафҳо

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

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

Чӣ мешавад, агар мо контейнерҳои эфемериро гирем, ки дар онҳо вобастагии зарурӣ аллакай пешакӣ насб карда шудаанд ва худи контейнерҳо аз ҳамдигар ва аз ОС мизбон ҷудо шудаанд? Мо монолитро ба микросервисҳо тақсим мекунем, ки ҳар яки онҳоро новобаста аз дигарон навсозӣ ва миқёс кардан мумкин аст. Бо ҷойгир кардани код дар чунин контейнер, ман метавонам онро дар ҳама гуна инфрасохтор иҷро кунам. Аллакай беҳтар.

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

Чунин фикрҳо маро ба компютерҳои бе сервер бурданд. Бе сервер дар ин ҳолат маънои на набудани ҷисмонии серверҳо, балки набудани дарди сари идоракунии инфрасохтор.

Идеяи он аст, ки мантиқи барнома ба вазифаҳои мустақил тақсим карда мешавад. Онҳо сохтори чорабиниҳо доранд. Ҳар як функсия як "микровазифа" -ро иҷро мекунад. Ҳама чизе, ки аз таҳиягар талаб карда мешавад, бор кардани функсияҳо ба консоле, ки аз ҷониби провайдери абр пешниҳод шудааст ва мувофиқат кардани онҳо бо манбаъҳои рӯйдодҳо мебошад. Рамз тибқи дархост дар як контейнери ба таври автоматӣ омодашуда иҷро карда мешавад ва ман танҳо барои вақти иҷро пардохт мекунам.

Биёед бубинем, ки раванди таҳияи барнома ҳоло чӣ гуна хоҳад буд.

Аз ҷониби таҳиякунанда

Пештар мо дар бораи ариза барои мағозаи онлайн сӯҳбатро сар кардем. Дар равиши анъанавӣ мантиқи асосии система тавассути як барномаи монолитӣ иҷро карда мешавад. Ва сервер бо замима пайваста кор мекунад, ҳатто агар бор нест.

Барои гузаштан ба бе сервер, мо барномаро ба микрокортҳо тақсим мекунем. Мо барои ҳар яки онҳо вазифаи худро менависем. Функсияҳо аз ҳамдигар мустақиланд ва иттилооти ҳолатиро нигоҳ намедоранд (бешаҳрвандӣ). Онҳо ҳатто метавонанд бо забонҳои гуногун навишта шаванд. Агар яке аз онҳо «афтад», тамоми барнома қатъ намешавад. Меъмории барнома чунин хоҳад буд:

Бе сервер аз ҷониби рафҳо
Тақсимшавӣ ба функсияҳо дар Serverless ба кор бо хидматрасониҳои хурд монанд аст. Аммо микросервис метавонад якчанд вазифаҳоро иҷро кунад ва функсия бояд як чизро иҷро кунад. Биёед тасаввур кунем, ки вазифа ҷамъоварии омор ва намоиш додани онҳо бо дархости корбар аст. Дар равиши микросервис вазифа аз ҷониби як хидмат бо ду нуқтаи вуруд иҷро карда мешавад: навиштан ва хондан. Дар компютерҳои бе сервер, ин ду функсияи гуногун хоҳанд буд, ки ба ҳамдигар алоқаманд нестанд. Таҳиягар захираҳои компютериро сарфа мекунад, агар масалан, омор нисбат ба боргирӣ бештар нав карда шавад.

Функсияҳои бе сервер бояд дар муддати кӯтоҳ (тайм-аут) иҷро карда шаванд, ки онро провайдери хидматрасон муайян мекунад. Масалан, барои AWS вақти тамомшавӣ 15 дақиқа аст. Ин маънои онро дорад, ки функсияҳои дарозмӯҳлат бояд ба талабот мувофиқат карда шаванд - он чизест, ки Serverless аз дигар технологияҳои маъмули имрӯза (контейнерҳо ва Платформа ҳамчун хидмат) фарқ мекунад.

Мо ба ҳар як функсия воқеа таъин мекунем. Ҳодиса ангезаи амал аст:

Чорабинӣ
Амале, ки функсия иҷро мекунад

Тасвири маҳсулот ба анбор бор карда шудааст.
Тасвирро фишурда кунед ва ба директория бор кунед

Суроғаи мағозаи физикӣ дар базаи маълумот нав карда шуд
Ҷойгоҳи навро ба харитаҳо бор кунед

Муштарӣ барои мол пардохт мекунад
Коркарди пардохтро оғоз кунед

Ҳодисаҳо метавонанд дархостҳои HTTP, маълумоти ҷараён, навбатҳои паёмҳо ва ғайра бошанд. Сарчашмаҳои рӯйдодҳо тағирот ё пайдоиши маълумот мебошанд. Илова бар ин, функсияҳо метавонанд тавассути таймер фаъол карда шаванд.

Меъморӣ кор карда шуд ва барнома қариб бе сервер шуд. Баъдан мо ба провайдери хидматрасон меравем.

Аз ҷониби провайдер

Одатан, компютерҳои бе сервер аз ҷониби провайдерҳои хидматрасонии абрӣ пешниҳод карда мешаванд. Онҳо ба таври гуногун номида мешаванд: Functions Azure, AWS Lambda, Google Cloud Functions, IBM Cloud Functions.

Мо хидматро тавассути консоли провайдер ё ҳисоби шахсӣ истифода хоҳем кард. Рамзи функсияро бо яке аз роҳҳои зерин зеркашӣ кардан мумкин аст:

  • тавассути веб консол дар муҳаррирони дарунсохт код нависед,
  • архивро бо код зеркашӣ кунед,
  • бо анбори git давлатӣ ё хусусӣ кор кунед.

Дар ин ҷо мо воқеаҳоеро танзим мекунем, ки функсияро даъват мекунанд. Маҷмӯи рӯйдодҳо барои провайдерҳои гуногун метавонанд фарқ кунанд.

Бе сервер аз ҷониби рафҳо

Провайдер системаи Function as a Service (FaaS) -ро дар инфрасохтори худ сохта ва автоматӣ кардааст:

  1. Рамзи функсия дар анбор дар тарафи провайдер ба итмом мерасад.
  2. Ҳангоми рух додани ҳодиса, контейнерҳо бо муҳити омодашуда ба таври худкор дар сервер ҷойгир карда мешаванд. Ҳар як мисоли функсия контейнери ҷудошудаи худро дорад.
  3. Аз анбор, функсия ба контейнер фиристода мешавад, ҳисоб карда мешавад ва натиҷаро бармегардонад.
  4. Шумораи ходисахои параллелй меафзояд — шумораи контейнерхо меафзояд. Система ба таври худкор андоза мекунад. Агар корбарон ба ин функсия дастрасӣ надошта бошанд, он ғайрифаъол хоҳад буд.
  5. Провайдер вақти бекористии контейнерҳоро муқаррар мекунад - агар дар ин вақт функсияҳо дар контейнер пайдо нашаванд, он нобуд мешавад.

Бо ин роҳ мо Serverlessро аз қуттӣ берун мекунем. Мо барои хадамот бо истифода аз модели пардохташаванда ва танҳо барои он вазифаҳое, ки истифода мешаванд ва танҳо барои вақти истифодашуда пардохт мекунем.

Барои муаррифии таҳиягарон ба хидмат, провайдерҳо то 12 моҳ санҷиши ройгонро пешниҳод мекунанд, аммо вақти умумии ҳисобкунӣ, шумораи дархостҳо дар як моҳ, маблағ ё масрафи нерӯро маҳдуд мекунанд.

Бартарии асосии кор бо провайдер қобилияти хавотир нашавед дар бораи инфрасохтор (серверҳо, мошинҳои виртуалӣ, контейнерҳо) мебошад. Дар навбати худ, провайдер метавонад FaaS-ро ҳам бо истифода аз таҳияҳои худ ва ҳам бо истифода аз абзорҳои кушодаасос татбиқ кунад. Биёед минбаъд дар бораи онҳо сӯҳбат кунем.

Аз ҷониби манбаи кушода

Ҷамъияти кушодаасос дар тӯли ду соли охир дар абзорҳои бе сервер фаъолона кор мекунад. Бозингарони калонтарини бозор инчунин ба рушди платформаҳои бе сервер саҳм мегузоранд:

  • Google ба таҳиягарон асбоби кушодаи худро пешниҳод мекунад - Узвӣ. Дар таҳияи он IBM, RedHat, Pivotal ва SAP ширкат доштанд;
  • IBM дар платформаи бе сервер кор мекард OpenWhisk, ки он гоҳ лоиҳаи Бунёди Apache гардид;
  • Microsoft қисман рамзи платформаро кушод Функсияҳои Azure.

Таҳияҳо инчунин дар самти чаҳорчӯбаҳои бе сервер идома доранд. Кубелес и Вазифа дар дохили кластерҳои қаблан омодашудаи Kubernetes ҷойгир карда шудааст, OpenFaaS ҳам бо Kubernetes ва ҳам Docker Swarm кор мекунад. Чаҳорчӯба ҳамчун як навъ контроллер амал мекунад - мувофиқи дархост, он дар дохили кластер муҳити корӣ омода мекунад ва сипас дар он ҷо функсияро оғоз мекунад.

Чаҳорчӯбаҳо ҷойро барои конфигуратсияи асбоб барои мувофиқ кардани ниёзҳои шумо тарк мекунанд. Ҳамин тавр, дар Kubeless, таҳиякунанда метавонад мӯҳлати иҷрои функсияро танзим кунад (қимати пешфарз 180 сония аст). Fission, дар кӯшиши ҳалли мушкилоти оғози сард, пешниҳод мекунад, ки баъзе контейнерҳо ҳамеша кор кунанд (гарчанде ки ин хароҷоти бекористии захираҳоро талаб мекунад). Ва OpenFaaS маҷмӯи триггерҳоро барои ҳар завқ ва ранг пешниҳод мекунад: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs ва ғайра.

Дастурҳоро барои оғоз кардан мумкин аст дар ҳуҷҷатҳои расмии чаҳорчӯбаҳо пайдо кунед. Кор бо онҳо нисбат ба кор бо провайдер малакаҳои каме бештарро талаб мекунад - ин ҳадди аққал қобилияти оғоз кардани кластери Kubernetes тавассути CLI аст. Аксаран, дигар асбобҳои кушодаасосро дар бар гиред (масалан, менеҷери навбати Кафка).

Новобаста аз он ки мо бо Serverless чӣ гуна кор мекунем - тавассути провайдер ё бо истифода аз манбаи кушода, мо як қатор бартариятҳо ва нуқсонҳои равиши бе серверро мегирем.

Аз нуктаи назари афзалияту камбудихо

Serverless ғояҳои инфрасохтори контейнерӣ ва равиши микросервисро таҳия мекунад, ки дар он дастаҳо метавонанд дар реҷаи бисёрзабона бидуни пайвастшавӣ ба як платформа кор кунанд. Сохтани система содда ва ислоҳ кардани хатогиҳо осонтар аст. Меъмории Microservice ба шумо имкон медиҳад, ки ба система функсияҳои навро нисбат ба барномаи монолитӣ зудтар илова кунед.

Бе сервер вақти таҳияро боз ҳам кам мекунад, ба таҳиякунанда имкон медиҳад, ки танҳо ба мантиқи тиҷории барнома ва рамзгузорӣ тамаркуз кунад. Дар натиҷа, вақти ба бозор баровардани коркардҳо кам мешавад.

Ҳамчун бонус, мо миқёси автоматии борро мегирем, ва мо танҳо барои захираҳои истифодашуда ва танҳо дар вақти истифода бурдани онҳо пардохт мекунем.

Мисли ҳама гуна технология, Serverless камбудиҳо дорад.

Масалан, чунин камбудӣ метавонад вақти сардии оғозёбӣ бошад (ба ҳисоби миёна то 1 сония барои забонҳо ба монанди JavaScript, Python, Go, Java, Ruby).

Аз як тараф, дар асл, вақти оғози сард аз бисёр тағирёбандаҳо вобаста аст: забоне, ки функсия бо он навишта шудааст, шумораи китобхонаҳо, миқдори рамзҳо, иртибот бо захираҳои иловагӣ (ҳамон пойгоҳи додаҳо ё серверҳои аутентификатсия). Азбаски таҳиякунанда ин тағирёбандаҳоро назорат мекунад, вай метавонад вақти оғозро кам кунад. Аммо аз тарафи дигар, таҳиякунанда наметавонад вақти оғози контейнерро назорат кунад - ҳама аз провайдер вобаста аст.

Оғози сард метавонад ба оғози гарм табдил ёбад, вақте ки функсия контейнерро аз ҷониби ҳодисаи қаблӣ оғозшуда дубора истифода мекунад. Ин вазъият дар се ҳолат ба вуҷуд меояд:

  • агар муштариён аз хидмат зуд-зуд истифода баранд ва шумораи зангҳо ба ин функсия зиёд шавад;
  • агар провайдер, платформа ё чаҳорчӯба ба шумо имкон диҳад, ки баъзе контейнерҳоро ҳамеша фаъол нигоҳ доред;
  • агар таҳиякунанда функсияҳоро дар таймер иҷро кунад (гӯед, ки ҳар 3 дақиқа).

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

Камбудии навбатии Serverless ин мӯҳлати кӯтоҳи функсия аст (таҳти вақт, ки дар давоми он функсия бояд иҷро шавад).

Аммо, агар шумо бояд бо вазифаҳои дарозмуддат кор кунед, шумо метавонед меъмории гибридиро истифода баред - Serverless-ро бо технологияи дигар муттаҳид кунед.

На ҳама системаҳо метавонанд бо истифода аз схемаи бе сервер кор кунанд.

Баъзе барномаҳо то ҳол маълумот ва ҳолати иҷрошударо нигоҳ медоранд. Баъзе меъморӣ монолитӣ боқӣ мемонанд ва баъзе хусусиятҳо умри дароз хоҳанд дошт. Аммо (ба монанди технологияҳои абрӣ ва сипас контейнерҳо), Serverless технологияест, ки ояндаи бузург дорад.

Дар ин росто, ман мехостам ба таври осон ба масъалаи истифодаи равиши бе сервер гузарам.

Аз тарафи ариза

Барои соли 2018, фоизи истифодаи бе сервер якуним баробар афзуд. Дар байни ширкатҳое, ки аллакай технологияро дар хидматҳои худ ҷорӣ кардаанд, азимҷуссаҳои бозор ба мисли Twitter, PayPal, Netflix, T-Mobile, Coca-Cola ҳастанд. Дар айни замон, шумо бояд фаҳмед, ки Serverless як панацея нест, балки асбобест барои ҳалли як қатор мушкилот:

  • Вақти бекористии захираҳоро кам кунед. Барои хидматҳое, ки зангҳои кам доранд, доимӣ нигоҳ доштани мошини виртуалӣ лозим нест.
  • Маълумотро дар парвоз коркард кунед. Тасвирҳоро фишурда кунед, заминаҳоро буред, рамзгузории видеоро тағир диҳед, бо сенсорҳои IoT кор кунед, амалҳои математикиро иҷро кунед.
  • Хидматҳои дигарро бо ҳам "клей" кунед. Анбори Git бо барномаҳои дохилӣ, боти чат дар Slack бо Jira ва тақвим.
  • Мувозинат кардани сарборӣ. Биёед дар ин ҷо бодиққат назар кунем.

Фарз мекунем, ки хидмате ҳаст, ки 50 нафарро ҷалб мекунад. Дар зери он як мошини маҷозӣ бо таҷҳизоти заиф мавҷуд аст. Вақт аз вақт, сарбории хидмат ба таври назаррас меафзояд. Он гоҳ таҷҳизоти заиф аз ӯҳдаи ин кор баромада наметавонад.

Шумо метавонед як мувозинатро ба система дохил кунед, ки сарбориро, масалан, дар се мошини виртуалӣ тақсим мекунад. Дар ин марҳила мо сарбориро дақиқ пешгӯӣ карда наметавонем, бинобар ин мо миқдори муайяни захираҳоро “дар захира” нигоҳ медорем. Ва мо барои бекористии зиёдатй пул медихем.

Дар чунин вазъият, мо метавонем системаро тавассути равиши гибридӣ оптимизатсия кунем: мо як мошини виртуалиро дар паси мувозинати сарборӣ мегузорем ва бо функсияҳо ба Endpoint Serverless пайванд мегузорем. Агар сарборӣ аз ҳадди ниҳоӣ зиёд бошад, мувозинат мисолҳои функсияро оғоз мекунад, ки як қисми коркарди дархостро ба ӯҳда мегиранд.

Бе сервер аз ҷониби рафҳо
Ҳамин тариқ, Serverlessро дар он ҷо истифода бурдан мумкин аст, ки барои коркарди миқдори зиёди дархостҳо на зуд-зуд, балки ба таври интенсивӣ зарур аст. Дар ин ҳолат, дар тӯли 15 дақиқа иҷро кардани якчанд функсияҳо назар ба нигоҳ доштани мошини виртуалӣ ё сервер ҳамеша фоидаовартар аст.

Бо тамоми бартариҳои ҳисоббарории бидуни сервер, пеш аз татбиқ, шумо бояд аввал мантиқи барномаро арзёбӣ кунед ва бифаҳмед, ки Serverless дар як ҳолати мушаххас кадом мушкилотро ҳал карда метавонад.

Бе сервер ва интихоб

Дар Selectel мо аллакай ҳастем кори соддакардашуда бо Kubernetes тавассути панели идоракунии мо. Ҳоло мо платформаи FaaS-и худро сохта истодаем. Мо мехоҳем, ки таҳиягарон тавонанд мушкилоти худро бо истифода аз Serverless тавассути интерфейси қулай ва чандир ҳал кунанд.

Агар шумо дар бораи он, ки платформаи идеалии FaaS чӣ гуна бояд бошад ва чӣ гуна шумо мехоҳед дар лоиҳаҳои худ Serverless-ро истифода баред, фикр кунед, онҳоро дар шарҳҳо мубодила кунед. Ҳангоми таҳияи платформа мо хоҳишҳои шуморо ба назар мегирем.
 
Маводҳои дар мақола истифодашуда:

Манбаъ: will.com

Илова Эзоҳ