Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide

Makadii vaunoshanda navo.

Nhasi tinokupa kuti utarise shandurudzo yechinyorwa chakaitwa naTugberk Ugurlu, uyo akatanga kudonongodza nevhoriyamu diki misimboti yekugadzira masisitimu esoftware echizvino-zvino. Hezvino izvo munyori anotaura pamusoro pake muchidimbu:

Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide
Sezvo zvisingabviri zvachose kuvhara mune chinyorwa che habro chinyorwa chakakura semagadzirirwo ezvivakwa + mapatani edhizaini kubva muna 2019, isu tinokurudzira kwete chete zvinyorwa zvaVaUruglu pachavo, asiwo akawanda malink aakaisa mairi nemutsa. Kana iwe uchichifarira, isu tichaburitsa yakanyatso hunyanzvi zvinyorwa nezve dhizaini yeakagoverwa masisitimu.

Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide

Snapshot Isaac Smith kubva kuUnsplash

Kana iwe usati wambosangana nematambudziko akadai sekugadzira software system kubva pakutanga, saka kana uchitanga basa rakadaro, dzimwe nguva hazvitombo nyatso kujeka kwekutanga. Ini ndinotenda kuti iwe unofanirwa kutanga wadhirowa miganhu kuitira kuti uve neruzivo rwakanyanya kana kushoma rwezvauchazogadzira, wobva wapeta maoko ako uye woshanda mukati meiyo miganhu. Sekutanga, iwe unogona kutora chigadzirwa kana sevhisi (chaizvo chimwe chaunonyatsoda) uye funga kuti ungachiite sei. Unogona kushamisika kuti chigadzirwa ichi chinoratidzika sei chakareruka, uye kuti chii chakaoma kunzwisisa. Usakanganwa: nyore - kazhinji yakaoma, uye ndizvozvo.

Ini ndinofunga zano rakanakisa randinogona kupa kune chero munhu anotanga kugadzira sisitimu ndeiyi: usaite chero fungidziro! Kubva pakutanga, iwe unofanirwa kutsanangura chokwadi chinozivikanwa nezve system iyi uye zvinotarisirwa zvine chekuita nazvo. Heino mimwe mibvunzo yakanaka yekubvunza kuti ikubatsire kutanga kugadzira yako:

  • Dambudziko ratiri kuedza kugadzirisa nderei?
  • Ndeipi nhamba yepamusoro yevashandisi inozodyidzana nehurongwa hwedu?
  • Ndeapi maitiro ekunyora nekuverenga data atichashandisa?
  • Ndedzipi nyaya dzinotarisirwa kukundikana, tichazvibata sei?
  • Ndezvipi zvinotarisirwa kuenderana nehurongwa uye kuwanikwa?
  • Iwe unofanirwa kufunga nezve chero zvidikanwi zvine chekuita nekusimbisa kwekunze uye mutemo kana uchishanda?
  • Ndedzipi mhando dze data dzakasimba dzatichachengeta?

Iyi ingori mibvunzo mishoma yanga ichibatsira kwandiri nezvikwata zvandakatora makore ese ebasa rehunyanzvi. Kana iwe uchiziva mhinduro dzemibvunzo iyi (uye chero mimwe inoenderana nemamiriro aunofanirwa kushanda), saka iwe unogona zvishoma nezvishoma kunyura mune tekinoroji yedambudziko.

Isa nhanho yekutanga

Ndinorevei ne "baseline" pano? Chaizvoizvo, munguva yedu, matambudziko mazhinji muindasitiri yesoftware "anogona" kugadziriswa uchishandisa nzira dziripo uye matekinoroji. Saizvozvo, nekufamba-famba munzvimbo iyi, unowana imwe musoro paunotarisana nezvinetso izvo mumwe munhu aifanira kugadzirisa pamberi pako. Usakanganwa kuti mapurogiramu akanyorwa kuti agadzirise zvinetso zvebhizimisi uye zvevashandisi, saka tinoedza kugadzirisa dambudziko racho nenzira yakanyatsojeka uye iri nyore (kubva pakuona kwemushandisi). Sei izvi zvakakosha kuyeuka? Zvichida mune yako coordination system unofarira kutsvaga mhinduro dzakasiyana dzematambudziko ese, nekuti iwe unofunga, "ndoita sei programmer ini kana ndikatevera mapatani kwese"? Saizvozvo, hunyanzvi pano kuita sarudzo dzekuti kupi uye zvekuita. Chokwadi, mumwe nomumwe wedu anofanira kutarisana nezvinetso zvakasiyana panguva nenguva, chimwe nechimwe chazvo chiri denho chaiyoiyo. Zvisinei, kana nhanho yedu yekutanga yakanyatsotsanangurwa, saka tinoziva kuti tingashandisa sei simba redu pa: kutsvaga sarudzo dzakagadzirirwa kugadzirisa dambudziko rakaiswa pamberi pedu, kana kuwedzera kuidzidza nekuwana kunzwisisa kwakadzama.

