Mazano uye zviwanikwa zvekuvaka serverless application

Mazano uye zviwanikwa zvekuvaka serverless application
Kunyangwe matekinoroji asina maseva akakurumidza kuwana mukurumbira mumakore achangopfuura, kuchine zvakawanda zvisirizvo uye kutya kwakabatana nazvo. Kutsamira kwemutengesi, maturusi, manejimendi emitengo, kutanga kutonhora, kutarisa, uye budiriro yehupenyu ese misoro inopisa kana zvasvika kune serverless matekinoroji. Muchinyorwa chino, tichaongorora mimwe yemisoro yakataurwa, pamwe nekugovera matipi uye zvinongedzo kune anobatsira masosi eruzivo kubatsira vanotanga kugadzira zvine simba, zvinochinjika, uye zvinodhura-zvinoshanda serverless application.

Masconceptions Pamusoro peServerless Technologies

Vanhu vazhinji vanofunga kuti serverless uye serverless processing (Inoshanda seSevhisi, FaaS) zvinenge zvakafanana. Izvi zvinoreva kuti mutsauko hauna kunyanya kukura uye zvakakodzera kuunza hutsva. Kunyangwe AWS Lambda yaive imwe yenyeredzi dzeiyo serverless heyday uye chimwe chezvinhu zvinonyanya kufarirwa zveiyo serverless architecture, zvisinei, iyi dhizaini yakawanda kupfuura FaaS.

Nheyo yakakosha kuseri kweserverless tekinoroji ndeyekuti haufanirwe kunetseka nezve kutonga uye kuyera zvivakwa zvako, unobhadhara chete zvaunoshandisa. Masevhisi mazhinji anokodzera aya maitiro - AWS DynamoDB, S3, SNS kana SQS, Graphcool, Auth0, Zvino, Netlify, Firebase uye nevamwe vazhinji. Kazhinji, serverless zvinoreva kushandisa iro rakazara simba regore computing pasina chikonzero chekubata zvivakwa uye kukwirisa kuti zvikure. Zvinoreva zvakare kuti chengetedzo padanho rezvivakwa haisisiri nyaya yako, inova bhenefiti huru yakapihwa kuoma uye kuomarara kwekusangana nemitemo yekuchengetedza. Chekupedzisira, haufanirwe kutenga zvivakwa zvakapihwa kwauri.

Serverless inogona kutorwa se "chimiro chepfungwa": imwe pfungwa kana uchigadzira mhinduro. Dzivisa nzira dzinoda kuchengetedzwa kwezvivakwa zvese. Nemaitiro asina server, isu tinopedza nguva tichigadzirisa mabasa anobata zvakananga purojekiti uye anounza mabhenefiti kune vashandisi vedu: isu tinogadzira inogoneka bhizinesi pfungwa, gadzira nzvimbo dzevashandisi, uye gadzira inoshanduka uye yakavimbika APIs.

Semuenzaniso, kana zvichikwanisika kudzivirira kutonga uye kuchengetedza yemahara mavara ekutsvaga chikuva, saka ndizvo zvatichaita. Iyi nzira yekuvaka maapplication inogona kukurumidzira zvakanyanya nguva yekushambadzira, nekuti iwe hauchadi kufunga nezve manejimendi akaomarara. Bvisa mabasa uye mutengo wekutarisira zvivakwa uye tarisa pakuvaka maapplication uye masevhisi anodiwa nevatengi vako. Patrick Debois akadana nzira iyi 'kushanda', izwi rinogamuchirwa munharaunda isina server. Mabasa anofanirwa kutariswa sechinongedzo kumasevhisi seanotakurika modules (panzvimbo yekuendesa raibhurari yese kana webhu application). Izvi zvinopa zvinoshamisa granularity yekugadzirisa kutumirwa uye shanduko kune iyo application. Kana iwe usingakwanise kuendesa mabasa nenzira iyi, zvino zvinogona kuratidza kuti mabasa anoita mabasa akawandisa uye anoda kudzokororwa.

