Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan

Hello mga kauban.

Karon kami nagtanyag alang sa imong konsiderasyon sa usa ka paghubad sa usa ka artikulo ni Tugberk Ugurlu, kinsa mihimo sa outline sa medyo gamay nga volume sa mga prinsipyo sa pagdesinyo sa modernong mga sistema sa software. Ania ang giingon sa tagsulat bahin sa iyang kaugalingon sa katingbanan:

Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan
Tungod kay imposible nga matabonan sa usa ka artikulo sa habro ang usa ka dako nga hilisgutan sama sa mga pattern sa arkitektura + mga pattern sa disenyo sa 2019, girekomenda namon dili lamang ang teksto ni Mr. Uruglu mismo, apan usab ang daghang mga link nga malulotong gilakip niini. Kung gusto nimo, mag-publish kami usa ka labi ka espesyal nga teksto bahin sa disenyo sa mga gipang-apod-apod nga sistema.

Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan

Snapshot Isaac Smith gikan sa Unsplash

Kung wala pa nimo kinahanglan atubangon ang mga hagit sama sa pagdesinyo sa usa ka sistema sa software gikan sa wala, unya kung magsugod sa ingon nga trabaho, usahay dili gani klaro kung asa magsugod. Nagtuo ko nga kinahanglan nimo una nga magdrowing og mga utlanan aron ikaw adunay usa ka labi o dili kaayo masaligon nga ideya kung unsa gyud ang imong idisenyo, ug dayon paligdi ang imong mga manggas ug pagtrabaho sa sulod sa mga utlanan. Ingon usa ka punto sa pagsugod, mahimo nimong makuha ang usa ka produkto o serbisyo (mas maayo usa nga gusto nimo) ug mahibal-an kung giunsa kini ipatuman. Mahimong matingala ka kung unsa ka yano ang hitsura sa kini nga produkto, ug kung unsa ka komplikado ang sulud niini. Ayaw kalimti: simple - kasagaran komplikado, ug okay ra.

Sa akong hunahuna ang labing kaayo nga tambag nga akong mahatag sa bisan kinsa nga nagsugod sa pagdesinyo sa usa ka sistema mao kini: ayaw paghimo og bisan unsang mga pangagpas! Gikan sa sinugdanan, kinahanglan nimo nga ipiho ang mga kamatuoran nga nahibal-an bahin sa kini nga sistema ug ang mga gilauman nga nalangkit niini. Ania ang pipila ka maayong mga pangutana nga ipangutana aron matabangan ka nga makasugod sa imong disenyo:

  • Unsa ang problema nga atong gipaningkamutan nga masulbad?
  • Unsa ang peak nga ihap sa mga tiggamit nga makig-uban sa among sistema?
  • Unsang mga sumbanan sa pagsulat ug pagbasa sa datos ang atong gamiton?
  • Unsa ang gipaabot nga mga kaso sa kapakyasan, unsaon nato pagdumala kini?
  • Unsa ang mga gilauman alang sa pagkamakanunayon ug pagkaanaa sa sistema?
  • Kinahanglan ba nimo nga tagdon ang bisan unsang mga kinahanglanon nga may kalabutan sa eksternal nga pag-verify ug regulasyon kung nagtrabaho?
  • Unsang mga matang sa sensitibo nga datos ang atong tipigan?

Pipila lang kini nga mga pangutana nga mapuslanon alang kanako ug sa mga team diin ako miapil sa daghang mga tuig sa propesyonal nga kalihokan. Kung nahibal-an nimo ang mga tubag niini nga mga pangutana (ug bisan unsang uban pa nga may kalabutan sa konteksto diin kinahanglan nimo nga magtrabaho), nan mahimo nimo anam-anam nga susihon ang mga teknikal nga detalye sa problema.

Ibutang ang inisyal nga lebel

