![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Letšatši le lengwe le le lengwe, motsotso o mongwe le o mongwe nakong ya mošomo wa rena wa boentšenere, re kopana le mathata a mantši a go fapana a go raragana ga go fapafapana le maemo ao re swanetšego go tšea sephetho goba go se bušetša morago ka lebaka la go hloka datha. Nako le nako ge re aga ditirelo tše mpsha, re aga mananeokgoparara, goba gaešita le go bopa ditshepedišo tša tlhabollo, re kgoma lefase le legolo la ditlhohlo tše di fapafapanego.
Ke tlhohlo, gomme mohlomongwe le go sa kgonege, go lokeletša mathata ka moka. O tla kopana le tše dingwe tša ditaba tše fela ge o šoma ka niche ye e itšego. Ka lehlakoreng le lengwe, go na le tše ntši tšeo ka moka ga rena re swanetšego go di kwešiša gore re ka di rarolla bjang, ka ge di le bohlokwa kudu go aga ditshepedišo tša IT. Ka kgonego e phahameng, o tla kopana le bona ka diporojeke tse di tsohle.
Sehlogong se, ke tla abelana diphihlelo tša-ka ka tše dingwe tša mathata ao ke kopanego le ona ge ke be ke hlama mananeo a di-software.
Ge re lebelela ka gare ga Wikipedia, re tla hwetša tlhalošo ye e latelago
Ka tlhabollong ya disoftware tše di lebanego le dikarolo, matshwenyego a go selaganya ke dikarolo tša lenaneo leo le amago dimmojule tše mmalwa, ntle le kgonagalo ya go akaretšwa go efe goba efe ya tšona. Matshwenyego a gantši a ka se bola ka mo go hlwekilego go tšwa go tshepedišo ka moka ka bobedi tlhamong le phethagatšong, gomme a ka feletša ka e ka ba go phatlalatšwa (go pheta ga khoutu), go raragana (go ithekga mo go bohlokwa magareng ga ditshepedišo), goba ka bobedi.
E hlaloša kudu seo e lego sona, eupša ke nyaka go e katološa le go e nolofatša go se nene:
Matshwenyego a go selaganya ke kgopolo goba karolo ya tshepedišo/mokgatlo yeo e amago (goba e ‘segago go putla’) dikarolo tše dingwe tše ntši.
Mehlala ye mebotse ya dipelaelo tše bjalo ke mohlwaela wa tshepedišo, go rema dihlare, tšhireletšo, taolo ya kgwebišano, telemetry, tlhamo ya polokelo ya tshedimošo gomme go na le tše dingwe tše ntši. Re ya go hlaloša ka botlalo ka bontši bja tšona ka moragonyana sehlogong se.
Boemong bja khoutu, matshwenyego a go selaganya gantši a phethagatšwa ka go šomiša dithekniki tša go swana le Aspect-Oriented Programming (AOP) , moo matshwenyego a a modularized ka dikarolo tše di aroganego tšeo di ka dirišwago go ralala le tirišo. Se se boloka tlhaologanyo ya kgwebo e arotšwe go tšwa go dipelaelo tše, se dira gore khoutu e balege kudu le go hlokomelwa.
Go na le ditsela tše ntši tše di kgonegago tša kamoo go ka hlopha dikarolo ka go di arola ka dithoto tše di fapanego go swana le bogolo, bogolo, tšhomišo, bohlokwa, nepišo, le tše dingwe, eupša mo sengwalong se, ke ya go šomiša go hlopha ga sebaka se bonolo. Ka se, ke ra gore lehlakore le le itšego le lebišitšwe kae e ka ba mokgatlo ka moka, tshepedišo ye e itšego, goba elemente ye e itšego ya tshepedišo yeo.
Ka fao, ke ya go arola dikarolo ka Macro le Micro .
Ka Macro lehlakore ke ra haholo-holo nahanela re latela bakeng sa tsamaiso eohle joaloka kgethile tsamaiso mohaho le moralo lona (monolithic, microservices, tšebeletso-sekametseng mohaho), theknoloji mokgobo, mokgatlo sebopeho, joalo-joalo Macro dikarolo di amana haholo-holo le maano le boemo bo phahameng diphetho.
Mo nakong ye, lehlakore la Micro le kgauswi kudu le maemo a khoutu le tlhabollo. Go fa mohlala, ke tlhako efe yeo e šomišwago go dirišana le polokelo ya tshedimošo, sebopego sa porojeke ya difoldara le diklase, goba gaešita le dipaterone tša tlhamo ya selo ye e itšego.
Le ge e le gore go hlopha mo ga se mo go loketšego, go thuša go rulaganya kwešišo ya mathata ao a ka bago gona le bohlokwa le khuetšo ya ditharollo tšeo re di dirišago go ona.
Sehlogong se, nepo ya-ka e kgolo e tla ba dikarolo tša macro.
Ge ke be ke sa tšwa go thoma go ithuta ka go aga di-software, ke ile ka bala dihlogo tše dintši tše di kgahlišago mabapi le molao wa Conway le mafelelo a wona sebopegong sa mokgatlo. Kudu-kudu ye . Ka fao, molao wo o bolela seo
Mokgatlo ofe goba ofe wo o hlamago tshepedišo (yeo e hlalošitšwego ka bophara) o tla tšweletša tlhamo yeo sebopego sa yona e lego khopi ya sebopego sa kgokagano ya mokgatlo.
Ke be ke dutše ke dumela gore kgopolo ye ka nnete ke ya legohle kudu gomme e emela Molao wa Gauta.
Ke moka ke ile ka thoma go ithuta mokgwa wa Eric Evans wa Domain-Driven Design (DDD) bakeng sa ditshepedišo tša go dira mohlala. Eric Evans o gatelela bohlokwa bja go hlaola Bounded Context. Kgopolo ye e akaretša go arola mohlala wa domain wo o raraganego ka dikarolo tše nnyane, tšeo di laolegago kudu, ye nngwe le ye nngwe e na le sete ya yona ye e lekanyeditšwego ya tsebo. Mokgwa wo o thuša poledišanong ye e šomago gabotse ya sehlopha, ka ge o fokotša tlhokego ya tsebo ye e nabilego ya lefapha ka moka le go fokotša go fetola seemo, ka go realo o dira gore dipoledišano di šome gabotse. Go fetola seemo ke selo se sebe kudu le seo se jago methopo kudu seo se kilego sa ba gona. Gaešita le di- computer di katana le yona. Le ge e le gore ga go bonagale go tla fihlelela go se be gona ka mo go feletšego ga go fetoša seemo, ke nagana gore seo ke seo re swanetšego go se katanela.
Ge ke boela Molaong wa Conway, ke hweditše ditaba tše mmalwa ka wona.
Taba ya mathomo yeo ke kopanego le yona le Molao wa Conway, wo o šišinyago gore tlhamo ya tshepedišo e bonagatša sebopego sa mokgatlo, ke bokgoni bja go bopa Diteng tše di Raraganego le tše di feletšego tše di Lekanyeditšwego. Go raragana mo go tšwelela ge sebopego sa mokgatlo se sa sepelelane le mellwane ya domain, go lebiša go Diteng tše di Lekanyeditšwego tšeo di ithekgilego kudu ka tše dingwe ebile di imetšwe ka tshedimošo. E lebiša go fetoleng seemo kgafetšakgafetša bakeng sa sehlopha sa tlhabollo.
Taba e nngwe ke gore mareo a mokgatlo a dutlela maemong a khoutu. Ge dibopego tša mokgatlo di fetoga, e nyaka diphetogo tša codebase, e ja methopo ya bohlokwa.
Ka go realo, go latela Inverse Conway Maneuver go thuša go aga tshepedišo le mokgatlo tšeo di hlohleletšago mohlwaela wa disoftware wo o nyakegago. Le ge go le bjalo, go a lemogwa go bolela gore mokgwa wo o ka se šome gabotse kudu ka go meago le dibopego tšeo di šetšego di bopilwe ka ge diphetogo mo nakong ye di tšere nako ye telele, eupša o šoma ka mo go kgethegilego ka go dikhamphani tše di thomago ka ge di akgofela go tsebagatša diphetogo le ge e le dife.
Paterone ye goba “anti-pattern“ e otlela go aga tshepedišo yeo e se nago mohlwaela ofe goba ofe. Ga go na melao, ga go na mellwane le leano la kamoo go ka laolago go raragana mo go golago mo go sa phemegego. Go raragana ke lenaba le le boifišago kudu leetong la go aga ditshepedišo tša disoftware.
Go efoga go aga mohuta wo bjalo wa tshepedišo, re swanetše go latela melao ye e itšego le dithibelo.
Go na le ditlhalošo tše dintši kudu tša Software Architecture. Ke rata bontši bja tšona ka ge di akaretša dikarolo tše di fapanego tša yona. Lega go le bjalo, e le gore re kgone go nea mabaka ka tša meago, ka tlhago re swanetše go bopa tše dingwe tša tšona menaganong ya rena. Gomme go a lemogwa go bolela gore tlhalošo ye e ka tšwelela. Ka gona, bonyenyane ga bjale, ke na le tlhaloso e latelago bakeng sa-ka.
Software Architecture e mabapi le diphetho le dikgetho tšeo o di dirago letšatši le letšatši tšeo di amago tshepedišo ye e agilwego.
Go tšea diphetho tšeo o swanetšego go ba le tšona ka gare ga “mokotla” wa gago melao ya motheo le dipaterone tša go rarolla mathata ao a tšwelelago, gape go bohlokwa go bolela gore go kwešiša dinyakwa ke senotlelo sa go aga seo kgwebo e se hlokago. Le ge go le bjalo, ka dinako tše dingwe dinyakwa ga di bonagale goba gaešita le ga di hlalošwe, tabeng ye, go kaone go leta go hwetša tlhathollo ye ntši goba go ithekga ka maitemogelo a gago le go bota tlhaologanyo ya gago. Eupša go sa šetšwe seo, o ka se kgone go dira diphetho gabotse ge e ba o se na melao ya motheo le dipaterone tšeo o ka ithekgago ka tšona. Ke moo ke tlago tlhalošong ya Setaele sa Boagi bja Software.
Setaele sa Boagi bja Software ke sete ya melawana le dipaterone tšeo di hlaolago ka moo o ka agago softwere.
Go na le e ngata ya mekgwa ye e fapanego ya go aga yeo e lebišitšwego ka mahlakoreng a go fapafapana a meago ye e rulagantšwego, gomme go diriša tše ntši tša tšona ka nako e tee ke seemo se se tlwaelegilego.
Ka mohlala, tše bjalo ka:
Mohlwaela wa monolithic
Domain-kgannwa ke moralo
E theilwego godimo ga dikarolo
Ditirelo tše nnyane
Pipe le difiltara
E laolwago ke ditiragalo
Microkernel ya go swana le yona
E lebanego le tirelo
bjalobjalo...
Ke therešo gore di na le mehola le go se loke ga tšona, eupša selo sa bohlokwa kudu seo ke ithutilego sona ke gore meago e tšwelela ganyenyane-ganyenyane mola e ithekgile ka mathata a kgonthe. Go thoma ka mohlwaela wa monolithic ke kgetho ye kgolo ya go fokotša go raragana ga tshepedišo, go na le kgonagalo ye kgolo ya gore mohlwaela wo o tla swanela dinyakwa tša gago le ka morago ga go fihlelela sefala sa Product-market Fit (PMI) sa go aga setšweletšwa. Ka tekanyo, o ka nagana go ya go mokgwa wo o laolwago ke ditiragalo le microservices bakeng sa go fihlelela go tsenywa tirišong mo go ikemetšego, tikologo ya mokgobo wa theknolotši wo o sa swanego, le mohlwaela wo o sa kopantšwego kudu (le go se be pepeneneng mo nakong ye ka lebaka la tlhago ya mekgwa yeo e laolwago ke ditiragalo le ya pub-sub ge e ba tše di a amogelwa). Bonolo le bokgoni di kgauswi gomme di na le khuetšo ye kgolo go tše dingwe. Ka tlwaelo, ditlhamo tše di raraganego di ama lebelo la tlhabollo ya dikarolo tše mpsha, di thekga le go hlokomela tšeo di lego gona, le go hlohla tlhagelelo ya tlhago ya tshepedišo.
Lega go le bjalo, ditshepedišo tše di raraganego gantši di nyaka tlhamo e raraganego le e feletšego, e lego seo se sa phemegego.
Ka toka, ye ke taba ye e nabilego kudu kudu, gomme go na le dikgopolo tše ntši tše kgolo mabapi le kamoo go ka rulaganywago le go aga ditshepedišo tša tlhagelelo ya tlhago. Go ithekgile ka phihlelo ya-ka, ke šomile mokgwa wo o latelago:
Gape go bohlokwa go kwešiša dinomoro le dimetriki tša go swana le DAU (Badiriši ba Mafolofolo ba Letšatši le Letšatši), MAU (Badiriši ba Mafolofolo ba Kgwedi le Kgwedi), RPC (Kgopelo ka Motsotswana), le TPC (Kgwebišano ka Motsotswana) ka ge e ka go thuša go dira dikgetho ka gobane mohlwaela wa Badiriši ba mafolofolo ba 100 le badiriši ba mafolofolo ba dimilione tše 100 ba fapane.
Bjalo ka noutu ya mafelelo, nka re go aga go na le khuetšo ye kgolo katlegong ya setšweletšwa. Mohlwaela wo o sa hlangwago gabotse wa ditšweletšwa o a nyakega ka go lekalekantšha, yeo go nago le kgonagalo ye kgolo ya go lebiša go go palelwa ka ge bareki ba ka se eme ge o lekanya tshepedišo, ba tla kgetha mophadišani, ka fao re swanetše go ba pele ga go lekalekantšha mo go ka bago gona. Le ge ke dumela gore ka dinako tše dingwe e be e ka se be mokgwa wa go sekama, kgopolo ke go ba le tshepedišo yeo e ka lekanywago eupša e sego yeo e šetšego e lekanyeditšwe. Ka lehlakoreng le lengwe, go ba le tshepedišo ye e raraganego kudu le yeo e šetšego e lekanyeditšwe yeo e se nago bareki goba dithulaganyo tša go hwetša bontši bja bona go tla go bitša tšhelete kgwebong ya gago lefeela.
Go kgetha mokgobo wa theknolotši gape ke sephetho sa maemo a macro ka ge se tutuetša go thwala, dipono tša tlhagelelo ya tlhago ya tshepedišo, go kgona go oketšega, le tshepedišo ya tshepedišo.
Le ke lenaneo la dilo tša motheo tšeo di swanetšego go elwa hloko bakeng sa go kgetha mokgobo wa thekinolotši:
Go ba le mekgobo e mentši ya thekinolotši go ka kgoma bjang kgolo ya kgwebo?
Go ya ka pono e nngwe, go tsebagatša mokgobo o tee gape go ka oketša go thwala ga gago, eupša ka lehlakoreng le lengwe, go tliša ditshenyagalelo tše oketšegilego tša tlhokomelo ka ge o swanetše go thekga mekgobo ka bobedi. Ka gona, bjalo ka ge ke boletše pejana, go ya ka pono ya-ka, ke feela tlhokego e oketšegilego yeo e swanetšego go ba ngangišano ya go akaretša mekgobo e mentši ya thekinolotši.
Eupša ke’ng ka molao wa motheo wa go kgetha sedirišwa se sebotse kudu bakeng sa bothata bjo itšego?
Ka dinako tše dingwe ga o na kgetho e nngwe ge e se go tliša didirišwa tše difsa tša go rarolla bothata bjo itšego bjo bo theilwego godimo ga dilo tše di swanago tšeo di naganetšwego tšeo di boletšwego pejana, maemong a bjalo, go a kwagala go kgetha tharollo e kaone.
Go hlolwa ga ditshepedišo tšeo di se nago kopanyo e phagamego le thekinolotši e itšego e ka ba tlhohlo. Go sa dutše go le bjalo, go a thuša go katanela boemo bjoo tshepedišo yeo e sa kgokagantšwego ka thata le thekinolotši, gomme e ka se hwe ge e ba gosasa, tlhako e itšego goba sedirišwa se ka ba kotsing goba gaešita le go se sa šomišwa.
Se sengwe se bohlokwa seo se swanetšego go elwa hloko se amana le go ithekga ga disoftware tša mohlodi wo o bulegilego le tša mong. Software ya mong e go fa go fetofetoga mo gonyenyane le kgonagalo ya go rulaganywa. Go sa dutše go le bjalo, selo se kotsi kudu ke go notlelwa ga morekiši, moo o thomago go ithekga ka ditšweletšwa tša morekiši, ditheko, dipeelano le mmapa wa tsela. Se se ka ba kotsi ge e ba morekiši a fetoša tsela, a oketša ditheko goba a kgaotša setšweletšwa. Software ya mohlodi o bulegilego e fokotša kotsi ye, ka ge setheo se tee se sa e laole. Go fediša ntlha e tee ya go palelwa maemong ka moka ke senotlelo sa go aga ditshepedišo tše di ka botwago tša kgolo.
Ntlha e tee ya go palelwa (SPOF) e šupa karolo efe goba efe ya tshepedišo yeo, ge e palelwa, e tlago dira gore tshepedišo ka moka e kgaotše go šoma. Go fediša di-SPOF maemong ka moka go bohlokwa kudu go tshepedišo efe goba efe yeo e nyakago go hwetšagala ga godimo. Se sengwe le se sengwe, go akaretša tsebo, bašomi, dikarolo tša tshepedišo, baabi ba leru le megala ya inthanete, di ka palelwa.
Go na le dithekniki tše mmalwa tša motheo tšeo re ka di dirišago go fediša dintlha tše tee tša go palelwa:
Sehlogong se, re akareditše dikarolo tše mmalwa tše bohlokwa tša Macro le kamoo re ka lebeletšanago le go raragana ga tšona.
Re leboga go bala! Re tla bonana nakong e tlago!