Awgrymiadau ac adnoddau ar gyfer adeiladu cymwysiadau di-weinydd

Awgrymiadau ac adnoddau ar gyfer adeiladu cymwysiadau di-weinydd
Er bod technolegau di-weinydd wedi dod yn boblogaidd yn gyflym yn ystod y blynyddoedd diwethaf, mae llawer o gamsyniadau ac ofnau yn gysylltiedig â nhw o hyd. Mae dibyniaeth ar werthwyr, offer, rheoli costau, cychwyn oer, monitro a chylch bywyd datblygu i gyd yn bynciau llosg o ran technolegau di-weinydd. Yn yr erthygl hon, byddwn yn archwilio rhai o'r pynciau a grybwyllwyd, yn ogystal â rhannu awgrymiadau a dolenni i ffynonellau gwybodaeth defnyddiol i helpu dechreuwyr i greu cymwysiadau pwerus, hyblyg a chost-effeithiol heb weinydd.

Camsyniadau Am Dechnolegau Di-weinydd

Mae llawer o bobl yn meddwl bod prosesu di-weinydd a di-weinydd (Swyddogaethau fel Gwasanaeth, FaaS) bron yr un peth. Mae hyn yn golygu nad yw'r gwahaniaeth yn rhy fawr ac mae'n werth cyflwyno newydd-deb. Er bod AWS Lambda yn un o sêr yr anterth di-weinydd ac yn un o elfennau mwyaf poblogaidd y bensaernïaeth ddi-weinydd, fodd bynnag, mae'r bensaernïaeth hon yn llawer mwy na FaaS.

Yr egwyddor sylfaenol y tu ôl i dechnolegau di-weinydd yw nad oes rhaid i chi boeni am reoli a graddio'ch seilwaith, dim ond am yr hyn rydych chi'n ei ddefnyddio y byddwch chi'n talu. Mae llawer o wasanaethau yn bodloni'r meini prawf hyn - AWS DynamoDB, S3, SNS neu SQS, Graphcool, Auth0, Now, Netlify, Firebase a llawer o rai eraill. Yn gyffredinol, mae di-weinydd yn golygu defnyddio pŵer llawn cyfrifiadura cwmwl heb yr angen i reoli seilwaith a'i optimeiddio ar gyfer graddio. Mae hefyd yn golygu nad yw diogelwch ar lefel seilwaith bellach yn bryder i chi, sy’n fantais enfawr o ystyried yr anhawster a’r cymhlethdod o gyrraedd safonau diogelwch. Yn olaf, nid oes rhaid i chi brynu'r seilwaith a ddarperir i chi.

Gellir ystyried di-weinydd yn “gyflwr meddwl”: meddylfryd penodol wrth ddylunio datrysiadau. Osgoi dulliau sy'n gofyn am gynnal a chadw unrhyw seilwaith. Gyda dull di-weinydd, rydym yn treulio amser yn datrys tasgau sy'n effeithio'n uniongyrchol ar y prosiect ac yn dod â buddion i'n defnyddwyr: rydym yn creu rhesymeg busnes cynaliadwy, yn datblygu rhyngwynebau defnyddwyr, ac yn datblygu APIs addasol a dibynadwy.

Er enghraifft, os yw’n bosibl osgoi rheoli a chynnal platfform chwilio testun rhydd, yna dyna fyddwn ni’n ei wneud. Gall y dull hwn o adeiladu cymwysiadau gyflymu'r amser i'r farchnad yn fawr, oherwydd nid oes angen i chi feddwl am reoli seilwaith cymhleth mwyach. Dileu cyfrifoldebau a chostau rheoli seilwaith a chanolbwyntio ar adeiladu'r cymwysiadau a'r gwasanaethau sydd eu hangen ar eich cwsmeriaid. Galwodd Patrick Debois y dull hwn 'gwasanaethgar', mabwysiadir y term yn y gymuned heb weinydd. Dylid meddwl am swyddogaethau fel cyswllt â gwasanaethau fel modiwlau y gellir eu defnyddio (yn lle defnyddio rhaglen llyfrgell neu we gyfan). Mae hyn yn darparu gronynnedd anhygoel ar gyfer rheoli defnydd a newidiadau i'r cais. Os na allwch ddefnyddio swyddogaethau yn y modd hwn, yna gall ddangos bod y swyddogaethau'n cyflawni gormod o dasgau a bod angen eu hailffactorio.