Unsa ang akong gipasabut sa "baseline" dinhi? Sa tinuud, sa atong panahon, kadaghanan sa mga problema sa industriya sa software "mahimong" masulbad gamit ang naglungtad nga mga pamaagi ug teknolohiya. Tungod niini, pinaagi sa pag-navigate sa kini nga talan-awon, nakakuha ka usa ka piho nga pagsugod kung nag-atubang sa mga problema nga kinahanglan sulbaron sa uban sa imong atubangan. Ayaw kalimti nga ang mga programa gisulat aron masulbad ang mga problema sa negosyo ug tiggamit, mao nga maningkamot kami nga masulbad ang problema sa labing prangka ug yano (gikan sa panan-aw sa tiggamit) nga paagi. Nganong importante kini nga hinumdoman? Tingali sa imong sistema sa koordinasyon gusto nimo nga mangita alang sa talagsaon nga mga solusyon alang sa tanan nga mga problema, tungod kay sa imong hunahuna, "unsa nga klase nga programmer ako kung sundon nako ang mga sumbanan bisan diin"? Sa pagkatinuod, ang arte dinhi mao ang paghimog mga desisyon kung asa ug unsa ang buhaton. Siyempre, matag usa kanato kinahanglang mag-atubang ug talagsaong mga problema matag karon ug unya, nga ang matag usa maoy tinuod nga hagit. Bisan pa, kung ang atong inisyal nga lebel tin-aw nga gihubit, nan nahibal-an naton kung unsa ang paggasto sa atong kusog: pagpangita alang sa andam nga mga kapilian alang sa pagsulbad sa problema nga gibutang sa atong atubangan, o dugang nga pagtuon niini ug pag-angkon og mas lawom nga pagsabut.

Sa akong hunahuna nakahimo ako sa pagkombinsir kanimo nga kung ang usa ka espesyalista masaligon nga nakasabut kung unsa ang bahin sa arkitektura sa pipila ka mga katingad-an nga sistema sa software, nan kini nga kahibalo kinahanglanon alang sa pag-master sa arte sa usa ka arkitekto ug pagpalambo sa usa ka lig-on nga sukaranan sa kini nga natad.

Okay, busa asa magsugod? U Donna Martina Adunay usa ka repository sa GitHub nga gitawag sistema-design-primer, diin makakat-on ka kung giunsa ang pagdesinyo sa mga dagkong sistema, ingon man pag-andam alang sa mga interbyu bahin niini nga hilisgutan. Ang repository adunay usa ka seksyon nga adunay mga pananglitan tinuod nga mga arkitektura, diin, sa partikular, gikonsiderar kung giunsa nila pagduol ang disenyo sa ilang mga sistema pipila ka iladong kompanyaeg Twitter, Uber, ug uban pa.

Bisan pa, sa dili pa mopadayon sa kini nga materyal, atong tan-awon pag-ayo ang labing hinungdanon nga mga hagit sa arkitektura nga atong giatubang sa praktis. Importante kini tungod kay kinahanglan nimong ipiho ang DAGHAN nga mga aspeto sa usa ka gahi ug daghang bahin nga problema, ug dayon sulbaron kini sulod sa gambalay sa mga regulasyon nga gipatuman sa usa ka sistema. Jackson Gabbard, usa ka kanhi empleyado sa Facebook, misulat 50-minutos nga video bahin sa mga interbyu sa disenyo sa sistema, diin iyang gipaambit ang iyang kaugalingong kasinatian sa pag-screen sa gatusan ka mga aplikante. Samtang ang video nagpunting pag-ayo sa dako nga disenyo sa sistema ug ang mga sumbanan sa kalampusan nga importante sa pagpangita sa usa ka kandidato alang sa ingon nga posisyon, kini magsilbi gihapon nga usa ka komprehensibo nga kapanguhaan sa unsa nga mga butang ang labing importante sa pagdesinyo sa mga sistema. Gisugyot ko usab summary kini nga video.

Pagtukod og kahibalo bahin sa pagtipig ug pagkuha sa datos

Kasagaran, ang imong desisyon bahin sa kung giunsa nimo pagtipig ug pagbawi ang imong data sa taas nga termino adunay kritikal nga epekto sa pasundayag sa sistema. Busa, kinahanglan nimo nga masabtan una ang gipaabut nga pagsulat ug pagbasa nga mga kinaiya sa imong sistema. Unya kinahanglan nimo nga makahimo sa pagtimbang-timbang niini nga mga timailhan ug paghimo og mga pagpili base sa mga pagtasa nga gihimo. Bisan pa, mahimo nimo nga epektibo nga masagubang kini nga trabaho kung nasabtan nimo ang naglungtad nga mga sumbanan sa pagtipig sa datos. Sa prinsipyo, kini nagpasabot sa lig-on nga kahibalo nga may kalabutan sa pagpili sa database.

