Li ser rafikan bê server

Li ser rafikan bê server
Serverless ne li ser tunebûna laşî ya pêşkêşkeran e. Ev ne qatilek konteyneran an meylek derbasbûnê ye. Ev nêzîkatiyek nû ye ji bo avakirina pergalên di ewr de. Di gotara îro de em ê li ser mîmariya serîlêdanên Serverless rawestin, ka em bibînin ka çi rola pêşkêşkerê karûbarê Serverless û projeyên çavkaniya vekirî dileyzin. Di dawiyê de, em li ser pirsgirêkên karanîna Serverless biaxivin.

Ez dixwazim beşek serverek serîlêdanek (an tewra firotgehek serhêl) binivîsim. Ev dibe ku chat, karûbarek weşana naverokê, an balansek barkirinê be. Di her rewşê de, dê gelek serêş hebin: hûn ê neçar bin ku binesaziyê amade bikin, girêdanên serîlêdanê diyar bikin, û li ser pergala xebitandina mêvandar bifikirin. Dûv re hûn ê hewce bikin ku hêmanên piçûk ên ku bandorê li operasyona mayî ya monolîtê nakin nûve bikin. Welê, em di bin barkirinê de pîvandinê ji bîr nekin.

Ger em konteynerên efemeral bigirin, ku tê de girêdanên pêwîst ji berê ve hatine saz kirin, û konteynir bixwe ji hev û ji OS-ya mêvandar têne veqetandin? Em ê monolîtê di nav mîkroservisan de dabeş bikin, ku her yek ji yên din dikare serbixwe were nûve kirin û pîvandin. Bi danîna kodê di konteynerek wusa de, ez dikarim wê li ser her binesaziyê bimeşînim. Jixwe baştir.

Ger hûn nexwazin konteyneran mîheng bikin çi? Ez naxwazim li ser mezinkirina serîlêdanê bifikirim. Ez naxwazim dema ku barkirina karûbarê hindik be, ji bo konteynerên bêkar ên ku dixebitin bidin. Ez dixwazim kodê binivîsim. Li ser mantiqa karsaziyê bisekinin û hilberan bi leza ronahiyê derxînin bazarê.

Ramanên weha ez birin ber bi komputera bê server. Di vê rewşê de bê server tê wateya ne nebûna laşî ya pêşkêşkeran, lê nebûna serêşên rêveberiya binesaziyê.

Fikir ev e ku mantiqa serîlêdanê di nav fonksiyonên serbixwe de tê dabeş kirin. Avahiya wan a bûyerê heye. Her fonksiyonek yek "microtask" pêk tîne. Tiştê ku ji pêşdebiran tê xwestin ev e ku fonksiyonan li konsola ku ji hêla peydakerê cloudê ve hatî peyda kirin bar bike û wan bi çavkaniyên bûyerê re têkildar bike. Kod dê li gorî daxwazê ​​di konteynirek bixweber amadekirî de were darve kirin, û ez ê tenê ji bo dema darvekirinê bidim.

Ka em bibînin ka pêvajoya pêşkeftina serîlêdanê dê nuha çawa xuya bike.

Ji aliyê pêşdebiran

Berê me dest bi axaftinê li ser serîlêdanek ji bo firotgehek serhêl kir. Di nêzîkatiya kevneşopî de, mantiqa sereke ya pergalê ji hêla serîlêdana monolîtîk ve tête kirin. Û servera bi serîlêdanê re bi domdarî dimeşe, hetta ku bar tune be.

Ji bo ku em berbi bê server ve biçin, em serîlêdanê di microtasks de vediqetînin. Em ji bo her yek ji wan fonksiyona xwe dinivîsin. Fonksiyon ji hev serbixwe ne û agahdariya dewletê (bêdewlet) naparêzin. Dibe ku ew bi zimanên cuda jî bên nivîsandin. Ger yek ji wan "keve", dê tevahiya serîlêdanê nemîne. Mîmariya serîlêdanê dê bi vî rengî xuya bike:

Li ser rafikan bê server
Dabeşkirina fonksiyonan di Serverless de mîna xebata bi mîkroxizmetan re ye. Lê mîkroxizmetek dikare çend karan pêk bîne, û fonksiyonek divê bi îdeal yek pêk bîne. Ka em bifikirin ku peywir berhevkirina statîstîkan e û li gorî daxwaza bikarhêner wan nîşan dide. Di nêzîkatiya microservice de, peywirek ji hêla yek karûbar ve bi du xalên têketinê ve tête kirin: nivîsandin û xwendin. Di komputera bê server de, ew ê du fonksiyonên cûda bin ku bi hevûdu re ne girêdayî ne. Pêşdebir çavkaniyên komputerê xilas dike heke, mînakî, statîstîk ji ya ku têne dakêşandin pir caran têne nûve kirin.

