Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin

Silav hevalno.

Em îro ji bo dîtina we wergera gotarek Tugberk Ugurlu pêşkêşî we dikin, yê ku di cildeke pir hindik de prensîbên sêwirana pergalên nermalava nûjen destnîşan kir. Ya ku nivîskar bi kurtî li ser xwe dibêje ev e:

Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin
Ji ber ku ne mimkûn e ku meriv di gotarek habro de mijarek wusa mezin wekî qalibên mîmarî + sêwirana sêwiranê ya sala 2019-an veşêre, em ne tenê nivîsa birêz Uruglu bi xwe, lê di heman demê de gelek lînkên ku wî bi dilovanî tê de cîh dane pêşniyar dikin. Ger hûn jê hez bikin, em ê di derbarê sêwirana pergalên belavbûyî de nivîsek pir pisportir biweşînin.

Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin

Dîmender Îshaq Smith ji Unsplash

Ger we çu carî neçar ma ku bi dijwarîyên weha re rû bi rû bimîne, wekî sêwirana pergalek nermalavê ji nû ve, wê hingê gava ku hûn dest bi xebatek wusa dikin, carinan jî ne diyar e ku meriv ji ku derê dest pê bike. Ez bawer dikim ku hûn pêşî hewce ne ku hûn sînoran xêz bikin da ku hûn xwediyê ramanek kêm an kêmtir pêbawer bin ka hûn ê bi rastî çi sêwiran bikin, û dûv re lingên xwe hildin û di nav wan sînoran de bixebitin. Wekî xala destpêkê, hûn dikarin hilberek an karûbarek (bi îdeal ya ku hûn bi rastî jê hez dikin) bigirin û fêr bibin ka meriv wê çawa bicîh tîne. Dibe ku hûn şaş bimînin ka ev hilber çiqas hêsan xuya dike, û çiqas tevliheviya wê bi rastî heye. Ji bîr nekin: hêsan - bi gelemperî tevlihev, û ew baş e.

Ez difikirim ku şîreta çêtirîn ku ez dikarim bidim her kesê ku dest bi sêwirana pergalek dike ev e: tu texmînan neke! Ji destpêkê ve, hûn hewce ne ku rastiyên ku di derbarê vê pergalê de têne zanîn û hêviyên ku pê re têkildar in diyar bikin. Li vir çend pirsên baş hene ku hûn bipirsin da ku ji we re bibin alîkar ku hûn dest bi sêwirana xwe bikin:

  • Pirsgirêka ku em hewl didin çareser bikin çi ye?
  • Hejmara herî zêde ya bikarhênerên ku dê bi pergala me re têkilî daynin çend e?
  • Em ê kîjan şêweyên daneyên nivîsandin û xwendinê bikar bînin?
  • Bûyerên têkçûnê yên bendewar çi ne, em ê çawa bi wan re mijûl bibin?
  • Hêviyên ji bo hevgirtin û hebûna pergalê çi ne?
  • Ma hûn hewce ne ku dema xebatê hewcedariyên bi verastkirin û rêziknameya derveyî ve girêdayî bihesibînin?
  • Em ê kîjan celeb daneyên hesas hilînin?

Ev tenê çend pirs in ku hem ji min re hem jî ji tîmên ku ez tê de beşdar bûne di salên xebata pîşeyî de kêrhatî bûne. Ger hûn bersivên van pirsan dizanin (û yên din ên ku bi çarçoweya ku hûn tê de bixebitin re têkildar in), wê hingê hûn dikarin hêdî hêdî di hûrguliyên teknîkî yên pirsgirêkê de bigerin.

Asta destpêkê saz bikin

