Serverless fuq xtillieri

Serverless fuq xtillieri
Serverless mhix dwar l-assenza fiżika ta 'servers. Dan mhuwiex qattiel tal-kontejners jew tendenza li tgħaddi. Dan huwa approċċ ġdid għall-bini ta 'sistemi fil-cloud. Fl-artiklu tal-lum se nmissu l-arkitettura tal-applikazzjonijiet Serverless, ejja naraw x'rwol għandhom il-fornitur tas-servizz Serverless u l-proġetti open-source. Fl-aħħarnett, ejja nitkellmu dwar il-kwistjonijiet ta 'użu Serverless.

Irrid nikteb parti server minn applikazzjoni (jew anke ħanut online). Dan jista 'jkun chat, servizz ta' pubblikazzjoni tal-kontenut, jew load balancer. Fi kwalunkwe każ, se jkun hemm ħafna uġigħ ta 'ras: ser ikollok tipprepara l-infrastruttura, tiddetermina d-dipendenzi tal-applikazzjoni, u taħseb dwar is-sistema operattiva ospitanti. Imbagħad ser ikollok bżonn taġġorna komponenti żgħar li ma jaffettwawx l-operat tal-bqija tal-monolith. Ukoll, ejja ma ninsewx dwar l-iskala taħt tagħbija.

X'jiġri jekk nieħdu kontenituri effimeri, li fihom id-dipendenzi meħtieġa huma diġà installati minn qabel, u l-kontenituri nfushom huma iżolati minn xulxin u mill-OS ospitanti? Aħna se naqsmu l-monolith f'mikroservizzi, li kull wieħed minnhom jista 'jiġi aġġornat u skalat indipendentement mill-oħrajn. Billi npoġġi l-kodiċi f'tali kontenitur, nista' nmexxih fuq kwalunkwe infrastruttura. Diġà aħjar.

X'jiġri jekk ma tridx tikkonfigura l-kontenituri? Ma rridx naħseb dwar l-iskala tal-applikazzjoni. Ma rridx inħallas għall-kontejners inattivi meta t-tagħbija fuq is-servizz tkun minima. Irrid nikteb kodiċi. Iffoka fuq il-loġika tan-negozju u ġġib prodotti fis-suq bil-veloċità tad-dawl.

Ħsibijiet bħal dawn wassluni għal serverless computing. Serverless f'dan il-każ ifisser mhux in-nuqqas fiżiku ta 'servers, iżda n-nuqqas ta' uġigħ ta 'ras għall-ġestjoni tal-infrastruttura.

L-idea hija li l-loġika tal-applikazzjoni hija maqsuma f'funzjonijiet indipendenti. Huma għandhom struttura ta 'avveniment. Kull funzjoni twettaq "mikrotask" waħda. Dak kollu li hu meħtieġ mill-iżviluppatur huwa li jgħabbi l-funzjonijiet fil-console pprovduta mill-fornitur tas-sħab u jikkorrelatahom ma 'sorsi tal-avvenimenti. Il-kodiċi se jiġi esegwit fuq talba f'kontenitur ippreparat awtomatikament, u nħallas biss għall-ħin ta 'eżekuzzjoni.

Ejja naraw kif se jidher il-proċess ta 'żvilupp ta' applikazzjoni issa.

Min-naħa tal-iżviluppatur

Aktar qabel bdejna nitkellmu dwar applikazzjoni għal ħanut online. Fl-approċċ tradizzjonali, il-loġika ewlenija tas-sistema titwettaq b'applikazzjoni monolitika. U s-server bl-applikazzjoni qed jaħdem kontinwament, anke jekk ma jkunx hemm tagħbija.

Biex nimxu għal serverless, aħna nkissru l-applikazzjoni f'mikrotasks. Aħna niktbu l-funzjoni tagħna stess għal kull wieħed minnhom. Il-funzjonijiet huma indipendenti minn xulxin u ma jaħżnux informazzjoni tal-istat (stateless). Jistgħu anke jinkitbu b'lingwi differenti. Jekk wieħed minnhom "jaqa", l-applikazzjoni kollha ma tieqafx. L-arkitettura tal-applikazzjoni se tidher bħal din:

