Lai gan bezserveru tehnoloÄ£ijas pÄdÄjos gados ir strauji guvuÅ”as popularitÄti, ar tÄm joprojÄm ir saistÄ«ti daudzi maldÄ«gi priekÅ”stati un bailes. AtkarÄ«ba no pÄrdevÄja, rÄ«ki, izmaksu pÄrvaldÄ«ba, aukstÄ palaiÅ”ana, uzraudzÄ«ba un izstrÄdes dzÄ«ves cikls ir aktuÄlas tÄmas, kad runa ir par tehnoloÄ£ijÄm bez serveriem. Å ajÄ rakstÄ mÄs izpÄtÄ«sim dažas no minÄtajÄm tÄmÄm, kÄ arÄ« dalÄ«simies ar padomiem un saitÄm uz noderÄ«giem informÄcijas avotiem, lai palÄ«dzÄtu iesÄcÄjiem izveidot jaudÄ«gas, elastÄ«gas un rentablas lietojumprogrammas bez serveriem.
Nepareizi priekÅ”stati par tehnoloÄ£ijÄm bez serveriem
Daudzi cilvÄki domÄ, ka apstrÄde bez serveriem un bez serveriem (
Bezserveru tehnoloÄ£iju pamatprincips ir tÄds, ka jums nav jÄuztraucas par infrastruktÅ«ras pÄrvaldÄ«bu un mÄrogoÅ”anu, jÅ«s maksÄjat tikai par izmantoto. Daudzi pakalpojumi atbilst Å”iem kritÄrijiem ā AWS DynamoDB, S3, SNS vai SQS, Graphcool, Auth0, Now, Netlify, Firebase un daudzi citi. KopumÄ bezservera nozÄ«mÄ visu mÄkoÅdatoÅ”anas jaudu izmantoÅ”anu bez nepiecieÅ”amÄ«bas pÄrvaldÄ«t infrastruktÅ«ru un optimizÄt to mÄrogoÅ”anas vajadzÄ«bÄm. Tas arÄ« nozÄ«mÄ, ka droŔība infrastruktÅ«ras lÄ«menÄ« vairs nav jÅ«su problÄma, un tas ir milzÄ«gs ieguvums, Åemot vÄrÄ droŔības standartu izpildes grÅ«tÄ«bas un sarežģītÄ«bu. Visbeidzot, jums nav jÄpÄrk jums nodroÅ”inÄtÄ infrastruktÅ«ra.
Bez servera var uzskatÄ«t "prÄta stÄvokli": noteiktu mentalitÄti, izstrÄdÄjot risinÄjumus. Izvairieties no pieejÄm, kurÄm nepiecieÅ”ama jebkuras infrastruktÅ«ras uzturÄÅ”ana. Izmantojot bezserveru pieeju, mÄs pavadÄm laiku, risinot uzdevumus, kas tieÅ”i ietekmÄ projektu un sniedz ieguvumus mÅ«su lietotÄjiem: veidojam ilgtspÄjÄ«gu biznesa loÄ£iku, izstrÄdÄjam lietotÄja saskarnes un izstrÄdÄjam adaptÄ«vas un uzticamas API.
PiemÄram, ja ir iespÄjams izvairÄ«ties no brÄ«vÄ teksta meklÄÅ”anas platformas pÄrvaldÄ«bas un uzturÄÅ”anas, tad tÄ arÄ« darÄ«sim. Å Ä« pieeja lietojumprogrammu izveidei var ievÄrojami paÄtrinÄt laiku, kas nepiecieÅ”ams tirgÅ« nonÄkÅ”anai tirgÅ«, jo jums vairs nav jÄdomÄ par sarežģītas infrastruktÅ«ras pÄrvaldÄ«bu. AtbrÄ«vojieties no infrastruktÅ«ras pÄrvaldÄ«bas atbildÄ«bas un izmaksÄm un koncentrÄjieties uz klientiem nepiecieÅ”amo lietojumprogrammu un pakalpojumu izveidi. Patriks DebuÄ Å”o pieeju sauca
Dažus mulsina atkarÄ«ba no pÄrdevÄja, izstrÄdÄjot mÄkoÅa lietojumprogrammas. Tas pats attiecas uz tehnoloÄ£ijÄm bez serveriem, un diez vai tas ir nepareizs priekÅ”stats. MÅ«su pieredze liecina, ka bezserveru lietojumprogrammu izveide AWS, apvienojumÄ ar AWS Lambda spÄju apvienot citus AWS pakalpojumus, ir daļa no bezserveru arhitektÅ«ras stiprajÄm pusÄm. Å is ir labs sinerÄ£ijas piemÄrs, kad kombinÄcijas rezultÄts ir vairÄk nekÄ tikai terminu summa. MÄÄ£inot izvairÄ«ties no atkarÄ«bas no pÄrdevÄja, var rasties vÄl vairÄk problÄmu. StrÄdÄjot ar konteineriem, ir vieglÄk pÄrvaldÄ«t savu abstrakcijas slÄni starp mÄkoÅpakalpojumu sniedzÄjiem. TaÄu, ja runa ir par risinÄjumiem bez serveriem, pÅ«les neatmaksÄsies, it Ä«paÅ”i, ja jau no paÅ”a sÄkuma tiek Åemta vÄrÄ izmaksu efektivitÄte. Noteikti uzziniet, kÄ pÄrdevÄji sniedz pakalpojumus. Daži specializÄtie pakalpojumi paļaujas uz integrÄcijas punktiem ar citiem piegÄdÄtÄjiem un var nodroÅ”inÄt plug-and-play savienojumu. VienkÄrÅ”Äk ir nodroÅ”inÄt Lambda izsaukumu no vÄrtejas API galapunkta, nekÄ nosÅ«tÄ«t pieprasÄ«jumu starpniekserveri kÄdam konteineram vai EC2 instancei. Graphcool nodroÅ”ina vienkÄrÅ”u konfigurÄÅ”anu ar Auth0, kas ir vienkÄrÅ”Äk nekÄ treÅ”Äs puses autentifikÄcijas rÄ«ku izmantoÅ”ana.
PareizÄ pÄrdevÄja izvÄle lietojumprogrammai bez servera ir arhitektonisks lÄmums. Veidojot lietojumprogrammu, jÅ«s negaidÄt, ka kÄdu dienu atgriezÄ«sities pie serveru pÄrvaldÄ«bas. MÄkoÅa pÄrdevÄja izvÄle neatŔķiras no konteineru vai datu bÄzes vai pat programmÄÅ”anas valodas izmantoÅ”anas.
Apsveriet:
- KÄdi pakalpojumi ir nepiecieÅ”ami un kÄpÄc.
- KÄdus pakalpojumus sniedz mÄkoÅpakalpojumu sniedzÄji un kÄ varat tos apvienot ar izvÄlÄto FaaS risinÄjumu.
- KÄdas programmÄÅ”anas valodas tiek atbalstÄ«tas (ar dinamisku vai statisku rakstÄ«Å”anu, apkopotas vai interpretÄtas, kÄdi ir etaloni, kÄda ir veiktspÄja aukstÄ palaiÅ”anas režīmÄ, kÄda ir atvÄrtÄ pirmkoda ekosistÄma utt.).
- KÄdas ir jÅ«su droŔības prasÄ«bas (SLA, 2FA, OAuth, HTTPS, SSL utt.).
- KÄ pÄrvaldÄ«t CI/CD un programmatÅ«ras izstrÄdes ciklus.
- KÄdus infrastruktÅ«ras kÄ koda risinÄjumus varat izmantot.
PaplaÅ”inot esoÅ”u lietojumprogrammu un pakÄpeniski pievienojot bezservera funkcionalitÄti, tas var nedaudz ierobežot pieejamÄs iespÄjas. TomÄr gandrÄ«z visas bezserveru tehnoloÄ£ijas nodroÅ”ina sava veida API (izmantojot REST vai ziÅojumu rindas), kas ļauj izveidot paplaÅ”inÄjumus neatkarÄ«gi no lietojumprogrammas kodola un ar vienkÄrÅ”u integrÄciju. MeklÄjiet pakalpojumus ar skaidrÄm API, labu dokumentÄciju un spÄcÄ«gu kopienu, un jÅ«s nevarat kļūdÄ«ties. IntegrÄcijas vienkÄrŔība bieži var bÅ«t galvenais rÄdÄ«tÄjs, un tas, iespÄjams, ir viens no galvenajiem iemesliem, kÄpÄc AWS ir bijusi tik veiksmÄ«ga kopÅ” Lambda izlaiÅ”anas 2015. gadÄ.
Kad bez servera ir labi
TehnoloÄ£ijas bez serveriem var izmantot gandrÄ«z visur. TomÄr to priekÅ”rocÄ«bas neaprobežojas tikai ar vienu pielietoÅ”anas veidu. Pateicoties bezserveru tehnoloÄ£ijÄm, barjera ienÄkÅ”anai mÄkoÅdatoÅ”anas jomÄ mÅ«sdienÄs ir tik zema. Ja izstrÄdÄtÄjiem ir ideja, bet viÅi nezina, kÄ pÄrvaldÄ«t mÄkoÅa infrastruktÅ«ru un optimizÄt izmaksas, tad viÅiem nav jÄmeklÄ kÄds inženieris, kas to izdarÄ«tu. Ja jaunizveidotais uzÅÄmums vÄlas izveidot platformu, bet baidÄs, ka izmaksas var kļūt nekontrolÄjamas, viÅi var viegli pievÄrsties risinÄjumiem bez serveriem.
Izmaksu ietaupÄ«jumu un mÄrogoÅ”anas vienkÄrŔības dÄļ risinÄjumi bez serveriem ir vienlÄ«dz piemÄrojami gan iekÅ”ÄjÄm, gan ÄrÄjÄm sistÄmÄm, lÄ«dz pat tÄ«mekļa lietojumprogrammai ar vairÄku miljonu auditoriju. Konti tiek mÄrÄ«ti nevis eiro, bet gan centos. VienkÄrÅ”ÄkÄ AWS EC2 (t1.micro) eksemplÄra noma uz mÄnesi maksÄs 15 ā¬, pat ja ar to neko nedarÄ«sit (kurÅ” gan nekad neaizmirsa to izslÄgt?!). SalÄ«dzinÄjumam, lai sasniegtu Å”o tÄriÅu lÄ«meni tajÄ paÅ”Ä laika periodÄ, jums 512 MB Lambda vajadzÄtu darbinÄt 1 sekundi aptuveni 3 miljonus reižu. Un, ja jÅ«s neizmantojat Å”o funkciju, tad jÅ«s neko nemaksÄjat.
TÄ kÄ bezserveru funkcija galvenokÄrt ir balstÄ«ta uz notikumiem, vecÄkÄm sistÄmÄm ir diezgan viegli pievienot infrastruktÅ«ru bez serveriem. PiemÄram, izmantojot AWS S3, Lambda un Kinesis, varat izveidot analÄ«tikas pakalpojumu vecai mazumtirdzniecÄ«bas sistÄmai, kas var saÅemt datus, izmantojot API.
LielÄkÄ daļa bezserveru platformu atbalsta vairÄkas valodas. VisbiežÄk tas ir Python, JavaScript, C#, Java un Go. Parasti nav ierobežojumu attiecÄ«bÄ uz bibliotÄku izmantoÅ”anu visÄs valodÄs, tÄpÄc varat izmantot savas iecienÄ«tÄkÄs atvÄrtÄ pirmkoda bibliotÄkas. TomÄr nav ieteicams ļaunprÄtÄ«gi izmantot atkarÄ«bas, lai jÅ«su funkcijas darbotos optimÄli un netiktu noliegtas priekÅ”rocÄ«bas, ko sniedz bezserveru lietojumprogrammu milzÄ«gÄ mÄrogojamÄ«ba. Jo vairÄk iepakojumu jÄiekrauj konteinerÄ, jo ilgÄks laiks bÅ«s aukstÄ iedarbinÄÅ”ana.
AukstÄ palaiÅ”ana ir tad, kad vispirms ir jÄinicializÄ konteiners, izpildlaiks un kļūdu apstrÄdÄtÄjs pirms to izmantoÅ”anas. Å Ä« iemesla dÄļ funkciju izpildes aizkave var bÅ«t lÄ«dz 3 sekundÄm, un tas nav labÄkais risinÄjums nepacietÄ«giem lietotÄjiem. TomÄr aukstÄ iedarbinÄÅ”ana notiek pirmajÄ zvanÄ pÄc dažÄm dÄ«kstÄves minÅ«tÄm. Daudzi uzskata, ka tas ir neliels kairinÄjums, ko var novÄrst, regulÄri pingot funkcijai, lai tÄ paliktu tukÅ”gaitÄ. Vai arÄ« viÅi vispÄr ignorÄ Å”o aspektu.
Lai gan AWS izlaists
RÄ«ku komplekts uzliek arÄ« daudz ierobežojumu, jo Ä«paÅ”i vietÄjÄs testÄÅ”anas jomÄ. Lai gan ir tÄdi risinÄjumi kÄ Docker-Lambda, DynamoDB Local un LocalStack, tie prasa smagu darbu un ievÄrojamu konfigurÄcijas apjomu. TaÄu visi Å”ie projekti tiek aktÄ«vi attÄ«stÄ«ti, tÄpÄc ir tikai laika jautÄjums, kad instrumentu kopums sasniegs mums vajadzÄ«go lÄ«meni.
Bezserveru tehnoloģiju ietekme uz attīstības ciklu
TÄ kÄ jÅ«su infrastruktÅ«ra ir tikai konfigurÄcija, varat definÄt un izvietot kodu, izmantojot skriptus, piemÄram, Äaulas skriptus. Vai arÄ« varat izmantot konfigurÄcijas kÄ koda klases risinÄjumus, piemÄram
TÄ kÄ tas viss ir tikai konfigurÄcija, varat pielÄgot savus izvietoÅ”anas skriptus noteiktÄm vidÄm, reÄ£ioniem un lietotÄjiem, Ä«paÅ”i, ja izmantojat infrastruktÅ«ras kÄ koda risinÄjumus, piemÄram, CloudFormation. PiemÄram, katrai repozitorijas filiÄlei varat izvietot infrastruktÅ«ras kopiju, lai izstrÄdes laikÄ varÄtu tÄs pilnÄ«bÄ pÄrbaudÄ«t atseviŔķi. Tas ievÄrojami paÄtrina atgriezenisko saiti izstrÄdÄtÄjiem, kad viÅi vÄlas saprast, vai viÅu kods darbojas atbilstoÅ”i dzÄ«vajÄ vidÄ. PÄrvaldniekiem nav jÄuztraucas par vairÄku vidi izvietoÅ”anas izmaksÄm, jo āāviÅi maksÄ tikai par faktisko izmantoÅ”anu.
DevOps ir mazÄk raižu, jo viÅiem tikai jÄpÄrliecinÄs, vai izstrÄdÄtÄjiem ir pareiza konfigurÄcija. Jums vairs nav jÄpÄrvalda gadÄ«jumi, balansÄtÄji vai droŔības grupas. TÄpÄc arvien biežÄk tiek lietots termins NoOps, lai gan joprojÄm ir svarÄ«gi spÄt konfigurÄt infrastruktÅ«ru, it Ä«paÅ”i, ja runa ir par IAM konfigurÄciju un mÄkoÅa resursu optimizÄciju.
Ir ļoti jaudÄ«gi uzraudzÄ«bas un vizualizÄcijas rÄ«ki, piemÄram, Epsagon, Thundra, Dashbird un IOPipe. Tie ļauj pÄrraudzÄ«t bezserveru lietojumprogrammu paÅ”reizÄjo stÄvokli, nodroÅ”inÄt reÄ£istrÄÅ”anu un izsekoÅ”anu, veiktspÄjas metriku un arhitektÅ«ras vÄjÄs vietas, veikt izmaksu analÄ«zi un prognozÄÅ”anu un daudz ko citu. Tie ne tikai sniedz DevOps inženieriem, izstrÄdÄtÄjiem un arhitektiem visaptveroÅ”u priekÅ”statu par lietojumprogrammu veiktspÄju, bet arÄ« ļauj vadÄ«tÄjiem uzraudzÄ«t situÄciju reÄllaikÄ, izmantojot resursu izmaksas sekundÄ un izmaksu prognozÄÅ”anu. Ar pÄrvaldÄ«tu infrastruktÅ«ru to organizÄt ir daudz grÅ«tÄk.
Bezserveru lietojumprogrammu izstrÄde ir daudz vienkÄrÅ”Äka, jo jums nav jÄizvieto tÄ«mekļa serveri, jÄpÄrvalda virtuÄlÄs maŔīnas vai konteineri, ielÄpu serveri, operÄtÄjsistÄmas, interneta vÄrtejas utt. AbstrahÄjot visus Å”os pienÄkumus, arhitektÅ«ra bez serveriem var koncentrÄties uz galveno - risinÄjums, biznesa un klientu vajadzÄ«bas.
Lai gan rÄ«kkopa varÄtu bÅ«t labÄka (tas kļūst labÄks ar katru dienu), izstrÄdÄtÄji var koncentrÄties uz biznesa loÄ£ikas ievieÅ”anu un vislabÄko lietojumprogrammas sarežģītÄ«bas sadali dažÄdos arhitektÅ«ras pakalpojumos. Lietojumprogrammu pÄrvaldÄ«ba bez serveriem ir balstÄ«ta uz notikumiem, un mÄkoÅpakalpojumu sniedzÄjs to abstrahÄ (piemÄram, SQS, S3 notikumi vai DynamoDB straumes). TÄpÄc izstrÄdÄtÄjiem ir tikai jÄraksta biznesa loÄ£ika, lai reaÄ£Ätu uz noteiktiem notikumiem, un nav jÄuztraucas par to, kÄ vislabÄk ieviest datu bÄzes un ziÅojumu rindas vai organizÄt optimÄlu darbu ar datiem konkrÄtÄs aparatÅ«ras krÄtuvÄs.
Kodu var palaist un atkļūdot lokÄli, tÄpat kÄ jebkurÄ izstrÄdes procesÄ. VienÄ«bas pÄrbaude paliek nemainÄ«ga. IespÄja izvietot visu lietojumprogrammu infrastruktÅ«ru ar pielÄgotu steka konfigurÄciju ļauj izstrÄdÄtÄjiem Ätri iegÅ«t svarÄ«gas atsauksmes, nedomÄjot par testÄÅ”anas izmaksÄm vai ietekmi uz dÄrgÄm pÄrvaldÄ«tÄm vidÄm.
Rīki un metodes bezserveru lietojumprogrammu veidoŔanai
Nav Ä«paÅ”a veida, kÄ izveidot lietojumprogrammas bez serveriem. KÄ arÄ« pakalpojumu komplekts Å”im uzdevumam. MÅ«sdienÄs AWS ir lÄ«deris starp jaudÄ«giem bezserveru risinÄjumiem, taÄu apskatiet arÄ«
Ja rakstÄt citÄs valodÄs, Serverless Framework ir lielisks atvÄrtÄ pirmkoda rÄ«ks, kas ļauj konfigurÄt jebko ar ļoti jaudÄ«giem YAML konfigurÄcijas failiem. Serverless Framework atbalsta arÄ« dažÄdus mÄkoÅpakalpojumus, tÄpÄc iesakÄm tiem, kas meklÄ vairÄku mÄkoÅu risinÄjumu. Tam ir milzÄ«ga kopiena, kas ir izveidojusi virkni spraudÅu jebkurai nepiecieÅ”amÄ«bai.
VietÄjai testÄÅ”anai ir labi piemÄroti atvÄrtÄ pirmkoda rÄ«ki Docker-Lambda, Serverless Local, DynamoDB Local un LocalStack. TehnoloÄ£ijas bez serveriem joprojÄm ir agrÄ«nÄ izstrÄdes stadijÄ, tÄpat kÄ tÄm paredzÄtie rÄ«ki, tÄpÄc, iestatot sarežģītus testa scenÄrijus, jums bÅ«s smagi jÄstrÄdÄ. TomÄr vienkÄrÅ”a steka izvietoÅ”ana vidÄ un testÄÅ”ana tur ir neticami lÄta. Un jums nav jÄizveido precÄ«za mÄkoÅa vides lokÄla kopija.
Izmantojiet AWS Lambda slÄÅus, lai samazinÄtu izvietoto pakotÅu lielumu un paÄtrinÄtu lejupielÄdi.
KonkrÄtu uzdevumu veikÅ”anai izmantojiet pareizÄs programmÄÅ”anas valodas. DažÄdÄm valodÄm ir savas priekÅ”rocÄ«bas un trÅ«kumi. Ir daudz etalonu, taÄu JavaScript, Python un C# (.NET Core 2.1+) ir lÄ«deri AWS Lambda veiktspÄjas ziÅÄ. AWS Lambda nesen ieviesa Runtime API, kas ļauj norÄdÄ«t vÄlamo izpildlaika valodu un vidi, tÄpÄc eksperimentÄjiet.
SaglabÄjiet mazu iepakojuma izmÄru izvietoÅ”anai. Jo mazÄki tie ir, jo ÄtrÄk tie tiek ielÄdÄti. Izvairieties no lielu bibliotÄku izmantoÅ”anas, Ä«paÅ”i, ja no tÄm izmantojat dažas funkcijas. Ja programmÄjat JavaScript, izmantojiet veidoÅ”anas rÄ«ku, piemÄram, Webpack, lai optimizÄtu bÅ«vÄjumu un iekļautu tikai to, kas jums patieÅ”Äm nepiecieÅ”ams. .NET Core 3.0 ir QuickJit un daudzpakÄpju kompilÄcija, kas uzlabo veiktspÄju un ļoti palÄ«dz aukstÄs palaiÅ”anas gadÄ«jumÄ.
Bezserveru funkciju paļauÅ”anÄs uz notikumiem sÄkotnÄji var apgrÅ«tinÄt biznesa loÄ£ikas koordinÄÅ”anu. Å ajÄ sakarÄ ziÅojumu rindas un stÄvokļa maŔīnas var bÅ«t neticami noderÄ«gas. Lambda funkcijas var piezvanÄ«t viena otrai, taÄu dariet to tikai tad, ja negaidÄt atbildi ("aizdedzinÄt un aizmirst") ā jÅ«s nevÄlaties saÅemt rÄÄ·inu par citas funkcijas pabeigÅ”anas gaidÄ«Å”anu. ZiÅojumu rindas ir noderÄ«gas, lai izolÄtu biznesa loÄ£ikas daļas, pÄrvaldÄ«tu lietojumprogrammu vÄjÄs vietas un apstrÄdÄtu darÄ«jumus (izmantojot FIFO rindas). AWS Lambda funkcijas var pieŔķirt SQS rindÄm kÄ iestrÄguÅ”u ziÅojumu rindas, kas seko neveiksmÄ«giem ziÅojumiem vÄlÄkai analÄ«zei. AWS Step Functions (stÄvokļa maŔīnas) ir ļoti noderÄ«gas, lai pÄrvaldÄ«tu sarežģītus procesus, kuriem nepiecieÅ”ama funkciju Ä·Äde. TÄ vietÄ, lai Lambda funkcija izsauktu citu funkciju, Step funkcijas var koordinÄt stÄvokļa pÄrejas, nodot datus starp funkcijÄm un pÄrvaldÄ«t funkciju globÄlo stÄvokli. Tas ļauj definÄt atkÄrtota mÄÄ£inÄjuma nosacÄ«jumus vai to, ko darÄ«t, ja rodas konkrÄta kļūda ā tas ir ļoti spÄcÄ«gs rÄ«ks noteiktos apstÄkļos.
SecinÄjums
PÄdÄjos gados bezserveru tehnoloÄ£ijas attÄ«stÄs nepieredzÄtÄ tempÄ. Ar Å”o paradigmas maiÅu ir saistÄ«ti daži nepareizi priekÅ”stati. AbstrahÄjot infrastruktÅ«ru un mÄrogoÅ”anas pÄrvaldÄ«bu, risinÄjumi bez serveriem piedÄvÄ ievÄrojamas priekÅ”rocÄ«bas, sÄkot no vienkÄrÅ”otas izstrÄdes un DevOps procesiem lÄ«dz ievÄrojamiem darbÄ«bas izmaksu samazinÄjumiem.
Lai gan bezserveru pieejai ir trÅ«kumi, ir stabili dizaina modeļi, ko var izmantot, lai izveidotu stabilas bezserveru lietojumprogrammas vai integrÄtu bezserveru elementus esoÅ”ajÄs arhitektÅ«rÄs.
Avots: www.habr.com