Ang mga database mahimong mahunahuna nga mga istruktura sa datos nga labi ka mabag-o ug lig-on. Busa, ang kahibalo sa mga istruktura sa datos kinahanglan nga mapuslanon kaayo kanimo sa pagpili sa usa ka partikular nga database. Pananglitan, Redis usa ka server sa istruktura sa datos nga nagsuporta sa lainlaing mga lahi sa mga kantidad. Gitugotan ka niini nga magtrabaho kauban ang mga istruktura sa datos sama sa mga lista ug set, ug pagbasa sa datos gamit ang ilado nga mga algorithm, pananglitan, LRU, pag-organisar sa ingon nga trabaho sa usa ka lig-on ug dali nga magamit nga istilo.

Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan

Snapshot Samuel Zeller gikan sa Unsplash

Sa higayon nga aduna ka nay igong pagsabot sa lain-laing mga sumbanan sa pagtipig sa datos, ipadayon ang pagtuon sa pagkamakanunayon ug pagkaanaa sa datos. Una sa tanan, kinahanglan nimong masabtan CAP theorem sa labing menos sa kinatibuk-ang termino, ug unya polish kini nga kahibalo pinaagi sa pagkuha sa usa ka suod nga pagtan-aw sa natukod nga mga sumbanan pagkamakanunayon ΠΈ accessibility. Niining paagiha, mapalambo nimo ang pagsabut sa natad ug masabtan nga ang pagbasa ug pagsulat sa datos sa tinuud duha nga magkalainlain nga mga problema, ang matag usa adunay kaugalingon nga talagsaon nga mga hagit. Gamit ang pipila ka mga sumbanan sa pagkamakanunayon ug pagkaanaa, mahimo nimong madugangan ang performance sa sistema samtang gisiguro ang hapsay nga pagdagayday sa datos sa imong mga aplikasyon.

Sa katapusan, pagtapos sa panag-istoryahanay bahin sa mga isyu sa pagtipig sa datos, kinahanglan usab naton hisgutan ang caching. Kinahanglan ba kini nga dungan nga modagan sa kliyente ug server? Unsa nga datos ang naa sa imong cache? Ug ngano? Giunsa nimo pag-organisar ang pagka-invalidation sa cache? Buhaton ba kini kanunay, sa pipila ka mga lat-ang? Kung oo, unsa ka sagad? Girekomendar nako ang pagsugod sa pagtuon niini nga mga hilisgutan sunod nga seksyon ang nahisgutan nga sistema sa disenyo nga primer.

Mga Sumbanan sa Komunikasyon

Ang mga sistema naglangkob sa lainlaing mga sangkap; kini mahimong lahi nga mga proseso nga nagdagan sulod sa parehas nga pisikal nga node, o lainlaing mga makina nga nagdagan sa lainlaing mga bahin sa imong network. Ang pipila niini nga mga kapanguhaan sulod sa imong network mahimong pribado, apan ang uban kinahanglan nga publiko ug bukas sa mga konsumedor nga nag-access niini gikan sa gawas.

Kinahanglan nga masiguro ang komunikasyon sa kini nga mga kapanguhaan sa usag usa, ingon man ang pagbinayloay sa kasayuran tali sa tibuuk nga sistema ug sa gawas nga kalibutan. Sa konteksto sa disenyo sa mga sistema, dinhi na usab kita nag-atubang sa usa ka hugpong sa bag-o ug talagsaon nga mga hagit. Atong tan-awon kon sa unsang paagi sila mahimong mapuslanon asynchronous nga buluhaton dagan, ug unsa pAnaa ang lainlaing mga sumbanan sa komunikasyon.

Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan

Snapshot Tony Stoddard gikan sa Unsplash