Serverless fuq xtillieri
Id-diviżjoni f'funzjonijiet f'Serverless hija simili għal xogħol b'mikroservizzi. Iżda mikroservizz jista 'jwettaq diversi kompiti, u funzjoni idealment għandha twettaq waħda. Ejja nimmaġinaw li l-kompitu huwa li tiġbor l-istatistika u turihom fuq talba tal-utent. Fl-approċċ tal-mikroservizz, kompitu jitwettaq minn servizz wieħed b'żewġ punti ta 'dħul: il-kitba u l-qari. Fil-kompjuters mingħajr servers, dawn se jkunu żewġ funzjonijiet differenti li mhumiex relatati ma 'xulxin. L-iżviluppatur jiffranka r-riżorsi tal-kompjuter jekk, pereżempju, l-istatistika tiġi aġġornata aktar spiss milli titniżżel.

Funzjonijiet serverless għandhom jiġu eżegwiti f'perjodu qasir ta 'żmien (timeout), li huwa determinat mill-fornitur tas-servizz. Pereżempju, għal AWS il-ħin ta' skadenza huwa ta' 15-il minuta. Dan ifisser li l-funzjonijiet b'ħajja twila se jkollhom jinbidlu biex ikunu adattati għar-rekwiżiti - dan huwa dak li jiddistingwi Serverless minn teknoloġiji popolari oħra llum (kontenituri u Platform as a Service).

Aħna jassenjaw avveniment għal kull funzjoni. Avveniment huwa trigger għal azzjoni:

Avveniment
L-azzjoni li twettaq il-funzjoni

Immaġini tal-prodott ġiet imtella' fir-repożitorju.
Ikkompressa l-immaġini u ittella' f'direttorju

L-indirizz tal-maħżen fiżiku ġie aġġornat fid-database
Tagħbija post ġdid fil-mapep

Il-klijent iħallas għall-merkanzija
Ibda l-ipproċessar tal-ħlas

L-avvenimenti jistgħu jkunu talbiet HTTP, streaming data, kjuwijiet tal-messaġġi, eċċ. Is-sorsi tal-avvenimenti huma bidliet jew okkorrenzi ta' data. Barra minn hekk, il-funzjonijiet jistgħu jiġu attivati ​​minn tajmer.

L-arkitettura ġiet maħduma, u l-applikazzjoni kważi saret serverless. Imbagħad immorru għand il-fornitur tas-servizz.

Min-naħa tal-fornitur

Tipikament, il-kompjuters mingħajr server huwa offrut minn fornituri tas-servizz tal-cloud. Dawn jissejħu b'mod differenti: Azure Functions, AWS Lambda, Google Cloud Functions, IBM Cloud Functions.

Aħna se nużaw is-servizz permezz tal-console tal-fornitur jew il-kont personali. Il-kodiċi tal-funzjoni jista’ jitniżżel b’wieħed mill-modi li ġejjin:

  • ikteb il-kodiċi f'edituri integrati permezz tal-console tal-web,
  • niżżel l-arkivju bil-kodiċi,
  • taħdem ma' repożitorji git pubbliċi jew privati.

Hawnhekk waqqafna l-avvenimenti li jsejħu l-funzjoni. Is-settijiet ta' avvenimenti jistgħu jvarjaw għal fornituri differenti.

Serverless fuq xtillieri

Il-fornitur bena u awtomatizzat is-sistema Function as a Service (FaaS) fuq l-infrastruttura tiegħu:

  1. Il-kodiċi tal-funzjoni jispiċċa fil-ħażna fuq in-naħa tal-fornitur.
  2. Meta jseħħ avveniment, kontenituri b'ambjent ippreparat jiġu skjerati awtomatikament fuq is-server. Kull istanza ta' funzjoni għandha l-kontenitur iżolat tagħha stess.
  3. Mill-ħażna, il-funzjoni tintbagħat lill-kontenitur, ikkalkulata, u tirritorna r-riżultat.
  4. In-numru ta 'avvenimenti paralleli qed jikber - in-numru ta' kontenituri qed jikber. Is-sistema tiskala awtomatikament. Jekk l-utenti ma jaċċessawx il-funzjoni, din tkun inattiva.
  5. Il-fornitur jistabbilixxi l-ħin idle għall-kontenituri - jekk matul dan iż-żmien il-funzjonijiet ma jidhrux fil-kontenitur, dan jinqered.