Mae rhai wedi'u drysu gan y ddibyniaeth ar y gwerthwr wrth ddatblygu cymwysiadau cwmwl. Mae'r un peth yn wir gyda thechnolegau di-weinydd, a phrin fod hyn yn gamsyniad. Yn ein profiad ni, mae adeiladu cymwysiadau heb weinydd ar AWS, ynghyd â gallu AWS Lambda i fwndelu gwasanaethau AWS eraill gyda'i gilydd, yn rhan o gryfder pensaernïaeth heb weinydd. Mae hon yn enghraifft dda o synergedd, pan fo canlyniad y cyfuniad yn fwy na dim ond swm y termau. Gall ceisio osgoi dibyniaeth ar werthwyr arwain at hyd yn oed mwy o broblemau. Wrth weithio gyda chynwysyddion, mae'n haws rheoli eich haen tynnu eich hun rhwng darparwyr cwmwl. Ond o ran datrysiadau di-weinydd, ni fydd yr ymdrech yn talu ar ei ganfed, yn enwedig os yw cost-effeithiolrwydd yn cael ei ystyried o'r cychwyn cyntaf. Byddwch yn siwr i ddarganfod sut mae gwerthwyr yn darparu gwasanaethau. Mae rhai gwasanaethau arbenigol yn dibynnu ar bwyntiau integreiddio â gwerthwyr eraill a gallant ddarparu cysylltedd plug-and-play allan o'r bocs. Mae'n haws darparu galwad Lambda o bwynt terfyn API porth nag i ddirprwyo'r cais i ryw gynhwysydd neu enghraifft EC2. Mae Graphcool yn darparu cyfluniad hawdd gydag Auth0, sy'n haws na defnyddio offer dilysu trydydd parti.

Mae dewis y gwerthwr cywir ar gyfer eich cais heb weinydd yn benderfyniad pensaernïol. Pan fyddwch chi'n creu cymhwysiad, nid ydych chi'n disgwyl dychwelyd un diwrnod i reoli gweinyddwyr. Nid yw dewis gwerthwr cwmwl yn ddim gwahanol na dewis defnyddio cynwysyddion neu gronfa ddata, neu hyd yn oed iaith raglennu.

Ystyriwch:

  • Pa wasanaethau sydd eu hangen arnoch a pham.
  • Pa wasanaethau y mae darparwyr cwmwl yn eu darparu a sut y gallwch eu cyfuno â'r datrysiad FaaS a ddewiswyd gennych.
  • Pa ieithoedd rhaglennu sy'n cael eu cefnogi (gyda theipio deinamig neu statig, wedi'i lunio neu ei ddehongli, beth yw'r meincnodau, beth yw'r perfformiad ar gychwyn oer, beth yw'r ecosystem ffynhonnell agored, ac ati).
  • Beth yw eich gofynion diogelwch (SLA, 2FA, OAuth, HTTPS, SSL, ac ati).
  • Sut i reoli eich CI/CD a chylchoedd datblygu meddalwedd.
  • Pa atebion seilwaith-yn-god y gallwch chi fanteisio arnynt.

Os byddwch yn ymestyn cymhwysiad sy'n bodoli eisoes ac yn ychwanegu ymarferoldeb di-weinydd yn raddol, gallai hyn gyfyngu rhywfaint ar y galluoedd sydd ar gael. Fodd bynnag, mae bron pob technoleg heb weinydd yn darparu rhyw fath o API (trwy REST neu giwiau neges) sy'n eich galluogi i greu estyniadau sy'n annibynnol ar graidd y cymhwysiad a chydag integreiddio hawdd. Chwiliwch am wasanaethau gydag API clir, dogfennaeth dda, a chymuned gref, ac ni allwch fynd yn anghywir. Gall rhwyddineb integreiddio fod yn fetrig allweddol yn aml, ac mae'n debyg mai dyma un o'r prif resymau pam mae AWS wedi bod mor llwyddiannus ers rhyddhau Lambda yn 2015.