Pêdivî ye ku fonksiyonên bê server di demek kurt de (timeout), ku ji hêla pêşkêşkarê karûbarê ve hatî destnîşankirin de bêne darve kirin. Mînakî, ji bo AWS dem 15 hûrdem e. Ev tê vê wateyê ku fonksiyonên jiyîna dirêj dê bêne guheztin da ku li gorî hewcedariyên li gorî hewcedariyan werin guheztin - ev e ya ku Serverless ji teknolojiyên din ên populer ên îro cuda dike (konteyner û Platforma wekî Karûbar).

Em ji her fonksiyonê re bûyerek destnîşan dikin. Bûyerek ji bo çalakiyekê ye:

Bûyer
Çalakiya ku fonksiyonê dike

Wêneyek hilberek li depoyê hate barkirin.
Wêne tevlihev bikin û li pelrêçekê bar bikin

Navnîşana firotgeha fîzîkî di databasê de hate nûve kirin
Cihek nû li nexşeyan bar bikin

Xerîdar heqê tiştan dide
Pêvajoya dravdanê dest pê bikin

Bûyer dikarin daxwazên HTTP, daneya veguhêz, rêzikên peyaman û hwd bin. Çavkaniyên bûyerê guhertin an jî rûdanên daneyan in. Wekî din, fonksiyon dikarin ji hêla demjimêrkek ve werin dest pê kirin.

Mîmarî hate xebitandin, û serîlêdan hema hema bê server bû. Piştre em diçin pêşkêşvanê karûbarê.

Ji aliyê pêşkêşker

Bi gelemperî, hesabkirina bê server ji hêla pêşkêşkerên karûbarê cloudê ve tê pêşkêş kirin. Ew bi rengek cûda têne gotin: Fonksiyonên Azure, AWS Lambda, Google Cloud Functions, IBM Cloud Functions.

Em ê karûbarê bi konsolê pêşkêşker an hesabê kesane bikar bînin. Koda fonksiyonê dikare bi yek ji awayên jêrîn were dakêşandin:

  • bi navgîniya konsolê malperê di edîtorên çêkirî de kodê binivîsin,
  • arşîvê bi kodê dakêşin,
  • bi depoyên git yên giştî an taybet re bixebitin.

Li vir em bûyerên ku fonksiyonê dibêjin saz dikin. Komên bûyeran dikarin ji bo pêşkêşkerên cûda cûda bibin.

Li ser rafikan bê server

Pêşkêşker li ser binesaziya xwe pergala Fonksiyona Karûbarek (FaaS) çêkir û otomatîk kir:

  1. Koda fonksiyonê li kêleka pêşkêşkarê di hilanînê de bi dawî dibe.
  2. Dema ku bûyerek diqewime, konteynerên bi hawîrdorek amadekirî bixweber li ser serverê têne bicîh kirin. Her mînakek fonksiyonê konteynerek xweya veqetandî heye.
  3. Ji hilanînê, fonksiyon ji konteynerê re tê şandin, tê hesibandin, û encamê vedigerîne.
  4. Hejmara bûyerên paralel zêde dibe - hejmara konteyneran zêde dibe. Pergal bixweber pîvaz dibe. Ger bikarhêner negihîjin fonksiyonê, ew ê neçalak be.
  5. Pêşkêşker dema bêkêmasî ji bo konteyneran destnîşan dike - heke di vê demê de fonksiyonên di konteynerê de dernekevin, ew tê hilweşandin.

Bi vî awayî em Serverless ji qutîkê derdixin. Em ê ji bo karûbarê bi karanîna modela pay-as-te-go û tenê ji bo wan fonksiyonên ku têne bikar anîn, û tenê ji bo dema ku ew hatine bikar anîn bidin.

Ji bo danasîna pêşdebiran bi karûbarê re, pêşkêşvan heya 12 mehan ceribandina belaş pêşkêşî dikin, lê dema hesabkirina tevahî, hejmara daxwaznameyên mehê, fon an xerckirina hêzê sînordar dikin.

Feydeya sereke ya xebata bi pêşkêşvanek re ew e ku meriv ji binesaziyê (pêşkêşker, makîneyên virtual, konteynir) xem neke. Ji hêla xwe ve, pêşkêşker dikare FaaS hem bi karanîna pêşkeftinên xwe û hem jî bi karanîna amûrên çavkaniya vekirî bicîh bîne. Ka em bêtir li ser wan bipeyivin.

Ji aliyê çavkaniya vekirî