Dan il-mod noħorġu Serverless mill-kaxxa. Aħna se nħallsu għas-servizz bl-użu tal-mudell pay-as-you-go u għal dawk il-funzjonijiet biss li jintużaw, u biss għaż-żmien meta ntużaw.

Biex jintroduċu l-iżviluppaturi fis-servizz, il-fornituri joffru sa 12-il xahar ta 'ttestjar b'xejn, iżda jillimitaw il-ħin totali tal-komputazzjoni, in-numru ta' talbiet kull xahar, il-fondi jew il-konsum tal-enerġija.

Il-vantaġġ ewlieni li taħdem ma 'fornitur huwa l-abbiltà li ma tinkwietax dwar l-infrastruttura (servers, magni virtwali, kontenituri). Min-naħa tiegħu, il-fornitur jista 'jimplimenta FaaS kemm bl-użu tal-iżviluppi tiegħu stess kif ukoll bl-użu ta' għodod open-source. Ejja nitkellmu aktar dwarhom.

Min-naħa tas-sors miftuħ

Il-komunità open-source ilha taħdem b'mod attiv fuq għodod Serverless għal dawn l-aħħar ftit snin. L-akbar atturi tas-suq jikkontribwixxu wkoll għall-iżvilupp ta' pjattaformi bla servers:

  • Google joffri lill-iżviluppaturi l-għodda open-source tiegħu - knative. IBM, RedHat, Pivotal u SAP ipparteċipaw fl-iżvilupp tagħha;
  • IBM ħadem fuq pjattaforma Serverless OpenWhisk, li mbagħad sar proġett tal-Fondazzjoni Apache;
  • Microsoft fetaħ parzjalment il-kodiċi tal-pjattaforma Funzjonijiet Azure.

Għaddejjin ukoll żviluppi fid-direzzjoni ta' oqfsa serverless. Kubeless и Fissjoni skjerat ġewwa clusters Kubernetes ippreparati minn qabel, OpenFaaS jaħdem kemm ma 'Kubernetes kif ukoll ma' Docker Swarm. Il-qafas jaġixxi bħala tip ta 'kontrollur - fuq talba, jipprepara ambjent runtime ġewwa l-cluster, imbagħad iniedi funzjoni hemmhekk.