Pan Fydd Di-weinydd yn Dda

Gellir cymhwyso technolegau di-weinydd bron ym mhobman. Fodd bynnag, nid yw eu manteision yn gyfyngedig i un ffordd o gymhwyso yn unig. Mae'r rhwystr rhag mynediad ar gyfer cyfrifiadura cwmwl heddiw mor isel diolch i dechnolegau di-weinydd. Os oes gan ddatblygwyr syniad, ond nid ydynt yn gwybod sut i reoli seilwaith cwmwl a gwneud y gorau o gostau, yna nid oes angen iddynt chwilio am ryw fath o beiriannydd i'w wneud. Os yw cwmni cychwynnol eisiau adeiladu platfform ond yn ofni y gallai costau fynd allan o reolaeth, gallant droi yn hawdd at atebion heb weinydd.

Oherwydd arbedion cost a rhwyddineb graddio, mae datrysiadau di-weinydd yr un mor berthnasol ar gyfer systemau mewnol ac allanol, hyd at raglen we gyda chynulleidfa o filiynau o filiynau. Mae cyfrifon yn cael eu mesur yn hytrach nag mewn ewros, ond mewn cents. Bydd rhentu'r enghraifft symlaf o AWS EC2 (t1.micro) am fis yn costio €15, hyd yn oed os na wnewch chi ddim byd ag ef (pwy byth wedi anghofio ei ddiffodd?!). Mewn cymhariaeth, i gyrraedd y lefel hon o wariant dros yr un cyfnod o amser, byddai angen i chi redeg Lambda 512 MB am 1 eiliad tua 3 miliwn o weithiau. Ac os nad ydych chi'n defnyddio'r nodwedd hon, yna nid ydych chi'n talu unrhyw beth.

Gan fod di-weinydd yn cael ei yrru gan ddigwyddiadau yn bennaf, mae'n weddol hawdd ychwanegu seilwaith di-weinydd at systemau etifeddol. Er enghraifft, gan ddefnyddio AWS S3, Lambda, a Kinesis, gallwch greu gwasanaeth dadansoddeg ar gyfer system manwerthu etifeddiaeth a all dderbyn data trwy API.

Mae'r rhan fwyaf o lwyfannau di-weinydd yn cefnogi ieithoedd lluosog. Yn fwyaf aml mae'n Python, JavaScript, C #, Java a Go. Fel arfer nid oes unrhyw gyfyngiadau ar y defnydd o lyfrgelloedd ym mhob iaith, felly gallwch ddefnyddio'ch hoff lyfrgelloedd ffynhonnell agored. Fodd bynnag, fe'ch cynghorir i beidio â chamddefnyddio dibyniaethau fel bod eich swyddogaethau'n perfformio'n optimaidd a pheidiwch â negyddu buddion graddfa enfawr eich cymwysiadau di-weinydd. Po fwyaf o becynnau y mae angen eu llwytho i'r cynhwysydd, yr hiraf y bydd y cychwyn oer yn ei gymryd.

Dechreuad oer yw pan fydd angen i chi gychwyn y cynhwysydd, yr amser rhedeg, a'r triniwr gwallau cyn eu defnyddio. Oherwydd hyn, gall yr oedi wrth gyflawni swyddogaethau fod hyd at 3 eiliad, ac nid dyma'r opsiwn gorau i ddefnyddwyr diamynedd. Fodd bynnag, mae annwyd yn dechrau ar yr alwad gyntaf ar ôl ychydig funudau o swyddogaeth segur. Mae cymaint o'r farn bod hwn yn fân annifyrrwch y gellir ei ddatrys trwy pingio'r swyddogaeth yn rheolaidd i'w gadw i segura. Neu maent yn anwybyddu'r agwedd hon yn gyfan gwbl.

