Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau

Helo cydweithwyr.

Heddiw rydym yn cynnig i chi ei ystyried gyfieithiad o erthygl gan Tugberk Ugurlu, a ymrwymodd i amlinellu mewn cyfrol gymharol fach egwyddorion dylunio systemau meddalwedd modern. Dyma beth mae'r awdur yn ei ddweud amdano'i hun yn gryno:

Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau
Gan ei bod yn gwbl amhosibl ymdrin â phwnc mor aruthrol â phatrymau pensaernïol + patrymau dylunio o 2019 mewn erthygl habro, rydym yn argymell nid yn unig destun Mr. Uruglu ei hun, ond hefyd y cysylltiadau niferus a gynhwysodd yn garedig ynddo. Os ydych yn ei hoffi, byddwn yn cyhoeddi testun mwy arbenigol am ddyluniad systemau gwasgaredig.

Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau

Ciplun Isaac Smith oddi wrth Unsplash

Os nad ydych erioed wedi gorfod wynebu heriau fel dylunio system feddalwedd o'r newydd, yna wrth ddechrau gwaith o'r fath, weithiau nid yw hyd yn oed yn glir ble i ddechrau. Credaf fod angen ichi yn gyntaf dynnu ffiniau fel bod gennych syniad mwy neu lai hyderus o beth yn union yr ydych yn mynd i’w ddylunio, ac yna torchi eich llewys a gweithio o fewn y ffiniau hynny. Fel man cychwyn, gallwch chi gymryd cynnyrch neu wasanaeth (yn ddelfrydol un rydych chi'n ei hoffi mewn gwirionedd) a darganfod sut i'w weithredu. Efallai y byddwch chi'n rhyfeddu at ba mor syml y mae'r cynnyrch hwn yn edrych, a faint o gymhlethdod y mae'n ei gynnwys mewn gwirionedd. Paid ag anghofio: syml - cymhleth fel arfer, ac mae hynny'n iawn.

Rwy'n meddwl mai'r cyngor gorau y gallaf ei roi i unrhyw un sy'n dechrau dylunio system yw hyn: peidiwch â gwneud unrhyw ragdybiaethau! O'r cychwyn cyntaf, mae angen i chi nodi'r ffeithiau sy'n hysbys am y system hon a'r disgwyliadau sy'n gysylltiedig ag ef. Dyma rai cwestiynau da i'w gofyn i'ch helpu i ddechrau ar eich dyluniad:

  • Beth yw'r broblem yr ydym yn ceisio ei datrys?
  • Beth yw'r nifer brig o ddefnyddwyr a fydd yn rhyngweithio â'n system?
  • Pa batrymau ysgrifennu a darllen data fyddwn ni'n eu defnyddio?
  • Beth yw'r achosion methiant disgwyliedig, sut ydym ni'n mynd i ymdrin â nhw?
  • Beth yw'r disgwyliadau ar gyfer cysondeb ac argaeledd y system?
  • A oes rhaid i chi ystyried unrhyw ofynion sy'n ymwneud â dilysu a rheoleiddio allanol wrth weithio?
  • Pa fathau o ddata sensitif ydyn ni'n mynd i'w storio?

Dim ond ychydig o gwestiynau yw’r rhain sydd wedi bod yn ddefnyddiol i mi ac i’r timau yr wyf wedi cymryd rhan ynddynt dros y blynyddoedd o weithgarwch proffesiynol. Os ydych chi'n gwybod yr atebion i'r cwestiynau hyn (ac unrhyw rai eraill sy'n berthnasol i'r cyd-destun y mae'n rhaid i chi weithio ynddo), yna gallwch chi ymchwilio'n raddol i fanylion technegol y broblem.

Gosodwch y lefel gychwynnol

Beth ydw i'n ei olygu gyda “gwaelodlin” yma? Mewn gwirionedd, yn ein hoes ni, “gellir” datrys y rhan fwyaf o broblemau yn y diwydiant meddalwedd gan ddefnyddio dulliau a thechnolegau presennol. Yn unol â hynny, trwy lywio'r dirwedd hon, rydych chi'n cael dechrau da wrth wynebu problemau yr oedd yn rhaid i rywun arall eu datrys o'ch blaen. Peidiwch ag anghofio bod rhaglenni wedi'u hysgrifennu i ddatrys problemau busnes a defnyddwyr, felly rydym yn ymdrechu i ddatrys y broblem yn y ffordd fwyaf syml a syml (o safbwynt y defnyddiwr). Pam mae hyn yn bwysig i'w gofio? Efallai yn eich system gydlynu yr hoffech chi chwilio am atebion unigryw ar gyfer pob problem, oherwydd eich bod chi'n meddwl, “pa fath o raglennydd ydw i os ydw i'n dilyn patrymau ym mhobman”? Yn wir, y gelfyddyd yma yw gwneud penderfyniadau ynghylch ble a beth i'w wneud. Wrth gwrs, mae'n rhaid i bob un ohonom ddelio â phroblemau unigryw o bryd i'w gilydd, pob un ohonynt yn her wirioneddol. Fodd bynnag, os yw ein lefel gychwynnol wedi’i diffinio’n glir, yna rydym yn gwybod ar beth i wario ein hegni: chwilio am opsiynau parod ar gyfer datrys y broblem a osodwyd o’n blaenau, neu ei hastudio ymhellach a chael dealltwriaeth ddyfnach.

Rwy'n meddwl fy mod wedi gallu eich argyhoeddi, os yw arbenigwr yn deall yn hyderus beth yw cydran bensaernïol rhai systemau meddalwedd gwych, yna bydd y wybodaeth hon yn anhepgor ar gyfer meistroli celf pensaer a datblygu sylfaen gadarn yn y maes hwn.

Iawn, felly ble i ddechrau? U Donna Martina Mae ystorfa ar GitHub o'r enw system-dylunio-primer, lle gallwch ddysgu sut i ddylunio systemau ar raddfa fawr, yn ogystal â pharatoi ar gyfer cyfweliadau ar y pwnc hwn. Mae gan y gadwrfa adran gydag enghreifftiau pensaernïaeth go iawn, lle, yn benodol, yr ystyrir sut y maent yn ymdrin â chynllun eu systemau rhai cwmnïau adnabyddusee Twitter, Uber, ac ati.

Fodd bynnag, cyn symud ymlaen at y deunydd hwn, gadewch i ni edrych yn agosach ar yr heriau pensaernïol pwysicaf yr ydym yn eu hwynebu yn ymarferol. Mae hyn yn bwysig oherwydd mae'n rhaid ichi nodi NIFER o agweddau ar broblem ystyfnig ac amlochrog, ac yna ei datrys o fewn fframwaith y rheoliadau sydd mewn grym mewn system benodol. Jackson Gabbard, cyn-weithiwr Facebook, ysgrifennodd Fideo 50 munud am gyfweliadau dylunio systemau, lle rhannodd ei brofiad ei hun o sgrinio cannoedd o ymgeiswyr. Er bod y fideo yn canolbwyntio'n helaeth ar ddylunio systemau mawr a'r meini prawf llwyddiant sy'n bwysig wrth chwilio am ymgeisydd ar gyfer swydd o'r fath, bydd yn dal i fod yn adnodd cynhwysfawr ar ba bethau sydd bwysicaf wrth ddylunio systemau. Rwyf hefyd yn awgrymu crynodeb y fideo hwn.

Meithrin gwybodaeth am storio ac adalw data

Yn nodweddiadol, mae eich penderfyniad ynghylch sut i storio ac adalw eich data dros y tymor hir yn cael effaith hollbwysig ar berfformiad system. Felly, yn gyntaf rhaid i chi ddeall nodweddion ysgrifennu a darllen disgwyliedig eich system. Yna mae angen i chi allu gwerthuso'r dangosyddion hyn a gwneud dewisiadau ar sail yr asesiadau a wnaed. Fodd bynnag, dim ond os ydych chi'n deall patrymau storio data presennol y gallwch chi ymdopi'n effeithiol â'r gwaith hwn. Mewn egwyddor, mae hyn yn awgrymu gwybodaeth gadarn yn ymwneud â dewis cronfa ddata.

Gellir meddwl am gronfeydd data fel strwythurau data sy'n hynod scalable a gwydn. Felly, dylai gwybodaeth am strwythurau data fod yn ddefnyddiol iawn i chi wrth ddewis cronfa ddata benodol. Er enghraifft, Redis yn weinydd strwythur data sy'n cefnogi gwahanol fathau o werthoedd. Mae'n caniatáu ichi weithio gyda strwythurau data megis rhestrau a setiau, a darllen data gan ddefnyddio algorithmau adnabyddus, er enghraifft, LRU, trefnu gwaith o'r fath mewn arddull wydn a hynod hygyrch.

Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau

Ciplun Samuel Zeller oddi wrth Unsplash

Unwaith y bydd gennych ddealltwriaeth ddigonol o'r patrymau storio data amrywiol, symudwch ymlaen i astudio cysondeb ac argaeledd data. Yn gyntaf oll, mae angen i chi ddeall Theorem CAP yn gyffredinol o leiaf, ac yna caboli'r wybodaeth hon trwy edrych yn agosach ar batrymau sefydledig cysondeb и hygyrchedd. Fel hyn, byddwch yn dod yn fwy gwybodus yn y maes hwn ac yn deall bod darllen ac ysgrifennu data mewn gwirionedd yn ddwy broblem wahanol iawn, pob un â'i heriau unigryw ei hun. Gydag ychydig o batrymau cysondeb ac argaeledd, gallwch gynyddu perfformiad system yn ddramatig wrth sicrhau llif data llyfn i'ch cymwysiadau.

Yn olaf, wrth gloi'r sgwrs am faterion storio data, dylem hefyd sôn am caching. A ddylai redeg ar yr un pryd ar y cleient a'r gweinydd? Pa ddata fydd yn eich celc? A pham? Sut ydych chi'n trefnu annilysu cache? A fydd yn cael ei wneud yn rheolaidd, ar adegau penodol? Os oes, pa mor aml? Rwy'n argymell dechrau astudio'r pynciau hyn gyda adran nesaf y paent preimio dylunio system a grybwyllwyd uchod.

Patrymau Cyfathrebu

Mae systemau yn cynnwys gwahanol gydrannau; gallai'r rhain fod yn brosesau gwahanol sy'n rhedeg o fewn yr un nod ffisegol, neu beiriannau gwahanol yn rhedeg ar wahanol rannau o'ch rhwydwaith. Gall rhai o'r adnoddau hyn o fewn eich rhwydwaith fod yn breifat, ond dylai eraill fod yn gyhoeddus ac yn agored i ddefnyddwyr eu cyrchu o'r tu allan.

Mae angen sicrhau cyfathrebu'r adnoddau hyn â'i gilydd, yn ogystal â chyfnewid gwybodaeth rhwng y system gyfan a'r byd y tu allan. Yng nghyd-destun dylunio systemau, yma eto rydym yn wynebu set o heriau newydd ac unigryw. Gadewch i ni weld sut y gallant fod yn ddefnyddiol llif tasg asyncronaidd, a beth tMae amrywiaeth o batrymau cyfathrebu ar gael.

Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau

Ciplun Tony Stoddard oddi wrth Unsplash

Wrth drefnu cyfathrebu â'r byd y tu allan, mae bob amser yn bwysig iawn diogelwch, y mae hefyd angen cymryd o ddifrif a mynd ati i'w darparu.

Dosbarthiad cysylltiad

Nid wyf yn siŵr y bydd rhoi’r pwnc hwn mewn adran ar wahân yn ymddangos yn gyfiawn i bawb. Serch hynny, byddaf yn cyflwyno'r cysyniad hwn yn fanwl yma, a chredaf fod y deunydd yn yr adran hon wedi'i ddisgrifio'n fwyaf cywir gan y term “dosbarthiad cysylltiad”.

Ffurfir systemau trwy gysylltu llawer o gydrannau'n iawn, ac mae eu cyfathrebu â'i gilydd yn aml yn cael ei drefnu ar sail protocolau sefydledig, er enghraifft, TCP a CDU. Fodd bynnag, mae'r protocolau hyn fel y cyfryw yn aml yn annigonol i ddiwallu holl anghenion systemau modern, sy'n aml yn cael eu gweithredu dan lwyth uchel ac sydd hefyd yn ddibynnol iawn ar anghenion defnyddwyr. Yn aml mae angen dod o hyd i ffyrdd o ddosbarthu cysylltiadau i ymdopi â llwythi mor uchel ar y system.

Mae'r dosbarthiad hwn yn seiliedig ar y adnabyddus system enw parth (DNS). Mae system o'r fath yn caniatáu trawsnewidiadau enw parth fel robin crwn wedi'i bwysoli a dulliau sy'n seiliedig ar hwyrni i helpu i ddosbarthu'r llwyth.

Cydbwyso llwyth yn sylfaenol bwysig, ac mae bron pob system Rhyngrwyd fawr yr ydym yn delio â hi heddiw wedi'i lleoli y tu ôl i un neu fwy o gydbwyswyr llwyth. Mae balanswyr llwyth yn helpu i ddosbarthu ceisiadau cleientiaid ar draws sawl achos sydd ar gael. Daw balansau llwyth mewn caledwedd a meddalwedd, fodd bynnag, yn ymarferol, yn aml mae'n rhaid i chi ddelio â rhai meddalwedd, er enghraifft HAProxy и ELB. Dirprwyon gwrthdro yn gysyniadol hefyd yn debyg iawn i balancers llwyth, er bod ystod rhwng y cyntaf a'r ail gwahaniaethau amlwg. Rhaid ystyried y gwahaniaethau hyn wrth ddylunio system yn seiliedig ar eich anghenion.

Dylech hefyd wybod am rhwydweithiau darparu cynnwys (CDN). Rhwydwaith dosbarthedig byd-eang o weinyddion dirprwyol yw CDN sy'n darparu gwybodaeth o nodau sydd wedi'u lleoli'n ddaearyddol yn agosach at ddefnyddiwr penodol. Mae CDNs yn well i'w defnyddio os ydych chi'n gweithio gyda ffeiliau statig wedi'u hysgrifennu yn JavaScript, CSS a HTML. Yn ogystal, mae gwasanaethau cwmwl sy'n darparu rheolwyr traffig yn gyffredin heddiw, er enghraifft, Rheolwr Traffig Azure, gan roi dosbarthiad byd-eang a llai o hwyrni i chi wrth weithio gyda chynnwys deinamig. Fodd bynnag, mae gwasanaethau o'r fath fel arfer yn ddefnyddiol mewn achosion lle mae'n rhaid i chi weithio gyda gwasanaethau gwe heb wladwriaeth.

Gadewch i ni siarad am resymeg busnes. Strwythuro rhesymeg busnes, llif tasgau a chydrannau

Felly, llwyddwyd i drafod gwahanol agweddau seilwaith ar y system. Yn fwyaf tebygol, nid yw'r defnyddiwr hyd yn oed yn meddwl am yr holl elfennau hyn o'ch system ac, a dweud y gwir, nid yw'n poeni amdanynt o gwbl. Mae gan y defnyddiwr ddiddordeb mewn sut brofiad yw rhyngweithio â'ch system, beth ellir ei gyflawni trwy wneud hyn, a hefyd sut mae'r system yn gweithredu gorchmynion defnyddwyr, beth a sut mae'n ei wneud gyda data defnyddwyr.

Fel y mae teitl yr erthygl hon yn ei awgrymu, roeddwn i'n mynd i siarad am bensaernïaeth meddalwedd a dylunio system. Yn unol â hynny, nid oeddwn yn bwriadu ymdrin â phatrymau dylunio meddalwedd sy'n disgrifio sut mae cydrannau meddalwedd yn cael eu creu. Fodd bynnag, po fwyaf yr wyf yn meddwl amdano, y mwyaf y mae'n ymddangos i mi fod y llinell rhwng patrymau dylunio meddalwedd a phatrymau pensaernïol yn aneglur iawn, ac mae'r ddau gysyniad yn perthyn yn agos. Gadewch i ni gymryd er enghraifft cofrestru digwyddiad (cyrchu digwyddiad). Ar ôl i chi fabwysiadu'r patrwm pensaernïol hwn, bydd yn effeithio ar bron bob agwedd ar eich system: storio data yn y tymor hir, lefel y cysondeb a fabwysiadwyd yn eich system, siâp y cydrannau ynddo, ac ati, ac ati. Felly, penderfynais sôn am rai patrymau pensaernïol sy’n ymwneud yn uniongyrchol â rhesymeg busnes. Er y bydd yn rhaid i'r erthygl hon gyfyngu ei hun i restr syml, rwy'n eich annog i ddod yn gyfarwydd â hi a meddwl am y syniadau sy'n gysylltiedig â'r patrymau hyn. Dyma chi:

Dulliau cydweithredol

Mae'n annhebygol iawn y byddwch yn cael eich hun ar brosiect fel y cyfranogwr sy'n llwyr gyfrifol am y broses dylunio system. I'r gwrthwyneb, mae'n debygol y bydd yn rhaid i chi ryngweithio â chydweithwyr sy'n gweithio o fewn a thu allan i'ch tasg. Yn yr achos hwn, efallai y bydd angen i chi werthuso'r datrysiadau technoleg a ddewiswyd gyda chydweithwyr, nodi anghenion busnes a deall y ffordd orau o gyfochri tasgau.

Pensaernïaeth Meddalwedd a Dylunio Systemau: Y Darlun Mawr a'r Canllaw Adnoddau

Ciplun Kaleidico oddi wrth Unsplash

Y cam cyntaf yw datblygu dealltwriaeth gywir a rennir o beth yw'r nod busnes rydych chi'n ceisio ei gyflawni a pha rannau symudol y bydd yn rhaid i chi ddelio â nhw. Technegau modelu grŵp, yn arbennig digwyddiadau stormus (stormio digwyddiad) helpu i gyflymu'r broses hon yn sylweddol a chynyddu eich siawns o lwyddo. Gellir gwneud y gwaith hwn cyn neu ar ôl i chi amlinellu ffiniau eich gwasanaethau, ac yna ei ddyfnhau wrth i'r cynnyrch aeddfedu. Yn seiliedig ar lefel y cysondeb a gyflawnir yma, gallwch hefyd lunio iaith gyffredin am y cyd-destun cyfyngedig yr ydych yn gweithio ynddo. Pan fydd angen i chi siarad am bensaernïaeth eich system, efallai y bydd yn ddefnyddiol i chi model C4, arfaethedig Simon Brown, yn enwedig pan fydd angen i chi ddeall faint y bydd yn rhaid i chi fynd i fanylion y broblem, gan ddelweddu'r pethau rydych chi am eu cyfathrebu.

Mae'n debyg bod yna dechnoleg aeddfed arall ar y pwnc hwn nad yw'n llai defnyddiol na Dylunio a Yrrir gan Domain. Fodd bynnag, rydym rywsut yn dychwelyd i ddeall y maes pwnc, felly gwybodaeth a phrofiad yn y maes Dylunio a yrrir gan Barth dylai fod yn ddefnyddiol i chi.

Ffynhonnell: hab.com

Ychwanegu sylw