L-oqfsa jħallu spazju għall-konfigurazzjoni tal-għodda skont il-bżonnijiet tiegħek. Allura, f'Kubeless, żviluppatur jista 'jikkonfigura l-ħin ta' eżekuzzjoni tal-funzjoni (il-valur default huwa 180 sekonda). Fissjoni, f'tentattiv biex issolvi l-problema tal-bidu kiesaħ, tissuġġerixxi li xi kontenituri jinżammu jaħdmu l-ħin kollu (għalkemm dan jinvolvi spejjeż ta 'waqfien tar-riżorsi). U OpenFaaS joffri sett ta’ triggers għal kull togħma u kulur: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs u oħrajn.

L-istruzzjonijiet għall-bidu jistgħu jinstabu fid-dokumentazzjoni uffiċjali tal-oqfsa. Li taħdem magħhom teħtieġ li jkollok ftit aktar ħiliet milli meta taħdem ma 'fornitur - din hija għall-inqas il-kapaċità li tniedi cluster Kubernetes permezz tas-CLI. L-iktar, inkludi għodod oħra open-source (pereżempju, il-maniġer tal-kju Kafka).

Irrispettivament minn kif naħdmu ma 'Serverless - permezz ta' fornitur jew bl-użu ta 'sors miftuħ, se nirċievu numru ta' vantaġġi u żvantaġġi tal-approċċ Serverless.

Mil-lat tal-vantaġġi u l-iżvantaġġi

Serverless tiżviluppa l-ideat ta’ infrastruttura tal-kontejners u approċċ ta’ mikroservizz, li fih it-timijiet jistgħu jaħdmu f’modalità multilingwi mingħajr ma jkunu marbuta ma’ pjattaforma waħda. Il-bini ta' sistema huwa ssimplifikat u l-iżbalji huma aktar faċli biex jiġu kkoreġuti. L-arkitettura tal-mikroservizz tippermettilek li żżid funzjonalità ġdida mas-sistema ħafna aktar malajr milli fil-każ ta 'applikazzjoni monolitika.

Serverless inaqqas il-ħin tal-iżvilupp saħansitra aktar, li tippermetti lill-iżviluppatur jiffoka biss fuq il-loġika tan-negozju u l-kodifikazzjoni tal-applikazzjoni. Bħala riżultat, iż-żmien għas-suq għall-iżviluppi jitnaqqas.

Bħala bonus, aħna niksbu skalar awtomatiku għat-tagħbija, u nħallsu biss għar-riżorsi użati u biss fil-ħin meta jintużaw.

Bħal kull teknoloġija, Serverless għandha żvantaġġi.

Pereżempju, tali żvantaġġ jista 'jkun il-ħin tal-bidu kiesaħ (b'medja sa sekonda 1 għal lingwi bħal JavaScript, Python, Go, Java, Ruby).

Min-naħa waħda, fir-realtà, il-ħin tal-bidu kiesaħ jiddependi fuq ħafna varjabbli: il-lingwa li biha tinkiteb il-funzjoni, in-numru ta 'libreriji, l-ammont ta' kodiċi, komunikazzjoni ma 'riżorsi addizzjonali (l-istess databases jew servers ta' awtentikazzjoni). Peress li l-iżviluppatur jikkontrolla dawn il-varjabbli, huwa jista 'jnaqqas il-ħin tal-istartjar. Iżda min-naħa l-oħra, l-iżviluppatur ma jistax jikkontrolla l-ħin tal-istartjar tal-kontenitur - kollox jiddependi fuq il-fornitur.

Start kiesaħ jista 'jinbidel f'bidu sħun meta funzjoni terġa' tuża kontenitur imniedi minn avveniment preċedenti. Din is-sitwazzjoni tinħoloq fi tliet każijiet:

  • jekk il-klijenti jużaw is-servizz ta' spiss u n-numru ta' sejħiet għall-funzjoni jiżdied;
  • jekk il-fornitur, il-pjattaforma jew il-qafas jippermettulek li żżomm xi kontenituri jaħdmu l-ħin kollu;
  • jekk l-iżviluppatur imexxi funzjonijiet fuq tajmer (jiġifieri kull 3 minuti).

Għal ħafna applikazzjonijiet, bidu kiesaħ mhix problema. Hawnhekk għandek bżonn tibni fuq it-tip u l-kompiti tas-servizz. Dewmien tal-bidu ta 'sekonda mhux dejjem huwa kritiku għal applikazzjoni tan-negozju, iżda jista' jsir kritiku għas-servizzi mediċi. F'dan il-każ, l-approċċ serverless probabbilment ma jibqax adattat.

L-iżvantaġġ li jmiss ta 'Serverless huwa l-ħajja qasira ta' funzjoni (timeout li matulu l-funzjoni trid tiġi esegwita).

Iżda, jekk ikollok taħdem b'ħidmiet ta 'ħajja twila, tista' tuża arkitettura ibrida - għaqqad Serverless ma 'teknoloġija oħra.

Mhux is-sistemi kollha se jkunu jistgħu jaħdmu bl-użu tal-iskema Serverless.

Xi applikazzjonijiet xorta se jaħżnu d-dejta u l-istat waqt l-eżekuzzjoni. Xi arkitetturi se jibqgħu monolitiċi u xi karatteristiċi se jibqgħu fit-tul. Madankollu (bħal teknoloġiji cloud u mbagħad containers), Serverless hija teknoloġija b'futur kbir.