Er bod AWS wedi'i ryddhau cronfa ddata SQL di-weinydd Serverless AuroraFodd bynnag, nid yw cronfeydd data SQL yn ddelfrydol ar gyfer y cais hwn, gan eu bod yn dibynnu ar gysylltiadau i gyflawni trafodion, a all ddod yn dagfa yn gyflym gyda thraffig trwm ar AWS Lambda. Ydy, mae'r datblygwyr yn gwella Serverless Aurora yn gyson, a dylech arbrofi ag ef, ond heddiw mae atebion NoSQL yn hoffi DynamoDB. Fodd bynnag, nid oes amheuaeth y bydd y sefyllfa hon yn newid yn fuan iawn.

Mae'r pecyn cymorth hefyd yn gosod llawer o gyfyngiadau, yn enwedig ym maes profi lleol. Er bod yna atebion fel Docker-Lambda, DynamoDB Local a LocalStack, mae angen gwaith caled a chryn dipyn o gyfluniad arnynt. Fodd bynnag, mae'r holl brosiectau hyn yn cael eu datblygu'n weithredol, felly dim ond mater o amser yw hi cyn i'r pecyn cymorth gyrraedd y lefel sydd ei hangen arnom.

Effaith technolegau di-weinydd ar y cylch datblygu

Gan mai dim ond ffurfweddiad yw eich seilwaith, gallwch ddiffinio a defnyddio cod gan ddefnyddio sgriptiau, fel sgriptiau cregyn. Neu gallwch droi at atebion dosbarth cyfluniad-fel-god fel Ffurfio Cloud AWS. Er nad yw'r gwasanaeth hwn yn darparu cyfluniad ar gyfer pob maes, mae'n caniatáu ichi ddiffinio adnoddau penodol i'w defnyddio fel swyddogaethau Lambda. Hynny yw, lle mae CloudFormation yn eich methu, gallwch chi ysgrifennu eich adnodd eich hun (swyddogaeth Lambda) a fydd yn cau'r bwlch hwn. Fel hyn gallwch chi wneud unrhyw beth, hyd yn oed ffurfweddu dibyniaethau y tu allan i'ch amgylchedd AWS.

Gan mai dim ond cyfluniad yw'r cyfan, gallwch chi addasu eich sgriptiau defnyddio ar gyfer amgylcheddau, rhanbarthau a defnyddwyr penodol, yn enwedig os ydych chi'n defnyddio datrysiadau seilwaith-fel-god fel CloudFormation. Er enghraifft, gallwch ddefnyddio copi o'r seilwaith ar gyfer pob cangen yn y gadwrfa fel y gallwch eu profi'n gyfan gwbl ar wahân yn ystod y datblygiad. Mae hyn yn cyflymu adborth yn sylweddol i ddatblygwyr pan fyddant am ddeall a yw eu cod yn gweithio'n ddigonol mewn amgylchedd byw. Nid oes angen i reolwyr boeni am gost defnyddio amgylcheddau lluosog, gan mai dim ond am ddefnydd gwirioneddol y maent yn talu.

Mae gan DevOps lai o bryderon gan mai dim ond sicrhau bod gan ddatblygwyr y cyfluniad cywir y mae angen iddynt ei wneud. Nid oes angen i chi reoli achosion, balanswyr na grwpiau diogelwch mwyach. Felly, mae'r term NoOps yn cael ei ddefnyddio'n gynyddol, er ei bod yn dal yn bwysig gallu ffurfweddu'r seilwaith, yn enwedig o ran cyfluniad IAM ac optimeiddio adnoddau cwmwl.

Mae yna offer monitro a delweddu pwerus iawn fel Epsagon, Thundra, Dashbird ac IOPipe. Maent yn caniatáu ichi fonitro cyflwr presennol eich cymwysiadau heb weinydd, darparu logio ac olrhain, dal metrigau perfformiad a thagfeydd pensaernïaeth, perfformio dadansoddiad cost a rhagweld, a mwy. Maent nid yn unig yn rhoi golwg gynhwysfawr i beirianwyr, datblygwyr a phenseiri DevOps o berfformiad cymwysiadau, ond hefyd yn caniatáu i reolwyr fonitro'r sefyllfa mewn amser real, gyda chostau adnoddau fesul eiliad a rhagweld costau. Mae'n llawer anoddach trefnu hyn gyda seilwaith wedi'i reoli.