Ini ndinofunga ndakwanisa kukukurudzira kuti kana nyanzvi ichinzwisisa zvine chivimbo kuti chii chekuvaka chikamu chemamwe akanakisa software masisitimu, saka ruzivo urwu ruchave rwakakosha pakuziva hunyanzvi hwemuvaki uye kugadzira hwaro hwakasimba mundima iyi.

Zvakanaka, saka pekutangira? U Donna Martina Pane repository paGitHub inonzi system-design-primer, kubva kwaunogona kudzidza maitiro ekugadzira masisitimu makuru, pamwe nekugadzirira kubvunzurudza pamusoro penyaya iyi. Iyo repository ine chikamu chine mienzaniso architectures chaiwo, apo, kunyanya, inofungidzirwa kuti vanotarisana sei nekugadzirwa kwemaitiro avo mamwe makambani anozivikanwasemuenzaniso Twitter, Uber, nezvimwe.

Nekudaro, tisati taenderera kune ichi chinyorwa, ngatitarisei zvakanyanya kukosha kwezvinetso zvekuvaka zvatinosangana nazvo mukuita. Izvi zvakakosha nekuti iwe unofanirwa kutsanangura ZVINHU zvakawanda zvedambudziko rakasindimara uye rakawanda, uye wozorigadzirisa mukati mehurongwa hwemitemo inoshanda mune yakapihwa system. Jackson Gabbard, aimbova mushandi wepaFacebook, akanyora Vhidhiyo yemaminetsi makumi mashanu nezve masisitimu dhizaini kubvunzurudza, kwaakataura ruzivo rwake pachake rwekuongorora mazana evanyoreri. Kunyange iyo vhidhiyo inotarisisa zvakanyanya pane yakakura sisitimu dhizaini uye maitiro ebudiriro ayo akakosha kana uchitsvaga mukwikwidzi wechinzvimbo chakadaro, icharamba ichishanda sesosi yakazara pazvinhu zvinonyanya kukosha pakugadzira masisitimu. Ndinotiwo pfupiso vhidhiyo iyi.

Vaka ruzivo pamusoro pekuchengetedza uye kutora data

Kazhinji, sarudzo yako pamusoro pemachengetero aunoita uye kutora data rako pamusoro penguva refu ine chekuita kwakakomba pakuita kwehurongwa. Naizvozvo, iwe unofanirwa kutanga wanzwisisa zvinotarisirwa kunyora uye kuverenga maitiro eiyo system yako. Ipapo iwe unofanirwa kukwanisa kuongorora zviratidzo izvi uye kuita sarudzo zvichienderana nekuongorora kwakaitwa. Nekudaro, iwe unokwanisa kubata nebasa iri chete kana iwe uchinzwisisa aripo ekuchengetedza data maitiro. Muchidimbu, izvi zvinoreva ruzivo rwakasimba rwakabatana ne kusarudzwa kwedatabase.

Databases inogona kufungidzirwa se data zvimiro zvakanyanya scalable uye yakasimba. Naizvozvo, ruzivo rwezvimiro zve data runofanira kubatsira zvakanyanya kwauri pakusarudza imwe dhatabhesi. Semuyenzaniso, Redis is data structure server inotsigira marudzi akasiyana-siyana ehukoshi. Iyo inokutendera kuti ushande nezvimiro zve data senge rondedzero uye seti, uye kuverenga data uchishandisa inozivikanwa algorithms, semuenzaniso, LRU, kuronga basa rakadaro nenzira yakasimba uye inowanikwa zvikuru.

Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide

Snapshot Samuel Zeller kubva kuUnsplash

Paunenge uchinge wava nekunzwisisa kwakakwana kweakasiyana ekuchengetedza data mapatani, enda pakudzidza kuenderana kwedata uye kuwanikwa. Chokutanga pane zvose, unofanira kunzwisisa CAP theorem kanenge mune zvakajairika, wozokwenenzvera ruzivo urwu nekunyatsotarisisa maitiro akasimbiswa kuwirirana ΠΈ accessibility. Nenzira iyi, iwe unokudziridza kunzwisisa kwemunda uye kunzwisisa kuti kuverenga nekunyora data ndiwo matambudziko maviri akasiyana, rimwe nerimwe riine matambudziko aro akasiyana. Yakashongedzwa neashoma kuenderana uye kuwanikwa mapatani, unogona kuwedzera zvakanyanya mashandiro ehurongwa uku uchive nechokwadi chekuyerera kwe data kune ako maapplication.