Mebesta min ji "bingeh" li vir çi ye? Bi rastî, di demên me de, piraniya pirsgirêkên di pîşesaziya nermalavê de "dikarin" bi karanîna rêbaz û teknolojiyên heyî werin çareser kirin. Li gorî vê yekê, bi rêveçûna vê perestgehê, gava ku hûn bi pirsgirêkên ku kesek din neçar bû ku berî we çareser bike re rû bi rû dimînin, bi rêveçûna vê perestgehê re serê xwe diyar dikin. Ji bîr nekin ku bername ji bo çareserkirina pirsgirêkên karsaziyê û bikarhêneran têne nivîsandin, ji ber vê yekê em hewl didin ku pirsgirêkê bi awayê herî rast û hêsan (ji nêrîna bikarhêner) çareser bikin. Çima ev girîng e ku bîr bînin? Dibe ku di pergala hevrêziya xwe de hûn dixwazin ji bo hemî pirsgirêkan li çareseriyên yekta bigerin, ji ber ku hûn difikirin, "ez çi celeb bernamenûs im heke ez li her deverê nimûneyan bişopînim"? Di rastî, hunera li vir biryarê dide ku li ku û çi bike. Bê guman, her yek ji me dem bi dem bi pirsgirêkên bêhempa re mijûl dibe, ku her yek ji wan dijwariyek rastîn e. Lêbelê, heke asta meya destpêkê bi zelalî were diyar kirin, wê hingê em dizanin ku em enerjiya xwe li ser çi xerc bikin: lêgerîna vebijarkên amadekirî ji bo çareserkirina pirsgirêka ku li pêşiya me ye, an jî hîn bêtir wê lêkolîn bikin û têgihîştinek kûrtir bistînin.

Ez difikirim ku min karîbû we razî bikim ku ger pisporek bi pêbawer fam bike ku hêmana mîmarî ya hin pergalên nermalava ecêb çi ye, wê hingê ev zanîn dê ji bo serweriya hunera mîmarek û pêşxistina bingehek zexm di vî warî de pêdivî be.

Baş e, ji ku derê dest pê bike? U Donna Martina Li ser GitHub depoyek heye ku jê re tê gotin sîstem-design-primer, ji ku hûn dikarin fêr bibin ka meriv çawa pergalên mezin-pîvaz sêwirîne, û hem jî ji bo hevpeyvînan li ser vê mijarê amade bike. Di depoyê de beşek bi mînakan heye mîmarî rast, li ku derê, bi taybetî, tê hesibandin ku ew çawa nêzikî sêwirana pergalên xwe dibin hin pargîdaniyên navdarmînak Twitter, Uber, hwd.

Lêbelê, berî ku em biçin ser vê materyalê, werin em ji nêz ve li ser pirsgirêkên mîmarî yên herî girîng ên ku em di pratîkê de rû bi rû dimînin binêrin. Ev girîng e ji ber ku divê hûn GELEK aliyên pirsgirêkek serhişk û piralî diyar bikin û dûv re wê di çarçova rêzikên ku di pergalek diyarkirî de derbas dibin de çareser bikin. Jackson Gabbard, karmendek berê yê Facebookê, nivîsand Vîdyoyek 50-hûrqê di derbarê hevpeyivînên sêwirana pergalê de, li wir wî ezmûna xwe ya sehkirina bi sedan serlêderan parve kir. Digel ku vîdyoyê bi giranî li ser sêwirana pergalê ya mezin û pîvanên serfiraziyê yên ku girîng in dema ku li berendamek ji bo pozîsyonek wusa digere, balê dikişîne, ew ê dîsa jî wekî çavkaniyek berfireh li ser tiştên ku di sêwirana pergalan de herî girîng in xizmet bike. Ez jî pêşniyar dikim berhevkirinî vê vîdyoyê.

Di derbarê hilanîn û wergirtina daneyan de zanînê ava bikin