Civaka çavkaniya vekirî di van du salên borî de bi rengek çalak li ser amûrên Serverless dixebite. Lîstikvanên bazarê yên herî mezin jî beşdarî pêşkeftina platformên bê server dibin:

  • Gûgil amûra xweya çavkaniya vekirî pêşkêşî pêşdebiran dike - knative. IBM, RedHat, Pivotal û SAP di pêşveçûna wê de beşdar bûn;
  • IBM li ser platformek Serverless xebitî OpenWhisk, ku paşê bû projeyeke Weqfa Apache;
  • microsoft qismî koda platformê vekir Fonksiyonên Azure.

Pêşveçûn di çarçoveya çarçoveyên bê server de jî têne kirin. Kubeless и Fissiation di hundurê komên Kubernetes ên ji berê ve hatine amadekirin de hatine bicîh kirin, OpenFaaS bi Kubernetes û Docker Swarm re dixebite. Çarçove wekî celebek kontrolker tevdigere - li ser daxwazê, ew di hundurê komê de hawîrdorek dema xebitandinê amade dike, dûv re fonksiyonek li wir dide destpêkirin.

Çarçove cîh dihêlin ku amûrê li gorî hewcedariyên we mîheng bikin. Ji ber vê yekê, di Kubeless de, pêşdebirek dikare dema qedandina fonksiyonê mîheng bike (nirxa xwerû 180 çirke ye). Fission, di hewildanek ji bo çareserkirina pirsgirêka destpêka sar de, pêşniyar dike ku hin konteyneran her dem bixebitin (her çend ev lêçûnên demdirêjiya çavkaniyê vedigire). Û OpenFaaS ji bo her çêj û rengek komek tekeran pêşkêşî dike: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs û yên din.

Talîmatên ji bo destpêkirinê dikarin di belgeya fermî ya çarçoweyan de werin dîtin. Karkirina bi wan re ji dema ku bi pêşkêşvanek re dixebitin hinekî bêtir jêhatîbûn hewce dike - ev bi kêmanî şiyana destpêkirina komek Kubernetes bi CLI-yê ye. Herî zêde, amûrên din ên çavkaniya vekirî (mînakî, rêveberê rêza Kafka) têxin nav xwe.

Tevî ku em bi Serverless re çawa dixebitin - bi navgînek pêşkêşkerek an jî çavkaniya vekirî bikar bînin, em ê çend avantaj û dezawantajên nêzîkatiya Serverless bistînin.

Ji aliyê awantaj û dezawantajên

Serverless ramanên binesaziyek konteynerê û nêzîkatiyek mîkroxizmetê pêş dixe, ku tê de tîm bêyî ku bi yek platformê ve werin girêdan dikarin di moda pirzimanî de bixebitin. Avakirina pergalek hêsan e û xeletî hêsantir têne rast kirin. Mîmariya Microservice dihêle hûn fonksiyonên nû li pergalê ji ya serîlêdana monolîtîk pir zûtir zêde bikin.

Bê server dema pêşkeftinê hê bêtir kêm dike, dihêle ku pêşdebir bi tenê li ser mantiq û kodkirina karsaziya serîlêdanê hûr bibe. Wekî encamek, dema bazarê ji bo pêşveçûnan kêm dibe.

Wekî bonus, em ji bo barkirinê pîvana otomatîkî digirin, û em tenê ji bo çavkaniyên ku têne bikar anîn û tenê di dema ku ew têne bikar anîn de didin.

Mîna her teknolojiyê, Serverless kêmasiyên xwe hene.

Mînakî, kêmasiyek wusa dibe ku dema destpêkirina sar be (bi navînî heya 1 çirkeyê ji bo zimanên wekî JavaScript, Python, Go, Java, Ruby).

Ji aliyek ve, di rastiyê de, dema destpêkirina sar bi gelek guherbaran ve girêdayî ye: zimanê ku fonksiyon pê tê nivîsandin, hejmara pirtûkxaneyan, hêjeya kodê, danûstendina bi çavkaniyên zêde re (heman databases an pêşkêşkerên pejirandinê). Ji ber ku pêşdebir van guherbaran kontrol dike, ew dikare dema destpêkirinê kêm bike. Lê ji hêla din ve, pêşdebir nikare dema destpêkirina konteynerê kontrol bike - ew hemî bi pêşkêşker ve girêdayî ye.

Destpêkek sar dikare bibe destpêkek germ dema ku fonksiyonek konteynerek ku ji hêla bûyerek berê ve hatî destpêkirin ji nû ve bikar tîne. Ev rewş dê di sê rewşan de derkeve holê:

  • heke xerîdar bi gelemperî karûbarê bikar tînin û hejmara bangên fonksiyonê zêde dibe;
  • heke pêşkêşker, platform an çarçove destûrê dide we ku hûn hin konteyneran her dem bixebitin;
  • heke pêşdebir fonksiyonan li ser demjimêrek dimeşîne (dibêjin her 3 hûrdem).