F'din il-linja, nixtieq nimxi bla xkiel għall-kwistjoni tal-użu tal-approċċ Serverless.

Min-naħa tal-applikazzjoni

Għall-2018, il-perċentwal tal-użu Serverless kiber darba u nofs. Fost il-kumpaniji li diġà implimentaw it-teknoloġija fis-servizzi tagħhom hemm ġganti tas-suq bħal Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. Fl-istess ħin, trid tifhem li Serverless mhix rimedju, iżda għodda biex issolvi ċertu firxa ta 'problemi:

  • Naqqas il-waqfien tar-riżorsi. M'hemmx bżonn li kontinwament tinżamm magna virtwali għal servizzi li għandhom ftit sejħiet.
  • Ipproċessa data fuq il-fly. Ikkompressa l-istampi, aqta 'l-isfond, ibdel il-kodifikazzjoni tal-vidjo, taħdem ma' sensuri IoT, wettaq operazzjonijiet matematiċi.
  • "Kolla" servizzi oħra flimkien. Repożitorju Git bi programmi interni, chat bot fi Slack ma Jira u kalendarju.
  • Ibbilanċja t-tagħbija. Ejja nagħtu ħarsa aktar mill-qrib hawn.

Ejja ngħidu li hemm servizz li jattira 50 ruħ. Taħtha hemm magna virtwali b'ħardwer dgħajjef. Minn żmien għal żmien, it-tagħbija fuq is-servizz tiżdied b'mod sinifikanti. Imbagħad ħardwer dgħajjef ma jistax ilaħħaq.

Tista 'tinkludi balancer fis-sistema li se tqassam it-tagħbija, ngħidu aħna, fuq tliet magni virtwali. F'dan l-istadju, ma nistgħux inbassru b'mod preċiż it-tagħbija, għalhekk inżommu ċertu ammont ta 'riżorsi għaddejjin "f'riżerva." U aħna nħallsu żejjed għall-perijodi ta' waqfien.

F'sitwazzjoni bħal din, nistgħu ottimizzaw is-sistema permezz ta 'approċċ ibridu: inħallu magna virtwali waħda wara l-bilanċjar tat-tagħbija u npoġġu link għall-Endpoint Serverless b'funzjonijiet. Jekk it-tagħbija taqbeż il-limitu, il-balancer iniedi każijiet ta 'funzjoni li jieħdu f'idejhom parti mill-ipproċessar tat-talba.

Serverless fuq xtillieri
Għalhekk, Serverless jista 'jintuża fejn ikun meħtieġ li jiġi pproċessat numru kbir ta' talbiet mhux ta 'spiss wisq, iżda b'mod intensiv. F'dan il-każ, it-tmexxija ta 'diversi funzjonijiet għal 15-il minuta hija aktar profittabbli milli żżomm magna virtwali jew server il-ħin kollu.

Bil-vantaġġi kollha tal-kompjuters mingħajr servers, qabel l-implimentazzjoni, l-ewwel għandek tevalwa l-loġika tal-applikazzjoni u tifhem liema problemi jistgħu jsolvu Serverless f'każ partikolari.

Serverless u Selectel

Fil Selectel aħna diġà xogħol simplifikat ma' Kubernetes permezz tal-pannell tal-kontroll tagħna. Issa qed nibnu l-pjattaforma FaaS tagħna stess. Irridu li l-iżviluppaturi jkunu jistgħu jsolvu l-problemi tagħhom billi jużaw Serverless permezz ta 'interface konvenjenti u flessibbli.

Jekk għandek ideat dwar x'għandha tkun il-pjattaforma FaaS ideali u kif trid tuża Serverless fil-proġetti tiegħek, aqsamhom fil-kummenti. Aħna se nqisu x-xewqat tiegħek meta niżviluppaw il-pjattaforma.
 
Materjali użati fl-artikolu:

Sors: www.habr.com

Żid kumment