Prensîbên ji bo pêşxistina sepanên nûjen ji NGINX. Beş 1

Silav hevalno. Li hêviya destpêkirina qursê Pêşdebirkerê pişta PHP, bi kevneşopî wergera materyalên kêrhatî bi we re parve dikin.

Nermalava bêtir û bêtir karên rojane çareser dike, di heman demê de ku her ku diçe tevlihevtir dibe. Wekî ku Marc Andressen carekê got, ew cîhanê dixwe.

Prensîbên ji bo pêşxistina sepanên nûjen ji NGINX. Beş 1

Wekî encamek, awayê pêşdebirin û radestkirina serîlêdan di van çend salên borî de pir guherî. Ev guheztinên pîvana tektonîkî bûn ku di encama komek prensîban de bûn. Van prensîban di avakirina tîmê de, sêwirandin, pêşdebirin û radestkirina serîlêdana we ji bikarhênerên dawî re arîkar îsbat kirine.

Prensîb dikarin bi vî rengî werin kurt kirin: pêdivî ye ku serîlêdan piçûk be, li ser tevneyê be, û xwedan mîmariyek pêşdebir-navendî be. Bi van sê prensîban di hişê xwe de, hûn dikarin serîlêdanek zexm, dawî-bi-dawî biafirînin ku dikare zû û bi ewlehî ji bikarhênerê dawî re were radest kirin, û bi hêsanî berbelav û berfirehtir e.

Prensîbên ji bo pêşxistina sepanên nûjen ji NGINX. Beş 1

Her yek ji prensîbên pêşniyarkirî çend aliyên ku em ê nîqaş bikin hene da ku destnîşan bikin ka her prensîb çawa beşdarî armanca dawîn dibe, ku ev jî radestkirina bilez a serîlêdanên pêbawer e ku parastin û karanîna wan hêsan e. Em ê li prensîban bi têkiliya dijberên wan ve binihêrin da ku wateya wê zelal bikin, bibêjin, "Piştrast bikin ku hûn bikar tînin prensîba biçûkbûnê".

Em hêvî dikin ku ev gotar dê we teşwîq bike ku hûn prensîbên pêşniyarkirî ji bo avakirina serîlêdanên nûjen bikar bînin, ku dê di çarçoweya stûnek teknolojiyê ya her ku diçe pêşkeftî de rêgezek yekgirtî peyda bike.