Bi gelemperî, biryara we di derheqê ka hûn çawa daneyên xwe di demek dirêj de hildigirin û vedigirin bandorek girîng li ser performansa pergalê heye. Ji ber vê yekê, divê hûn pêşî taybetmendiyên nivîsandin û xwendinê yên pergala xwe fam bikin. Dûv re hûn hewce ne ku hûn bikaribin van nîşanan binirxînin û li gorî nirxandinên hatine çêkirin bijartinan bikin. Lêbelê, hûn dikarin bi bandor bi vî karî re mijûl bibin tenê heke hûn qalibên hilanîna daneya heyî fam bikin. Di prensîbê de, ev tê wateya zanîna zexm a têkildar hilbijartina databasê.

Daneyên daneyan dikarin wekî strukturên daneyê yên ku zehf berbelav û domdar in têne hesibandin. Ji ber vê yekê, dema ku databasek taybetî hilbijêrin divê zanîna strukturên daneyê ji we re pir bikêr be. Bo nimûne, Redis serverek avahiya daneyê ye ku cûrbecûr nirxan piştgirî dike. Ew dihêle hûn bi strukturên daneyê yên wekî navnîş û koman re bixebitin, û bi karanîna algorîtmayên naskirî daneyan bixwînin, mînakî, LRU, bi şêwazekî domdar û pir bi destanî xebatên wiha organîze kirin.

Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin

Dîmender Samuel Zeller ji Unsplash

Gava ku hûn têgihîştinek têr a şêwazên hilanîna daneya cihêreng hebe, berbi xwendina hevgirtî û hebûna daneyê ve biçin. Berî her tiştî, divê hûn fêm bikin teorema CAP bi kêmanî bi awayên gelemperî, û dûv re vê zanînê bi nihêrînek nêzîk li qalibên sazkirî bişopînin hevgirtî и gihîştîbûn. Bi vî rengî, hûn ê têgihîştina zeviyê pêşve bibin û fêm bikin ku xwendin û nivîsandina daneyan bi rastî du pirsgirêkên pir cûda ne, ku her yek bi kêşeyên xwe yên bêhempa ne. Bi çend şêwazên domdar û berdestbûnê ve hatî çekdar kirin, hûn dikarin performansa pergalê bi girîngî zêde bikin dema ku herikîna daneya bêkêmasî ji serîlêdanên xwe re misoger bikin.

Di dawiyê de, di dawiya axaftina li ser pirsgirêkên hilanîna daneyê de, divê em behsa cachkirinê jî bikin. Ma divê ew bi hevdemî li ser xerîdar û serverê bixebite? Dê çi data di cacheya we de bin? Û çima? Meriv çawa betalkirina cache organîze dike? Dê bi rêkûpêk, di hin navberan de were kirin? Ger erê, çend caran? Ez pêşniyar dikim ku dest bi xwendina van mijaran bikin beşa paşîn primera sêwirana pergalê ya jorîn.

Şêweyên Peywendiyê

Pergal ji pêkhateyên cihê pêk tên; dibe ku ev pêvajoyên cihêreng bin ku di heman girêka laşî de dimeşin, an makîneyên cihêreng ên ku li ser beşên cûda yên tora we dixebitin. Dibe ku hin ji van çavkaniyan di nav tora we de nepenî bin, lê yên din divê ji xerîdarên ku ji derve digihîjin wan gelemperî û vekirî bin.

Pêwîst e peywendiya van çavkaniyan bi hev re bê misogerkirin, her wiha pevguhertina agahiyan di navbera hemû sîstem û cîhana derve de. Di çarçoveya sêwirana pergalê de, li vir dîsa em bi komek dijwariyên nû û bêhempa re rû bi rû ne. Werin em binihêrin ka ew çawa dikarin kêrhatî bin peywira asînkron diherike, û çi pCûrbecûr şêweyên ragihandinê hene.

Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin

Dîmender Tony Stoddard ji Unsplash

Dema ku têkiliya bi cîhana derve re organîze dike, ew her gav pir girîng e ewlehî, dabînkirina wê jî divê bi awayekî cidî û aktîf bê şopandin.

Dabeşkirina girêdanê