Kung nag-organisar sa komunikasyon sa gawas nga kalibutan, kini kanunay nga hinungdanon luwas, ang probisyon niini kinahanglan usab nga seryosohon ug aktibo nga ipadayon.

Pag-apod-apod sa koneksyon

Dili ko sigurado nga ang pagbutang niini nga hilisgutan sa usa ka lahi nga seksyon ingon og makatarunganon sa tanan. Bisan pa, akong ipresentar kini nga konsepto sa detalye dinhi, ug ako nagtuo nga ang materyal sa kini nga seksyon labing tukma nga gihulagway sa termino nga "pag-apod-apod sa koneksyon".

Ang mga sistema naporma pinaagi sa husto nga pagkonektar sa daghang mga sangkap, ug ang ilang komunikasyon sa usag usa kanunay nga giorganisar pinasukad sa natukod nga mga protocol, pananglitan, TCP ug UDP. Bisan pa, kini nga mga protocol sa ingon kanunay dili igo aron matubag ang tanan nga mga panginahanglanon sa modernong mga sistema, nga kanunay nga gipadagan ubos sa taas nga karga ug nagsalig usab sa mga panginahanglanon sa tiggamit. Kanunay nga gikinahanglan ang pagpangita og mga paagi sa pag-apod-apod sa mga koneksyon aron masagubang ang ingon ka taas nga mga karga sa sistema.

Kini nga pag-apod-apod gibase sa ilado sistema sa ngalan sa domain (DNS). Ang ingon nga sistema nagtugot sa pagbag-o sa ngalan sa domain sama sa gibug-aton nga round robin ug mga pamaagi nga gibase sa latency aron makatabang sa pag-apod-apod sa load.

Pagbalanse sa load importante kaayo, ug halos tanang dagkong sistema sa Internet nga atong giatubang karon nahimutang luyo sa usa o daghan pang mga load balancer. Ang mga load balancer makatabang sa pag-apod-apod sa mga hangyo sa kliyente sa daghang magamit nga mga higayon. Ang mga load balancer moabut sa hardware ug software, bisan pa, sa praktis, mas kanunay kinahanglan nimo nga atubangon ang mga software, pananglitan HAProxy ΠΈ ELB. Balikbalik nga mga proxy sa konsepto usab kaayo susama sa load balancers, bisan tuod adunay usa ka range tali sa una ug ikaduha lahi nga mga kalainan. Kini nga mga kalainan kinahanglan nga tagdon sa diha nga ang pagdesinyo sa usa ka sistema base sa imong mga panginahanglan.

Ikaw kinahanglan usab nga mahibalo mahitungod sa mga network sa paghatud sa sulud (CDN). Ang CDN usa ka global nga gipang-apod-apod nga network sa mga proxy server nga naghatud sa kasayuran gikan sa mga node nga nahimutang sa heyograpiya nga mas duol sa usa ka piho nga tiggamit. Ang mga CDN mas maayo nga gamiton kung nagtrabaho ka sa mga static nga file nga gisulat sa JavaScript, CSS ug HTML. Dugang pa, ang mga serbisyo sa panganod nga naghatag mga tagdumala sa trapiko kasagaran karon, pananglitan, Tagdumala sa Trapiko sa Azure, naghatag kanimo sa tibuok kalibutan nga pag-apod-apod ug pagkunhod sa latency kung nagtrabaho uban ang dinamikong sulod. Bisan pa, ang ingon nga mga serbisyo kasagarang mapuslanon sa mga kaso diin kinahanglan nimo nga magtrabaho sa mga serbisyo sa web nga walay estado.

Maghisgot kita bahin sa lohika sa negosyo. Pag-istruktura sa lohika sa negosyo, mga dagan sa buluhaton ug mga sangkap

Busa, nakahimo kami sa paghisgot sa lainlaing mga aspeto sa imprastraktura sa sistema. Lagmit, ang tiggamit wala gani maghunahuna mahitungod niining tanan nga mga elemento sa imong sistema ug, sa prangka, wala'y pagtagad niini. Interesado ang tiggamit kung unsa ang gusto nga makig-uban sa imong sistema, kung unsa ang makab-ot pinaagi sa pagbuhat niini, ug kung giunsa usab gipatuman sa sistema ang mga mando sa gumagamit, kung unsa ug giunsa kini gihimo sa datos sa gumagamit.