Chekupedzisira, kupedzisa nhaurirano nezve nyaya dzekuchengetedza data, isu tinofanirawo kutaura caching. Inofanira kumhanya panguva imwe chete pane mutengi uye server? Ndeipi data ichave mune yako cache? Uye nei? Iwe unoronga sei kusagadziriswa kwecache? Ichaitwa nguva dzose, pane dzimwe nguva here? Kana hongu, kangani? Ndinokurudzira kutanga kudzidza nyaya idzi chikamu chinotevera iyo yambotaurwa system dhizaini yekutanga.

Kukurukurirana Maitiro

Masisitimu anoumbwa nezvikamu zvakasiyana; aya anogona kunge ari maitiro akasiyana anomhanya mukati meiyo imwechete yemuviri node, kana akasiyana michina inomhanya munzvimbo dzakasiyana dzetiweki yako. Zvimwe zvezviwanikwa izvi mukati metiweki yako zvinogona kunge zviri zvepachivande, asi zvimwe zvinofanirwa kuve pachena uye zvakavhurika kune vatengi vanozviwana kubva kunze.

Izvo zvinodikanwa kuve nechokwadi chekutaurirana kwezviwanikwa izvi kune mumwe nemumwe, pamwe nekutsinhana kweruzivo pakati pehurongwa hwese nenyika yekunze. Mumamiriro ezvinhu ekugadzirisa masisitimu, pano zvakare takatarisana nematambudziko matsva uye akasiyana. Ngationei kuti vangabatsira sei asynchronous basa rinoyerera, uye chii pMhando dzakasiyana dzekukurukurirana dziripo.

Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide

Snapshot Tony Stoddard kubva kuUnsplash

Pakuronga kukurukurirana nenyika yekunze, nguva dzose inokosha zvikuru kuchengeteka, gadziriro yacho inodawo kutorwa zvakakomba uye nokushingaira.

Kugovera kwekubatanidza

Handina chokwadi chekuti kuisa chinyorwa ichi muchikamu chakasiyana kuchaita sekwakanaka kune wese munhu. Zvakadaro, ini ndicharatidza iyi pfungwa zvakadzama pano, uye ndinotenda kuti izvo zviri muchikamu chino zvinonyatsotsanangurwa nezwi rekuti "kugovera kugovera".

Masisitimu anoumbwa nekubatanidza zvakanaka zvikamu zvakawanda, uye kutaurirana kwavo kune mumwe nemumwe kunowanzo kurongeka pahwaro hwemitemo yakasimbiswa, semuenzaniso, TCP uye UDP. Nekudaro, aya maprotocol akadaro kazhinji haana kukwana kuzadzisa zvese zvinodiwa zvemazuva ano masisitimu, ayo anowanzo shandiswa pasi pemutoro mukuru uye zvakare anoenderana zvakanyanya nezvinodiwa nevashandisi. Zvinowanzodikanwa kutsvaga nzira dzekugovera zvibatanidzo kuti utsungirire mitoro yakakura kudaro pane system.

Uku kugovera kunobva pane zvinonyatsozivikanwa domain name system (DNS). Sistimu yakadaro inobvumira shanduko yezita remazita seyakayerwa kutenderera robin uye latency-yakavakirwa nzira dzekubatsira kugovera mutoro.

Load balancing chakanyanya kukosha, uye dzinenge dzese hombe dzeInternet system dzatinobata nadzo nhasi dziri kuseri kweimwe kana anopfuura anoremedza zviremera. Mabalancers anobatsira kugovera zvikumbiro zvevatengi muzviitiko zvakawanda zviripo. Mitoro inoyera inouya mune zvese zviri zviviri hardware uye software, zvisinei, mukuita, kazhinji iwe unofanirwa kubata nesoftware, semuenzaniso. HAProxy ΠΈ ELB. Reverse proxies nepfungwa dzakanyanya kufanana nekutakura zviremera, kunyangwe paine huwandu pakati pekutanga neyechipiri misiyano yakasiyana. Misiyano iyi inofanirwa kuverengerwa paunenge uchigadzira hurongwa hunoenderana nezvaunoda.

Iwe unofanirwawo kuziva nezvazvo content delivery network (CDN). A CDN itiweki yakagoverwa pasi rose yemaseva eproxy iyo inopa ruzivo kubva kumanodhi anowanikwa padyo nemushandisi chaiwo. MaCDN anodiwa kushandisa kana ukashanda nemafaira akanyorwa muJavaScript, CSS uye HTML. Uye zvakare, masevhisi emafu anopa maneja etraffic akajairika nhasi, semuenzaniso, Azure Traffic Manager, inokupa kugovera kwepasirese uye kuderedzwa latency paunenge uchishanda neane simba zvemukati. Nekudaro, masevhisi akadaro anowanzo batsira mumamiriro ezvinhu apo iwe unofanirwa kushanda neasingaverengeki webhu masevhisi.