Mae dylunio cymwysiadau heb weinydd yn llawer haws oherwydd nid oes rhaid i chi ddefnyddio gweinyddwyr gwe, rheoli peiriannau neu gynwysyddion rhithwir, gweinyddwyr clwt, systemau gweithredu, pyrth rhyngrwyd, ac ati. Trwy dynnu'r holl gyfrifoldebau hyn i ffwrdd, gall pensaernïaeth heb weinydd ganolbwyntio ar y craidd - anghenion busnes a chwsmeriaid.

Er y gallai'r pecyn cymorth fod yn well (mae'n gwella bob dydd), gall datblygwyr ganolbwyntio ar weithredu'r rhesymeg busnes a dosbarthu cymhlethdod y cymhwysiad orau ar draws gwahanol wasanaethau o fewn y bensaernïaeth. Mae rheoli cymwysiadau di-weinydd yn seiliedig ar ddigwyddiadau ac yn cael ei dynnu gan ddarparwr y cwmwl (ee SQS, digwyddiadau S3 neu ffrydiau DynamoDB). Felly, dim ond i ymateb i ddigwyddiadau penodol y mae angen i ddatblygwyr ysgrifennu rhesymeg busnes, ac nid oes rhaid iddynt boeni am y ffordd orau o weithredu cronfeydd data a chiwiau negeseuon, na sut i drefnu'r gwaith gorau posibl gyda data mewn storfeydd caledwedd penodol.

Gellir rhedeg a dadfygio cod yn lleol, fel gydag unrhyw broses ddatblygu. Mae profion uned yn aros yr un fath. Mae'r gallu i ddefnyddio seilwaith cymhwysiad cyfan gyda chyfluniad pentwr wedi'i deilwra yn caniatáu i ddatblygwyr gael adborth pwysig yn gyflym heb feddwl am gost profi na'r effaith ar amgylcheddau drud a reolir.

Offer a thechnegau ar gyfer adeiladu cymwysiadau di-weinydd

Nid oes unrhyw ffordd benodol o adeiladu cymwysiadau di-weinydd. Yn ogystal â set o wasanaethau ar gyfer y dasg hon. AWS yw'r arweinydd ymhlith atebion pwerus heb weinydd heddiw, ond edrychwch hefyd Google Cloud, amser и Firebase. Os ydych yn defnyddio AWS, yna'r dull a argymhellir ar gyfer casglu ceisiadau yw Model Cais Di-weinydd (SAM), yn enwedig wrth ddefnyddio C #, oherwydd mae gan Visual Studio offer gwych. Gall y SAM CLI wneud popeth y gall Visual Studio ei wneud, felly ni fyddwch yn colli unrhyw beth os byddwch chi'n newid i IDE neu olygydd testun arall. Wrth gwrs, mae SAM yn gweithio gydag ieithoedd eraill hefyd.

Os ydych chi'n ysgrifennu mewn ieithoedd eraill, mae'r Fframwaith Serverless yn offeryn ffynhonnell agored ardderchog sy'n eich galluogi i ffurfweddu unrhyw beth gyda ffeiliau cyfluniad YAML pwerus iawn. Mae'r Fframwaith Serverless hefyd yn cefnogi gwasanaethau cwmwl amrywiol, felly rydym yn ei argymell i'r rhai sy'n chwilio am ateb aml-gwmwl. Mae ganddo gymuned enfawr sydd wedi creu criw o ategion ar gyfer unrhyw angen.

Ar gyfer profion lleol, mae'r offer ffynhonnell agored Docker-Lambda, Serverless Local, DynamoDB Local, a LocalStack yn addas iawn. Mae technolegau di-weinydd yn dal i fod yn eu camau datblygu cynnar, fel y mae'r offer ar eu cyfer, felly wrth sefydlu ar gyfer senarios prawf cymhleth, bydd yn rhaid i chi weithio'n galed. Fodd bynnag, mae defnyddio'r pentwr mewn amgylchedd a phrofi yno yn anhygoel o rhad. Ac nid oes angen i chi wneud copi lleol union o amgylcheddau cwmwl.