Ez ne bawer im ku danîna vê mijarê di beşeke cûda de dê ji her kesî re rewa xuya bike. Lêbelê, ez ê vê têgehê bi hûrgulî li vir pêşkêşî bikim, û ez bawer dikim ku materyalê di vê beşê de herî rast bi têgîna "belavkirina pêwendiyê" tête diyar kirin.

Pergal bi bi rêkûpêk girêdana gelek pêkhateyan têne çêkirin, û danûstendina wan bi hev re bi gelemperî li ser bingeha protokolên sazkirî têne organîze kirin, mînakî, TCP û UDP. Lêbelê, ev protokol wekî wusa bi gelemperî ne bes in ku hemî hewcedariyên pergalên nûjen bicîh bînin, ku bi gelemperî di bin barek zêde de têne xebitandin û di heman demê de pir bi hewcedariyên bikarhêner ve girêdayî ne. Bi gelemperî pêdivî ye ku meriv rêyên belavkirina girêdanan bibîne da ku bi bargiraniyên weha bilind ên li ser pergalê re mijûl bibe.

Ev dabeşkirin li ser bingeha naskirî ye sîstema navê domain (DNS). Pergalek wusa destûrê dide veguheztinên navên domainê yên wekî rêgezên dorhêl ên giran û rêbazên derengmayînê da ku alîkariya belavkirina barkirinê bikin.

hevsengkirina barkirinê bi bingehîn girîng e, û hema hema her pergala mezin a Înternetê ya ku em îro pê re mijûl dibin li pişt yek an çend hevsengên barkirinê ne. Balkêşkerên barkirinê alîkariya belavkirina daxwazên xerîdar li ser gelek bûyerên berdest dikin. Balkêşên barkirinê hem di hardware û hem jî nermalavê de têne, lêbelê, di pratîkê de, pir caran hûn neçar in ku bi yên nermalavê re mijûl bibin, mînakî HAProxy и ELB. Reverse proxies ji hêla têgînî ve jî pir dişibin hevsengên barkirinê, her çend di navbera yekem û duyemîn de navberek heye cudahiyên cuda. Dema ku li gorî hewcedariyên we pergalek sêwirandin divê ev cûdahî bêne hesibandin.

Divê hûn jî pê zanibin torên radestkirina naverokê (CDN). CDN torgilokek belavkirî ya gerdûnî ya pêşkêşkerên proxy ye ku agahdariya ji girêkên ku ji hêla erdnîgarî ve nêzîkê bikarhênerek taybetî ne radigihîne. Heke hûn bi pelên statîk ên ku di JavaScript, CSS û HTML-ê de hatine nivîsandin de bixebitin, CDN çêtir e ku werin bikar anîn. Wekî din, karûbarên ewr ên ku rêveberên trafîkê peyda dikin îro gelemperî ne, mînakî, Azure Traffic Manager, dema ku hûn bi naveroka dînamîkî re dixebitin belavkirina gerdûnî û dereng kêm dike. Lêbelê, karûbarên weha bi gelemperî di rewşên ku hûn neçar in bi karûbarên malperê yên bêdewlet re bixebitin bikêr in.

Ka em behsa mantiqa karsaziyê bikin. Avakirina mantiqa karsaziyê, herikîna peywirê û pêkhateyan

Ji ber vê yekê, me karî li ser gelek aliyên binesaziyê yên pergalê nîqaş bikin. Bi îhtîmalek mezin, bikarhêner li ser van hemî hêmanên pergala we jî nafikire û, bi eşkereyî, qet guh nade wan. Bikarhêner eleqedar e ku meriv bi pergala we re têkilî çi ye, bi kirina vê yekê çi dikare bigihîje, û her weha pergal çawa fermanên bikarhêner bicîh tîne, çi û çawa bi daneyên bikarhêner re dike.