Ingon sa gisugyot sa ulohan niini nga artikulo, maghisgot ako bahin sa arkitektura sa software ug disenyo sa sistema. Tungod niini, wala ako nagplano nga tabonan ang mga pattern sa disenyo sa software nga naghulagway kung giunsa paghimo ang mga sangkap sa software. Bisan pa, kung labi nakong gihunahuna kini, labi nga para nako ang linya tali sa mga pattern sa disenyo sa software ug mga pattern sa arkitektura hanap kaayo, ug ang duha nga mga konsepto suod nga may kalabutan. Atong tagdon ang pananglitan pagparehistro sa panghitabo (pagkuha sa panghitabo). Kung imong gisagop kini nga sumbanan sa arkitektura, kini makaapekto sa halos tanan nga aspeto sa imong sistema: dugay nga pagtipig sa datos, ang lebel sa pagkamakanunayon nga gisagop sa imong sistema, ang porma sa mga sangkap niini, ug uban pa. Busa, nakahukom ko sa paghisgot sa pipila ka mga sumbanan sa arkitektura nga direktang may kalabutan sa lohika sa negosyo. Bisan kung kini nga artikulo kinahanglan nga limitahan ang kaugalingon sa usa ka yano nga lista, gidasig ko ikaw nga pamilyar niini ug hunahunaa ang mga ideya nga nalangkit sa kini nga mga sumbanan. Ania ka:

Kolaborasyon nga mga pamaagi

Lagmit dili tingali nga makit-an nimo ang imong kaugalingon sa usa ka proyekto ingon nga partisipante nga bugtong responsable sa proseso sa pagdesinyo sa sistema. Sa kasukwahi, lagmit kinahanglan nimo nga makig-uban sa mga kauban nga nagtrabaho sa sulod ug gawas sa imong buluhaton. Sa kini nga kaso, kinahanglan nimo nga susihon ang gipili nga mga solusyon sa teknolohiya kauban ang mga kauban, mahibal-an ang mga panginahanglanon sa negosyo ug masabtan kung giunsa ang labing kaayo nga pagpahiangay sa mga buluhaton.

Arkitektura sa Software ug Disenyo sa Sistema: Ang Dakong Hulagway ug Giya sa Kapanguhaan

Snapshot Kaleidico gikan sa Unsplash

Ang una nga lakang mao ang pag-ugmad sa usa ka tukma ug gipaambit nga pagsabut kung unsa ang katuyoan sa negosyo nga imong gipaningkamutan nga makab-ot ug kung unsang mga paglihok nga bahin ang kinahanglan nimong atubangon. Mga teknik sa pagmodelo sa grupo, labi na mga panghitabo sa bagyo (event storming) makatabang nga mapadali kini nga proseso ug madugangan ang imong kahigayonan sa kalampusan. Kini nga buluhaton mahimo sa dili pa o pagkahuman sa imong outline mga utlanan sa imong mga serbisyo, ug dayon ipalawom kini samtang ang produkto mohamtong. Base sa lebel sa pagkamakanunayon nga makab-ot dinhi, mahimo ka usab magporma komon nga pinulongan alang sa limitado nga konteksto diin ikaw nagtrabaho. Kung kinahanglan nimo nga hisgutan ang bahin sa arkitektura sa imong sistema, mahimo nimong makita nga mapuslanon kini modelo C4, gisugyot Simon Brown, labi na kung kinahanglan nimo nga masabtan kung unsa ka daghan ang kinahanglan nimo nga hisgotan ang mga detalye sa problema, paghanduraw sa mga butang nga gusto nimong isulti.

Tingali adunay lain nga hamtong nga teknolohiya sa kini nga hilisgutan nga labi ka mapuslanon kaysa Disenyo nga Gimaneho sa Domain. Bisan pa, kami sa usa ka paagi mobalik sa pagsabut sa hilisgutan nga lugar, mao nga kahibalo ug kasinatian sa natad Disenyo nga Gipalihok sa Domain kinahanglan nga mapuslanon kanimo.

Source: www.habr.com

Idugang sa usa ka comment