Vamwe vanovhiringidzika nekutsamira kune mutengesi pakugadzira maapplication egore. Izvi zvakafanana neserverless tekinoroji, uye iyi haisati iri pfungwa isiriyo. Mune ruzivo rwedu, kuvaka serverless application paAWS, yakasanganiswa nekugona kweAWS Lambda kuunganidza mamwe masevhisi eAWS pamwechete, chikamu chesimba rezvivakwa zvisina server. Uyu muenzaniso wakanaka wekubatana, kana mhedzisiro yemubatanidzwa inopfuura kungoita huwandu hwematemu. Kuedza kudzivirira kuvimba nevatengesi kunogona kupinda mune mamwe matambudziko. Paunenge uchishanda nemidziyo, zviri nyore kubata yako wega abstraction layer pakati pevanopa makore. Asi kana zvasvika kune serverless mhinduro, kuedza hakubhadhare, kunyanya kana mutengo-unobudirira ukatariswa kubva pakutanga. Iva nechokwadi chekuziva kuti vatengesi vanopa sei masevhisi. Mamwe masevhisi akasarudzika anovimba nenzvimbo dzekubatanidza nevamwe vatengesi uye anogona kupa plug-uye-kutamba yekubatanidza kunze kwebhokisi. Zviri nyore kupa Lambda kufona kubva kune gedhi API endpoint pane kupa proxy chikumbiro kune imwe mudziyo kana EC2 muenzaniso. Graphcool inopa kurongeka kuri nyore neAuth0, zviri nyore pane kushandisa wechitatu bato echokwadi maturusi.

Kusarudza mutengesi akakodzera kune yako serverless application isarudzo yekuvaka. Paunenge uchigadzira application, hautarisire kuti rimwe zuva kudzoka kune manejimendi maseva. Kusarudza mutengesi wegore hakuna kusiyana nekusarudza kushandisa midziyo kana dhatabhesi, kana kunyange mutauro wepurogiramu.

Funga nezve:

  • Ndeapi masevhisi aunoda uye nei.
  • Ndeapi masevhisi gore vanopa uye kuti ungavasanganisa sei neyako yakasarudzwa FaaS mhinduro.
  • Ndeipi mitauro yepurogiramu inotsigirwa (ine simba kana static typing, yakaunganidzwa kana kududzirwa, chii mabhenji, chii chiri kuita pakutonhora kwekutanga, chii chakavhurika sosi ecosystem, nezvimwewo).
  • Ndezvipi zvaunoda kuchengetedza (SLA, 2FA, OAuth, HTTPS, SSL, nezvimwewo).
  • Maitiro ekugadzirisa yako CI / CD uye software yekuvandudza kutenderera.
  • Ndedzipi zvigadziriso-se-code mhinduro iwe dzaunogona kutora mukana nazvo.

Kana iwe ukawedzera application iripo uye nekuwedzera kuwedzera serverless mashandiro, izvi zvinogona kudzikisira hunyanzvi huripo. Nekudaro, dzinenge dzese serverless tekinoroji dzinopa imwe mhando yeAPI (kuburikidza neREST kana meseji mitsara) iyo inokutendera iwe kuti ugadzire mawedzero akazvimirira eiyo musimboti wekushandisa uye nekubatanidza nyore. Tsvaga masevhisi ane API akajeka, zvinyorwa zvakanaka, uye nharaunda yakasimba, uye haugone kukanganisa. Kureruka kwekubatanidza kunogona kazhinji kuve yakakosha metric, uye pamwe ndicho chimwe chezvikonzero zvikuru nei AWS yakabudirira kudaro kubva pakaburitswa Lambda muna 2015.

Kana Serverless Yakanaka

Serverless tekinoroji inogona kuiswa pese pese. Nekudaro, zvakanakira zvavo hazvina kuganhurirwa kune imwe chete nzira yekushandisa. Iyo chipingamupinyi chekupinda kwe cloud computing nhasi yakaderera nekuda kwe serverless tekinoroji. Kana vanogadzira vaine zano, asi vasingazive maitiro ekugadzirisa makore uye nekukwirisa mitengo, saka havafanire kutsvaga imwe mhando yeinjiniya kuti azviite. Kana yekutanga ichida kuvaka chikuva asi kutya kuti mitengo inogona kubuda mukutonga, vanogona kutendeukira nyore kune serverless mhinduro.

Nekuda kwekuchengetedza mutengo uye kureruka kwekuyera, serverless mhinduro dzinoshanda zvakaenzana kune ese emukati nekunze masisitimu, kusvika kune yewebhu application ine mamiriyoni akawanda evateereri. Maakaundi anoyerwa kwete mumaeuro, asi mumasendi. Kurenda iyo yakapfava muenzaniso yeAWS EC2 (t1.micro) kwemwedzi inodhura € 15, kunyangwe iwe usingaite chinhu nayo (ndiani asina kumbokanganwa kuidzima?!). Mukuenzanisa, kuti usvike padanho iri rekushandisa mukati menguva imwe chete yenguva, waizoda kumhanya 512 MB Lambda kwesekondi imwe ingangoita mamirioni matatu. Uye kana ukasashandisa chimiro ichi, saka hapana chaunobhadhara.