Ji bo gelek serlêdanan, destpêkek sar ne pirsgirêk e. Li vir hûn hewce ne ku li ser celeb û karên karûbarê ava bikin. Derengiya destpêka duyemîn her gav ji bo serîlêdanek karsaziyê ne krîtîk e, lê ew dikare ji bo karûbarên bijîjkî krîtîk bibe. Di vê rewşê de, nêzîkatiya bê server dê êdî guncan nebe.

Kêmasiya paşîn a Serverless temenê kurt a fonksiyonê ye (dema ku tê de fonksiyon divê were darve kirin).

Lê, heke hûn neçar in ku bi peywirên demdirêj re bixebitin, hûn dikarin mîmariyek hîbrîd bikar bînin - Serverless bi teknolojiyek din re tevlihev bikin.

Ne hemî pergal dê nikaribin bi karanîna nexşeya Serverless bixebitin.

Hin serîlêdan dê hîn jî di dema darvekirinê de daneyan û dewletê hilînin. Hin mîmarî dê yekdest bimînin û hin taybetmendî dê demdirêj bimînin. Lêbelê (mîna teknolojiyên ewr û dûv re konteyneran), Serverless teknolojiyek bi pêşerojek mezin e.

Di vî warî de, ez dixwazim bi aramî biçim ser mijara karanîna nêzîkatiya Serverless.

Ji aliyê serîlêdanê ve

Ji bo 2018, rêjeya karanîna Serverless yek carî û nîv mezin bû. Di nav pargîdaniyên ku berê teknolojî di karûbarên xwe de bicîh kirine de dêwên bazarê yên wekî Twitter, PayPal, Netflix, T-Mobile, Coca-Cola hene. Di heman demê de, hûn hewce ne ku fêm bikin ku Serverless ne panacea ye, lê amûrek ji bo çareserkirina hin pirsgirêkan e:

  • Demjimêra çavkaniyê kêm bikin. Ne hewce ye ku bi domdarî makîneyek virtual ji bo karûbarên ku çend bang hene bihêlin.
  • Daneyên pêvajoyê li ser firînê. Wêneyan berhev bikin, paşxanan jê bikin, kodkirina vîdyoyê biguhezînin, bi senzorên IoT re bixebitin, operasyonên matematîkî pêk bînin.
  • Karûbarên din bi hev re "Glue". Depoya Git bi bernameyên navxweyî, chat bot li Slack bi Jira û salname.
  • Balansa barkirinê. Ka em li vir ji nêz ve binerin.

Em bêjin xizmetek heye ku 50 kesî dikişîne. Di binê wê de makîneyek virtual bi hardware qels heye. Dem bi dem, barkirina karûbar bi girîngî zêde dibe. Dûv re hardware qels nikare bi ser keve.

Hûn dikarin di pergalê de balansek ku dê barkirinê, bêje, li ser sê makîneyên virtual belav bike, bicîh bikin. Di vê qonaxê de, em nekarin barkirinê rast pêşbîn bikin, ji ber vê yekê em hejmarek çavkaniyê "di rezervan de" digirin. Û em ji bo demdirêjiyê zêde didin.

Di rewşek wusa de, em dikarin pergalê bi rêgezek hybrid ve xweştir bikin: em yek makîneyek virtual li pişt hevsengiya barkirinê dihêlin û bi fonksiyonan ve girêdanek bi Endpointa Serverless re danîne. Ger bar ji tixûbê derbas bibe, balansek fonksiyonên ku beşek ji pêvajoya daxwaznameyê digirin dest pê dike.

Li ser rafikan bê server
Ji ber vê yekê, Serverless dikare were bikar anîn li cîhê ku hewce ye ku hejmareke mezin ji daxwazan ne pir caran, lê bi zexmî were xebitandin. Di vê rewşê de, xebitandina çend fonksiyonan ji bo 15 hûrdeman ji domandina makîneyek virtual an serverek her dem sûdmendtir e.

Digel hemî avantajên komputera bê server, berî bicîhkirinê, divê hûn pêşî mantiqa serîlêdanê binirxînin û fam bikin ka Serverless dikare di rewşek taybetî de çi pirsgirêkan çareser bike.

Serverless û Selectel

Li Selectel em berê ne bi Kubernetes re xebata hêsan kirin bi rêya panela kontrola me. Naha em platforma xwe ya FaaS ava dikin. Em dixwazin ku pêşdebiran bikarin pirsgirêkên xwe bi karanîna Serverless bi navgînek hêsan û maqûl çareser bikin.

Ger ramanên we hene ka platforma FaaS ya îdeal çi be û hûn çawa dixwazin di projeyên xwe de Serverless bikar bînin, wan di şîroveyan de parve bikin. Dema ku platformê pêşve bixin em ê daxwazên we li ber çavan bigirin.
 
Materyalên ku di gotarê de têne bikar anîn:

Source: www.habr.com

Add a comment