Defnyddiwch Haenau Lambda AWS i leihau maint pecynnau a ddefnyddir a chyflymu lawrlwythiadau.

Defnyddiwch yr ieithoedd rhaglennu cywir ar gyfer tasgau penodol. Mae gan wahanol ieithoedd eu manteision a'u hanfanteision eu hunain. Mae yna lawer o feincnodau, ond JavaScript, Python, a C# (. NET Core 2.1+) yw'r arweinwyr o ran perfformiad Lambda AWS. Yn ddiweddar, cyflwynodd AWS Lambda yr API Runtime, sy'n eich galluogi i nodi'r iaith a'r amgylchedd rhedeg a ddymunir, felly arbrofwch.

Cadwch feintiau pecyn yn fach i'w defnyddio. Po leiaf ydyn nhw, y cyflymaf maen nhw'n ei lwytho. Ceisiwch osgoi defnyddio llyfrgelloedd mawr, yn enwedig os ydych chi'n defnyddio cwpl o nodweddion ganddyn nhw. Os ydych chi'n rhaglennu yn JavaScript, defnyddiwch offeryn adeiladu fel Webpack i wneud y gorau o'ch adeiladwaith a chynnwys yr hyn sydd ei angen arnoch chi yn unig. Mae gan .NET Core 3.0 QuickJit a Haenau Compilation sy'n gwella perfformiad ac yn helpu llawer ar ddechreuadau oer.

Gall dibyniaeth swyddogaethau di-weinydd ar ddigwyddiadau ei gwneud hi'n anodd cydlynu rhesymeg busnes i ddechrau. Yn hyn o beth, gall ciwiau neges a pheiriannau wladwriaeth fod yn hynod ddefnyddiol. Gall swyddogaethau Lambda ffonio ei gilydd, ond dim ond os nad ydych chi'n disgwyl ymateb ("tân ac anghofio") y gwnewch hyn - nid ydych chi am gael eich bil am aros i swyddogaeth arall gael ei chwblhau. Mae ciwiau neges yn ddefnyddiol ar gyfer ynysu rhannau o resymeg busnes, rheoli tagfeydd cymwysiadau, a phrosesu trafodion (gan ddefnyddio ciwiau FIFO). Gellir neilltuo swyddogaethau AWS Lambda i giwiau SQS fel ciwiau negeseuon sownd sy'n cadw golwg ar negeseuon a fethwyd i'w dadansoddi'n ddiweddarach. Mae Swyddogaethau Cam AWS (peiriannau cyflwr) yn ddefnyddiol iawn ar gyfer rheoli prosesau cymhleth sy'n gofyn am gadwyno swyddogaethau. Yn lle swyddogaeth Lambda yn galw swyddogaeth arall, gall swyddogaethau Cam gydlynu trawsnewidiadau cyflwr, trosglwyddo data rhwng swyddogaethau, a rheoli cyflwr swyddogaethau byd-eang. Mae hyn yn caniatáu ichi ddiffinio amodau ailgynnig, neu beth i'w wneud pan fydd gwall penodol yn digwydd - offeryn pwerus iawn mewn rhai amodau.

Casgliad

Yn ystod y blynyddoedd diwethaf, mae technolegau di-weinydd wedi bod yn datblygu ar gyflymder digynsail. Mae rhai camsyniadau yn gysylltiedig â'r newid patrwm hwn. Trwy dynnu seilwaith a rheoli graddio, mae datrysiadau di-weinydd yn cynnig buddion sylweddol, o ddatblygiad symlach a phrosesau DevOps i ostyngiadau enfawr mewn costau gweithredu.
Er nad yw'r dull di-weinydd heb ei anfanteision, mae yna batrymau dylunio cadarn y gellir eu defnyddio i adeiladu cymwysiadau cadarn heb weinydd neu integreiddio elfennau di-weinydd i bensaernïaeth sy'n bodoli eisoes.

Ffynhonnell: hab.com

Ychwanegu sylw