Nekuti serverless inonyanya kufambiswa nechiitiko, zviri nyore kuti uwedzere serverless masisitimu kune ekare masisitimu. Semuenzaniso, uchishandisa AWS S3, Lambda, uye Kinesis, unogona kugadzira basa rekuongorora rekare rekutengesa system inogona kugamuchira data kuburikidza neAPI.

Mazhinji mapuratifomu asina server anotsigira mitauro yakawanda. Kazhinji kazhinji iPython, JavaScript, C #, Java uye Go. Kazhinji hapana zvirambidzo pakushandiswa kwemaraibhurari mumitauro yese, saka unogona kushandisa aunofarira akavhurika sosi maraibhurari. Nekudaro, zvinokurudzirwa kuti usashandise zvisizvo kutsamira kuitira kuti mabasa ako aite nemazvo uye usarambe mabhenefiti ehukuru scalability yeako serverless application. Iyo yakawanda mapakeji inoda kutakurwa mumudziyo, iyo nguva inotonhora inotanga kutora.

Kutanga kunotonhora ndipo paunotanga kuda kutanga mudziyo, nguva yekumhanyisa, uye chibatiso chekukanganisa usati wazvishandisa. Nekuda kweizvi, kunonoka mukuita kwemabasa kunogona kusvika kumasekonzi matatu, uye iyi haisiyo yakanakisa sarudzo yevashandisi vasina moyo murefu. Nekudaro, kutonhora kunotanga kuitika pakufona kwekutanga mushure memaminitsi mashoma ekuita zvisina basa. Saka vazhinji vanofunga kuti uku kutsamwisa kudiki kunogona kushandirwa nekugara uchingo pingudza basa kuti rirambe rakaita basa. Kana kuti vanofuratira chinhu ichi zvachose.

Kunyangwe AWS yakaburitswa serverless SQL database Serverless AuroraNekudaro, SQL dhatabhesi haina kunaka kune ichi chishandiso, sezvo ichitsamira pakubatanidza kuita kutengeserana, iyo inogona kukurumidza kuita bhodhoro neinorema traffic paAWS Lambda. Ehe, vanogadzira vari kugara vachivandudza Serverless Aurora, uye iwe unofanirwa kuyedza nayo, asi nhasi NoSQL mhinduro senge. dynamodb. Zvisinei, hapana mubvunzo kuti mamiriro ezvinhu aya achachinja nokukurumidza.

Iyo toolkit inoisawo zvirambidzo zvakawanda, kunyanya mumunda wekuyedzwa kwenzvimbo. Kunyangwe paine mhinduro dzakaita seDocker-Lambda, DynamoDB Yemunharaunda uye LocalStack, dzinoda kushanda nesimba uye huwandu hwakakosha hwekugadzirisa. Nekudaro, ese mapurojekiti aya anoshingairira kugadzirwa, saka ingori nyaya yenguva kuti turusi rekushandisa risvike padanho ratinoda.

Iko kukanganisa kwe serverless tekinoroji pane yekuvandudza kutenderera

Nekuda kwekuti zvivakwa zvako zvingori zvigadziriso, unogona kutsanangura nekuisa kodhi uchishandisa zvinyorwa, senge shell scripts. Kana kuti iwe unogona kushandisa kumisikidza-se-code kirasi mhinduro senge AWS CloudFormation. Kunyangwe sevhisi iyi isingape zvigadziriso zvenzvimbo dzese, inokutendera iwe kutsanangura zviwanikwa zvekushandisa seLambda mabasa. Ndokunge, uko CloudFormation inotadza iwe, unogona kunyora yako sosi (Lambda basa) inovhara iyi gap. Nenzira iyi unogona kuita chero chinhu, kunyangwe gadzirisa zvinotsamira kunze kwenzvimbo yako yeAWS.