Wekî ku sernavê vê gotarê diyar dike, ez ê li ser mîmariya nermalavê û sêwirana pergalê biaxivim. Li gorî vê yekê, min plan nekir ku qalibên sêwirana nermalavê ku diyar dike ka pêkhateyên nermalavê çawa têne afirandin veşêrim. Lêbelê, her ku ez li ser wê difikirim, ew qas ji min re xuya dike ku xeta di navbera qalibên sêwirana nermalavê û qalibên mîmarî de pir nezelal e, û her du têgeh ji nêz ve girêdayî ne. Werin em ji bo nimûne qeydkirina bûyerê (çavkaniya bûyerê). Gava ku hûn vê şêwaza mîmarî bipejirînin, ew ê hema hema li her aliyek pergala we bandor bike: hilanîna daneya dirêj-dirêj, asta domdariya ku di pergala we de hatî pejirandin, şeklê pêkhateyên di wê de, hwd., hwd. Ji ber vê yekê, min biryar da ku ez behsa hin nimûneyên mîmarî bikim ku rasterast bi mantiqa karsaziyê ve girêdayî ne. Her çend ev gotar neçar e ku xwe bi navnîşek hêsan sînordar bike, ez ji we re teşwîq dikim ku hûn xwe pê nas bikin û li ser ramanên ku bi van nimûneyan ve girêdayî ne bifikirin. Kerem ke:

Nêzîkatiyên hevkariyê

Pir ne mimkûn e ku hûn xwe li ser projeyek wekî beşdarê ku bi tenê berpirsiyarê pêvajoya sêwirana pergalê ye bibînin. Berevajî vê, bi îhtîmalek mezin hûn ê neçar bin ku bi hevkarên ku hem di hundur û hem jî li derveyî peywira we de dixebitin re têkilî daynin. Di vê rewşê de, dibe ku hûn hewce bibin ku çareseriyên teknolojiyê yên bijartî bi hevkarên xwe re binirxînin, hewcedariyên karsaziyê nas bikin û fêm bikin ka meriv çawa karan çawa çêtirîn paralel dike.

Mîmariya Nermalavê û Sêwirana Pergalan: Rêbernameya Wêne û Çavkaniyê ya Mezin

Dîmender Kaleidico ji Unsplash

Gava yekem ev e ku meriv têgihiştinek rast û hevbeş pêş bixe ka armanca karsaziya ku hûn hewl didin bigihîjin çi ye û hûn ê bi kîjan beşên tevgerê re mijûl bibin. Bi taybetî teknîkên modelkirina komê bûyerên bahozê (bahoza bûyerê) dibe alîkar ku hûn vê pêvajoyê bi girîngî bilezînin û şansên we yên serkeftinê zêde bikin. Ev kar dikare berî an piştî ku hûn diyar bikin were kirin sînorên xizmetên we, û dûv re her ku hilber mezin dibe wê kûr bikin. Li ser bingeha asta hevgirtinê ya ku dê li vir were bidestxistin, hûn dikarin formule jî bikin zimanê hevpar ji bo çarçoveya sînorkirî ya ku hûn tê de dixebitin. Gava ku hûn hewce ne ku li ser mîmariya pergala xwe biaxivin, dibe ku hûn wê kêrhatî bibînin modela C4, pêşniyar kirin Simon Brown, nemaze gava ku hûn hewce ne ku hûn fêm bikin ka hûn ê çiqasî bi hûrguliyên pirsgirêkê ve biçin, tiştên ku hûn dixwazin ragihînin dîmen bikin.

Di vê mijarê de belkî teknolojiyek din a gihîştî heye ku ji sêwirana Domain Driven ne kêmtir bikêr e. Lêbelê, em bi rengekî vedigerin têgihîştina qada mijarê, ji ber vê yekê zanîn û ezmûna di qadê de Domain-Driven Design divê ji we re bikêr be.

Source: www.habr.com

Ji bo malperên bi parastina DDoS, serverên VPS VDS mêvandariya pêbawer bikirin 🔥 Hostinga malperê ya pêbawer bi parastina DDoS, serverên VPS VDS bikirin | ProHoster