Bi sepandina van prensîban, hûn ê xwe bibînin ku ji meylên herî dawî yên di pêşkeftina nermalavê de, di nav de, sûd werbigirin DevOps ji bo pêşkeftin û radestkirina sepanan, bikaranîna konteyneran (mînak, Docker) û çarçoveyên orkestrasyona konteyneran (mînak, Kubernetes), karanîna mîkroservisan (di nav de Mîmariya Microservice NGINX и mîmariya ragihandinê ya torê ji bo sepanên microservice.

Serîlêdana nûjen çi ye?

Serîlêdanên nûjen? Stack Modern? Wateya "modern" bi rastî çi ye?

Pir pêşdebiran tenê ramanek gelemperî heye ku serîlêdanek nûjen ji çi pêk tê, ji ber vê yekê pêdivî ye ku meriv vê têgehê bi zelalî diyar bike.

Serlêdanek nûjen gelek xerîdar piştgirî dike, gelo ew navbeynkariya bikarhêner a pirtûkxaneya React JavaScript, serîlêdana desta ya Android an iOS, an serîlêdana ku bi API-ya din ve girêdide be. Serlêdanek nûjen tê wateya hejmareke nediyar a xerîdar ku ji bo wan dane an karûbar peyda dike.

Serlêdanek nûjen API peyda dike ku bigihîje dane û karûbarên daxwazkirî. Pêdivî ye ku API guhezbar û domdar be, û bi taybetî ji bo daxwazek taybetî ji xerîdarek taybetî neyê nivîsandin. API li ser HTTP(S) heye û gihîştina hemî fonksiyonên ku di GUI an CLI de peyda dibin peyda dike.

Pêdivî ye ku dane di forma hevpar a pejirandî ya wekî JSON de berdest bin. API tişt û karûbaran bi rengek paqij, rêxistinkirî eşkere dike, mîna RESTful API an GraphQL navbeynek maqûl peyda dike.

Serlêdanên nûjen li ser stûna nûjen têne çêkirin, û stûna nûjen ew stûn e ku bi rêzê ve sepanên weha piştgirî dike. Ev stack destûrê dide pêşdebirek ku bi hêsanî serîlêdanek bi navgîniya HTTP-ê biafirîne û xalên dawiya API-ê paqij bike. Nêzîkatiya bijartî dê bihêle ku serîlêdana we bi hêsanî daneyan di formata JSON de bistîne û bişîne. Bi gotinek din, stûna nûjen bi hêmanên Serlêdana Diwanzdeh-Faktorê re têkildar e microservices.

Guhertoyên populer ên vê celebê stackê li ser bingeha xwe ne Java, python, Node, Cewher, PHP и Go. Mîmariya Microservice NGINX Nimûneyek ji stackek nûjen nîşan dide ku di her zimanên navborî de hatî bicîh kirin.

Ji kerema xwe not bikin ku em nêzîkatiyek taybetî ya mîkroxizmetê naparêzin. Gelek ji we bi monolîtên ku hewce ne ku pêşve bibin re dixebitin, hinên din bi serîlêdanên SOA yên ku berfireh dibin û pêşve diçin ku bibin serîlêdanên microservice re mijûl dibin. Dîsa jî yên din ber bi serîlêdanên bê server ve diçin, û hin jî berhevokên jorîn pêk tînin. Prensîbên ku di gotarê de hatine destnîşan kirin li ser her yek ji van pergalan bi tenê çend guhertinên piçûk têne sepandin.

Prensîbên

Naha ku me têgihiştinek hevbeş heye ka serîlêdanek nûjen û stackek nûjen çi ne, dem hatiye ku em li mîmarî û prensîbên pêşkeftinê yên ku dê di pêşvebirin, bicîhkirin û domandina serîlêdanek nûjen de ji we re baş xizmet bikin.

Yek ji prensîbên wekî "serîlêdanên piçûk çêbikin" deng dike, em tenê jê re dibêjin prensîba biçûkbûnê. Serîlêdanên pir tevlihev hene ku ji gelek beşên tevgerê têne çêkirin. Di encamê de, avakirina serîlêdanek ji hêmanên piçûk, veqetandî, sêwirandin, parastin û xebitandina wê bi tevahî hêsantir dike. (Bêbînî ku me got "hêsan dike" ne "hêsan dike").

Prensîba duyemîn ev e ku em dikarin hilberîna pêşdebiran zêde bikin bi alîkariya wan ku balê bikişîne ser taybetmendiyên ku ew pêş dixin, di heman demê de ku di dema bicîhkirinê de wan ji binesaziyê û fikarên CI/CD azad bikin. Ji ber vê yekê, bi kurtî, nêzîkatiya me li ser pêşdebiran sekinîn.

Di dawiyê de, divê her tiştê serîlêdana we bi torê ve girêdayî be. Di van 20 salên borî de, me gavên mezin ber bi pêşerojek torê ve avêtin ji ber ku tor zûtir dibin û serîlêdan tevlihevtir dibin. Wekî ku me dît, pêdivî ye ku serîlêdanek nûjen li ser torê ji hêla gelek xerîdarên cûda ve were bikar anîn. Serlêdana ramana torê ya mîmariyê xwedan feydeyên girîng e ku baş pê re derbas dibe prensîba biçûkbûnê û têgeha nêzîkbûnê, pêşdebir oriented.

Ger hûn van prensîban di dema sêwirandin û pêkanîna serîlêdanê de li ber çavan bigirin, hûn ê di pêşkeftin û radestkirina hilbera xwe de xwedan avantajek bêhempa bin.

Werin em bi hûrgilî li van sê prensîban binêrin.

Prensîba piçûkbûnê

Zehmet e ku mejiyê mirov di heman demê de jimarek mezin agahiyê fam bike. Di psîkolojiyê de, têgîna barkirina cognitive bi tevahî hewildana derûnî ya ku ji bo hilgirtina agahdariya di bîranînê de hewce dike vedibêje. Kêmkirina barê cognitive li ser pêşdebiran pêşanîyek e ji ber ku ew dihêle ku ew li şûna ku modela tevlihev a heyî ya tevaya serîlêdanê û taybetmendiyên ku di serê wan de têne pêşve xistin, balê bikişînin ser çareserkirina pirsgirêkê.

Prensîbên ji bo pêşxistina sepanên nûjen ji NGINX. Beş 1

Serlêdan ji ber sedemên jêrîn têk diçin:

  • Barkirina cognitive li ser pêşdebiran kêm kir;
  • Lezkirin û hêsankirina ceribandinê;
  • Radestkirina bilez a guhertinên di serîlêdanê de.


Gelek awayên kêmkirina bargiraniya zanînê ya li ser pêşdebiran hene, û li vir prensîba piçûkbûnê tê lîstin.

Ji ber vê yekê li vir sê awayên kêmkirina bargiraniya cognitive hene:

  1. Di dema pêşdebirina taybetmendiyek nû de dema ku ew divê li ber çavan bigirin kêm bikin - dema çarçoveyek hindiktir be, ew qas bargiraniya zanînê kêm dibe.
  2. Rêjeya kodê ya ku xebata yek-car li ser tê kirin kêm bikin - koda hindik - barkirina hindik.
  3. Pêvajoya çêkirina guhertinên zêde li ser serîlêdanê hêsan bikin.

Kêmkirina dema pêşkeftinê

Werin em vegerin rojên ku metodolojî waterfall standardek ji bo pêvajoya pêşkeftinê bû, û demên şeş mehan heya du salan ji bo pêşvebirin an nûvekirina serîlêdanek pratîkek hevpar bû. Bi gelemperî, endezyar dê pêşî belgeyên têkildar ên wekî hewcedariyên hilberê (PRD), belgeya referansa pergalê (SRD), nexşeya mîmariyê bixwînin, û dest bi berhevkirina van tiştan bi hev re di yek modelek cognitive de, ku li gorî wê kod kirin, bixwînin. Ji ber ku hewcedarî û, di encamê de, mîmarî guherî, pêdivî bû ku hewildanek ciddî were kirin da ku tevahiya tîmê di derbarê nûvekirinên modela cognitive de agahdar bike. Nêzîkatiyek wusa, ya herî xirab, dikare bi hêsanî kar felc bike.

Guhertina herî mezin di pêvajoya pêşkeftina serîlêdanê de danasîna metodolojiya agile bû. Yek ji taybetmendiyên sereke yên rêbazê ye agile pêşveçûnek dubarekirî ye. Di encamê de, ev dibe sedema kêmbûna bargiraniya cognitive li ser endezyaran. Li şûna ku tîmê pêşkeftinê hewce bike ku serîlêdanê di yek dewreyek dirêj de bicîh bike, agile nêzîkatî dihêle hûn bala xwe bidin ser mîqdarên piçûk ên kodê ku zû zû bêne ceribandin û bicîh kirin, di heman demê de bertek jî werdigirin. Barkirina zanînê ya serîlêdanê ji çarçoveyek şeş-mehî berbi du-salî veguhestiye digel hejmareke mezin ji taybetmendiyan ji bo lêzêdekirinek an guheztina taybetmendiyek du-hefteyî ku têgihîştinek berbiçav a serîlêdanek mezin armanc dike.

Veguheztina balê ji serîlêdanek girseyî berbi taybetmendiyên piçûk ên taybetî yên ku dikarin di sprintek du-hefte de bêne qedandin, bêyî ku bêtir ji yek taybetmendiyek li pêşiya sprinta din di hişê xwe de be, guhertinek girîng e. Vê yekê hişt ku em hilberdariya pêşkeftinê zêde bikin dema ku barê cognitive kêm bikin, ku bi domdarî diguhere.

Di metodolojiyê de agile Tê payîn ku serîlêdana paşîn guhertoyek konsepta orjînal hinekî hatî guheztin, ji ber vê yekê xala dawî ya pêşkeftinê bê guman nezelal e. Tenê encamên her sprintek taybetî dikare zelal û rast be.

Bingehên kodên piçûk

Pêngava din di kêmkirina bargiraniya cognitive de kêmkirina bingeha kodê ye. Wekî qaîdeyek, serîlêdanên nûjen girseyî ne - serîlêdanek bihêz, pargîdanî dikare ji hezaran pelan û bi sed hezaran rêzikên kodê pêk were. Li gorî ka pelan çawa têne organîze kirin, dibe ku girêdan û girêdanên di navbera kod û pelan de diyar bin, an berevajî. Tewra darvekirina koda xeletkirinê bixwe jî dikare pirsgirêk be, li gorî pirtûkxaneyên ku têne bikar anîn û ka çawa amûrên xeletkirinê di navbera pirtûkxane / pakêt / modul û koda xwerû de ji hev vediqetînin.

Avakirina modelek derûnî ya xebitandinê ya koda serîlêdanê dikare demek berbiçav bigire, û careke din barek mezin a cognitive li ser pêşdebiran bike. Ev bi taybetî ji bo bingehên koda monolîtîk rast e, ku li wir hejmareke mezin a kodê heye, têkiliya di navbera pêkhateyên fonksiyonel ên ku bi zelalî ne diyar e, û veqetandina tiştên balê pir caran şêlo dibe ji ber ku sînorên fonksiyonel nayên rêz kirin.

Yek ji awayên bandorker ên kêmkirina bargiraniya cognitive li ser endezyaran ev e ku meriv berbi mîmariya mîkroxizmetê ve bibe. Di nêzîkatiya mîkroxizmetê de, her karûbar li ser yek komek taybetmendiyan disekine; dema ku wateya karûbarê bi gelemperî tête diyar kirin û fêm kirin. Sînorên karûbarek jî zelal in - ji bîr mekin ku ragihandina bi karûbarek re bi navgîniya API-yê ve tête kirin, ji ber vê yekê daneyên ku ji hêla karûbarek ve hatî çêkirin dikare bi hêsanî derbasî karûbarek din bibe.

Têkiliya bi karûbarên din re bi gelemperî bi çend karûbarên bikarhêner û çend karûbarên peydaker re ku bangên API-ê yên hêsan û paqij bikar tînin, wekî karanîna REST-ê, sînordar e. Ev tê vê wateyê ku barê cognitive li ser endezyar bi giranî kêm dibe. Pirsgirêka herî mezin têgihîştina modela danûstendina karûbarê û çawa tiştên wekî danûstendinan li ser gelek karûbaran diqewimin dimîne. Wekî encamek, karanîna mîkroxizmetan bi kêmkirina mîqdara kodê, diyarkirina sînorên karûbarê zelal, û têgihîştina têkiliya di navbera bikarhêner û pêşkêşvanan de bargiraniya nasnameyê kêm dike.

Guhertinên piçûk ên piçûk

Hêmana dawî ya prensîbê biçûkbûn rêveberiya guhertinê ye. Ji bo pêşdebiran ceribandinek taybetî ye ku li bingeha kodê (tewra dibe ku koda xwe ya kevntir) binihêrin û bibêjin, "Ev xelet e, pêdivî ye ku em hemî ji nû ve binivîsin." Carinan ev biryara rast e, û carinan ne. Ew barê guherîna modela gerdûnî dixe ser tîmê pêşkeftinê, ku di encamê de dibe sedema bargiraniya giyanî ya girseyî. Ji bo endezyaran çêtir e ku balê bikişînin ser guheztinên ku dikarin di dema sprintê de bikin, da ku ew fonksiyonên pêwîst di wextê xwe de derxînin, her çend hêdî hêdî. Pêdivî ye ku hilbera paşîn dişibe ya ku ji berê ve hatî plansaz kirin, lê digel hin guheztin û ceribandinan li gorî hewcedariyên xerîdar.

Dema ku beşên mezin ên kodê ji nû ve dinivîsin, carinan ne gengaz e ku meriv zû guhartinê radest bike ji ber ku girêdayî pergalên din dileyizin. Ji bo ku hûn herikîna guhertinan kontrol bikin, hûn dikarin veşartina taybetmendiyê bikar bînin. Di prensîbê de, ev tê vê wateyê ku fonksiyon di hilberînê de ye, lê ew bi karanîna mîhengên guhêrbar ên hawîrdorê (env-var) an hin mekanîzmayên vesazkirinê yên din peyda nabe. Ger kod hemî pêvajoyên kontrolkirina kalîteyê derbas kiriye, wê hingê dibe ku ew di hilberandinek dereng de biqede. Lêbelê, ev stratejî tenê kar dike ger taybetmendî di dawiyê de were çalak kirin. Wekî din, ew ê tenê kodê bişewitîne û barek cognitive lê zêde bike ku pêşdebir neçar e ku pê re mijûl bibe da ku hilberîner be. Rêvebiriya guheztinê û guheztinên zêde bi xwe dibin alîkar ku bargiraniya naskirî ya pêşdebiran di astek erzan de bimîne.

Endezyar neçar in ku bi danasîna hêsan a fonksiyonên zêde re jî gelek zehmetiyan derbas bikin. Ji hêla rêveberiyê ve, dê aqilmend be ku barê nehewce li ser tîmê kêm bike da ku ew li ser hêmanên fonksiyonel ên sereke hûr bibe. Sê tişt hene ku hûn dikarin bikin ku alîkariya tîmê pêşkeftina xwe bikin:

  1. Methodolojiyê bikar bînin agileji bo sînorkirina dema ku tê de divê tîm li ser taybetmendiyên sereke bisekine.
  2. Serîlêdana xwe wekî gelek mîkroservisan bicîh bikin. Ev ê hejmara taybetmendiyên ku dikarin bêne bicîh kirin sînordar bike û sînorên ku barkirina cognitive li ser xebatê diparêze xurt bike.
  3. Guhertinên zêde li ser mezin û bêkêmasî tercîh bikin, perçeyên piçûk ên kodê biguhezînin. Veşartina taybetmendiyê bikar bînin da ku guhartinan bicîh bikin her çend ew tavilê piştî lê zêde kirin neyên xuyang kirin.

Ger hûn di xebata xwe de prensîba piçûkbûnê bicîh bînin, tîmê we dê pir dilşadtir be, çêtir li ser bicîhanîna taybetmendiyên pêwîst hûr bibe, û îhtîmal e ku zûtir guhertinên kalîteyî derxe holê. Lê ev nayê vê wateyê ku kar nekare tevlihevtir bibe, carinan, berevajî vê yekê, danasîna fonksiyonên nû hewceyê guheztina çend karûbaran dike, û ev pêvajo dikare ji ya ku di mîmariya yekparêz de ji hevûdu dijwartir be. Di her rewşê de, feydeyên girtina nêzîkatiya piçûkbûnê hêjayî wê ne.

Dawiya beşa yekem.

Di demeke nêzîk de em ê beşa duyem a wergerê biweşînin, niha jî em li benda şîroveyên we ne û we vedixwînin Roja vekirî, ku wê îro saet di 20.00 de pêk were.

Source: www.habr.com

Add a comment