Nekuti zvese zvangori zvigadziriso, unogona kugadzirisa ako ekutumira zvinyorwa kune chaiwo nharaunda, matunhu, uye vashandisi, kunyanya kana iwe uchishandisa zvivakwa-se-code mhinduro se CloudFormation. Semuenzaniso, unogona kuendesa kopi yezvivakwa zvebazi rega rega mune repository kuitira kuti iwe uvaedze zvizere uri wega panguva yekusimudzira. Izvi zvinomhanyisa zvakanyanya mhinduro kune vanogadzira kana vachida kunzwisisa kana kodhi yavo inoshanda zvakaringana munzvimbo inorarama. Mamaneja haafanire kunetsekana nezve mutengo wekutumira akawanda nharaunda, sezvo ivo vachibhadhara chete kushandiswa chaiko.

MaDevOps ane zvishoma zvekunetseka nazvo sezvo ivo vachingoda kuve nechokwadi chekuti vanogadzira vane chaiyo yekumisikidzwa. Hapasisina kutonga zviitiko, zvienzaniso, kana mapoka ekuchengetedza. Nokudaro, izwi rokuti NoOps riri kuwedzera kushandiswa, kunyange zvazvo zvichiri kukosha kukwanisa kugadzirisa zvivakoti, kunyanya kana zvasvika pakugadzirisa kweIAM nekugadzirisa kwehupfumi hwegore.

Kune ane simba kwazvo ekutarisa uye maturusi ekuona seEpsagon, Thundra, Dashbird uye IOPipe. Ivo vanokutendera kuti utarise mamiriro azvino eako serverless application, kupa kutema matanda uye kuteedzera, kutora mashandiro emetrics uye mabhodhoro ekuvaka, ita ongororo yemitengo uye kufanotaura, nezvimwe. Ivo havangope mainjiniya eDevOps, vanogadzira, uye vanogadzira maonero akazara ekuita kwekushandisa, asi zvakare vanobvumira mamaneja kuti vatarise mamiriro ezvinhu munguva chaiyo, nesekondi yega yega zviwanikwa mari uye mutengo wekufanotaura. Zvakanyanya kuoma kuronga izvi nehurongwa hunogadziriswa.

Kugadzira maapplication asina server kuri nyore nekuti haufanirwe kuendesa maseva ewebhu, maneja chaiwo muchina kana midziyo, zvigamba maseva, masisitimu anoshanda, magedhi einternet, nezvimwe. Nekubvisa mabasa ese aya, dhizaini isina server inogona kutarisa pane yakakosha - mhinduro.bhizinesi uye zvinodiwa nevatengi.

Nepo iyo kiti yezvishandiso ichigona kuve nani (inova nani zuva rega rega), vagadziri vanogona kutarisa pakuita bhizinesi pfungwa uye kugovera zvakanyanya kuoma kwechishandiso mumasevhisi akasiyana mukati mekuvaka. Serverless application manejimendi ndeye chiitiko chakavakirwa uye chakavharwa nemupi wegore (semuenzaniso SQS, S3 zviitiko kana DynamoDB hova). Naizvozvo, vanogadzira vanongoda kunyora bhizinesi rekuita kuti vapindure kune zvimwe zviitiko, uye havafanirwe kunetseka nezvekuti ungaite sei dhatabhesi uye meseji mitsara, kana kuronga basa rakakwana nedata mune chaiyo hardware storages.

Code inogona kumhanyiswa nekugadziriswa munharaunda, sekune chero maitiro ekuvandudza. Unit test inoramba yakafanana. Iko kugona kuendesa iyo yese application sisitimu ine yakajairwa stack gadziriso inobvumira vanogadzira kukurumidza kuwana yakakosha mhinduro pasina kufunga nezve mutengo wekuyedzwa kana kukanganisa kune inodhura inochengetedzwa nharaunda.

Zvishandiso uye matekiniki ekuvaka serverless application

Iko hakuna chaiyo nzira yekuvaka serverless application. Zvakare seti yebasa rebasa iri. AWS ndiye mutungamiri pakati peakasimba serverless mhinduro nhasi, asi tarisa zvakare Google Cloud, Edza ΠΈ Firebase. Kana iwe uri kushandisa AWS, saka inokurudzirwa nzira yekuunganidza zvikumbiro ndeye Serverless Application Model (SAM), kunyanya kana uchishandisa C#, nekuti Visual Studio ine maturusi makuru. Iyo SAM CLI inogona kuita zvese zvinogona kuitwa neVisual Studio, saka hapana chaunorasikirwa nacho kana ukachinja kune imwe IDE kana mameseji edhita. Ehe, SAM inoshanda nemimwe mitauro zvakare.