Ngatitaure nezve bhizinesi logic. Kugadzira bhizinesi logic, basa rinoyerera uye zvikamu

Saka, takakwanisa kukurukura zvakasiyana-siyana zvezvivakwa zvehurongwa. Zvingangodaro, mushandisi haatombofungi nezvese zvinhu izvi zvehurongwa hwako uye, kutaura chokwadi, haana basa nazvo zvachose. Mushandisi anofarira kuti zvakaita sei kupindirana nehurongwa hwako, chii chinogona kuwanikwa nekuita izvi, uye zvakare kuti iyo system inoita sei mirairo yemushandisi, chii uye sei ne data remushandisi.

Sezvinoratidzwa nemusoro wechinyorwa ichi, ini ndanga ndichizotaura nezve software yekuvaka uye system dhizaini. Nekudaro, ini handina kuronga kuvhara magadzirirwo esoftware anotsanangura magadzirirwo esoftware. Zvisinei, pandinonyanya kufunga nezvazvo, ndipo pazvinoita sekuti mutsara uri pakati pemagadzirirwo esoftware uye mapatani ekuvaka wakasviba zvakanyanya, uye pfungwa mbiri idzi dzine hukama. Ngatitorei semuenzaniso kunyoresa chiitiko (chiitiko chekutsvaga). Kana iwe uchinge watora iyi yekuvaka pateni, inokanganisa anenge ese maficha ehurongwa hwako: kuchengetwa kwenguva refu kwedata, nhanho yekuenderana inogamuchirwa muhurongwa hwako, chimiro chezvikamu zviri mairi, nezvimwe, nezvimwe. Naizvozvo, ndakasarudza kutaura mamwe mapatani ekuvaka ane hukama zvakananga nebhizinesi logic. Kunyangwe chinyorwa ichi chichafanira kuzviganhurira kune runyoro rwakareruka, ndinokukurudzira kuti ujairane naro uye funga nezve pfungwa dzine chekuita nemaitiro aya. Uri pano:

Maitiro ekubatana

Izvo hazvigoneke zvakanyanya kuti iwe uzviwane iwe uri pane purojekiti semutori wechikamu anove ane mutoro weiyo system dhizaini maitiro. Zvakasiyana, iwe unozonyanya kutaurirana nevaunoshanda navo vanoshanda mukati nekunze kwebasa rako. Mune ino kesi, ungangoda kuongorora yakasarudzwa tekinoroji mhinduro nevaunoshanda navo, tsvaga bhizinesi zvinodiwa uye unzwisise nzira yekufananidza mabasa.

Software Architecture uye Systems Dhizaini: Iyo Yakakura Mufananidzo uye Resource Guide

Snapshot Kaleidico kubva kuUnsplash

Danho rekutanga nderekukudziridza kunzwisisa kwakaringana uye kwakagovaniswa kwechinangwa chebhizinesi chauri kuedza kuzadzisa uye kuti ndezvipi zvikamu zvinofamba zvauchafanirwa kubata nazvo. Maitiro ekuenzanisira eboka, kunyanya zviitiko zvedutu (chiitiko dutu) batsira kukurumidza kukurumidza kuita iyi uye kuwedzera mikana yako yekubudirira. Iri basa rinogona kuitwa pamberi kana mushure mekutaura miganhu yemasevhisi ako, wobva wadzamisa sezvo chigadzirwa chinokura. Zvichienderana nehuwandu hwekuenderana huchawanikwa pano, iwe unogona zvakare kugadzira mutauro wakajairika nokuda kwemamiriro mashoma aunoshanda. Paunenge uchida kutaura nezve dhizaini yesystem yako, unogona kuzviwana zvichibatsira muenzaniso C4, zvakarongwa Simon Brown, kunyanya kana iwe uchifanira kunzwisisa kuti yakawanda sei yauchafanira kupinda muudzame hwedambudziko, uchifungidzira zvinhu zvaunoda kutaura.

Panogona kunge paine imwe tekinoroji yakakura pane iyi nyaya isingaite zvishoma pane Domain Driven Dhizaini. Zvisinei, isu neimwe nzira tinodzokera pakunzwisisa nzvimbo yehurukuro, saka ruzivo uye ruzivo mumunda Domain-Driven Design inofanira kukubatsira.

Source: www.habr.com

Voeg