Kana iwe uchinyora mune mimwe mitauro, iyo Serverless Framework yakanakisa yakavhurika sosi chishandiso chinokutendera kuti ugadzirise chero chinhu chine simba kwazvo YAML faira yekumisikidza. Iyo Serverless Framework inotsigirawo akasiyana masevhisi emakore, saka isu tinoikurudzira kune avo vari kutsvaga akawanda-makore mhinduro. Iyo ine nharaunda yakakura yakagadzira boka remapulagi kune chero chinodiwa.

Zvekuyedzwa kwenzvimbo, iyo yakavhurika sosi maturusi Docker-Lambda, Serverless Yemunharaunda, DynamoDB Yemunharaunda, uye LocalStack akanyatso kuenderana. Serverless tekinoroji ichiri mumatanho ekutanga ebudiriro, sezvakaita maturusi kwavari, saka kana uchigadzirira mamiriro ebvunzo akaomarara, uchafanirwa kushanda nesimba. Nekudaro, kungoisa stack munzvimbo uye kuyedzwa ikoko kwakachipa zvakachipa. Uye iwe haufanire kugadzira iyo chaiyo yemunharaunda kopi yemakore nharaunda.

Shandisa AWS Lambda Layers kudzikisa saizi yemapakeji akaiswa uye nekumhanyisa kurodha.

Shandisa mitauro yepurogiramu yakakodzera kune mamwe mabasa. Mitauro yakasiyana ine zvayakanakira nezvayakaipira. Kune akawanda mabhenji, asi JavaScript, Python, uye C# (.NET Core 2.1+) ndivo vatungamiri maererano neAWS Lambda performance. AWS Lambda ichangobva kuunza Runtime API iyo inokutendera kuti utaure mutauro wako waunoda uye nharaunda yekumhanya, saka edza.

Chengeta masaizi epasuru ari madiki kuti uendeswe. Iwo madiki, anokurumidza kutakura. Dzivisa kushandisa maraibhurari makuru, kunyanya kana iwe ukashandisa akati wandei maficha kubva kwavari. Kana iwe uri kuronga muJavaScript, shandisa chishandiso chekuvaka senge Webpack kukwidziridza kuvaka kwako uye kungosanganisira izvo zvauri kuda chaizvo. .NET Core 3.0 ine QuickJit uye Tiered Compilation iyo inovandudza kushanda uye inobatsira zvakanyanya pakutonhora kunotanga.

Kuvimbika kwemabasa asina server pane zviitiko zvinogona kuita kuti zviome kurongedza bhizinesi pfungwa pakutanga. Panyaya iyi, mitsetse yemameseji uye michina yenyika inogona kubatsira zvakanyanya. Lambda mabasa anogona kufonerana, asi ita izvi chete kana usingatarisiri mhinduro ("moto uye kanganwa") - haudi kubhadhariswa kumirira rimwe basa kuti ripedze. Mitsetse yemharidzo inobatsira kutsaura zvikamu zvebhizinesi pfungwa, kubata mabhodhoro ekushandisa, uye kugadzirisa kutengeserana (uchishandisa FIFO mitsara). Mabasa eAWS Lambda anogona kugoverwa kumitsara yeSQS semitsetse yemeseji yakanamatira inochengeta meseji yakakundikana yekuzoongororwa gare gare. AWS Nhanho Mabasa (mashini ehurumende) anobatsira kwazvo pakugadzirisa maitiro akaoma anoda kusungirirwa kwemabasa. Panzvimbo pebasa reLambda rinodaidza rimwe basa, Nhanho mabasa anogona kurongedza shanduko yenyika, kupfuudza data pakati pemabasa, uye kutonga mamiriro epasi rose emabasa. Izvi zvinokutendera kuti utsanangure mamiriro ekuedza zvakare, kana zvekuita kana imwe mhosho yaitika - chishandiso chine simba mune mamwe mamiriro.

mhedziso

Mumakore achangopfuura, matekinoroji asina server anga achikura nekukurumidza zvisati zvamboitika. Pane dzimwe pfungwa dzisiridzo dzine chekuita neiyi paradigm shift. Nekubvisa zvivakwa uye kuyera manejimendi, serverless mhinduro dzinopa zvakakosha mabhenefiti, kubva kurerutswa budiriro uye DevOps maitiro kusvika kudzikisira kukuru mumitengo yekushandisa.
Nepo iyo serverless nzira isiri isina zvipingamupinyi zvayo, kune yakasimba dhizaini mapatani ayo anogona kushandiswa kuvaka yakasimba serverless application kana kubatanidza serverless zvinhu muzvivakwa zviripo.

Source: www.habr.com

Voeg