paint-brush
Maitiro Ekuita Nekuomarara Kana Kugadzira Software Systemsby@fairday
64,370 kuverenga
64,370 kuverenga

Maitiro Ekuita Nekuomarara Kana Kugadzira Software Systems

by Aleksei23m2024/02/05
Read on Terminal Reader
Read this story w/o Javascript

Kurebesa; Kuverenga

Kuoma musoro muvengi! Ngatidzidzei kubata nazvo!
featured image - Maitiro Ekuita Nekuomarara Kana Kugadzira Software Systems
Aleksei HackerNoon profile picture

Zviri pamusoro pei?

Mazuva ese, nguva yega yega panguva yebasa redu reinjiniya, tinosangana nematambudziko mazhinji akasiyana ezvakasiyana uye mamiriro atinofanirwa kuita sarudzo kana kuimisa nekuda kwekushaya data. Pese patinovaka masevhisi matsva, kuvaka zvivakwa, kana kunyange kugadzira maitiro ebudiriro, tinobata nyika yakakura yezvinetso zvakasiyana.


Zvakaoma, uye zvichida kunyange hazvibviri, kunyora matambudziko ose. Iwe uchasangana nezvimwe zveizvi nyaya chete kana iwe ukashanda mune chaiyo niche. Kune rimwe divi, kune akawanda atinofanirwa kunzwisisa tese magadzirisiro, sezvo akakosha pakuvaka IT masisitimu. Neine mukana wepamusoro, iwe uchasangana navo mumapurojekiti ese.


Muchinyorwa chino, ini ndichagovera zvakaitika kwandiri nemamwe matambudziko andakasangana nawo ndichigadzira mapurogiramu esoftware.

Chii chinonzi Cross-Cutting Concern?

Kana tikatarisa muWikipedia, tinowana tsanangudzo inotevera


Muchikamu-chakatarisana nekuvandudza software, kuyambuka-kunetsekana kuri maficha echirongwa anobata akati wandei mamodule, pasina mukana wekuvharirwa mune chero iwo. Izvi zvinonetsa kazhinji hazvigone kuoreswa zvakachena kubva kune yese sisitimu mune zvese dhizaini nekuita, uye zvinogona kuguma nekuparadzira (kudzokorodza kwekodhi), kusanganisa (kwakakosha kutsamira pakati pehurongwa), kana zvese zviri zviviri.


Inotsanangura zvakanyanya kuti chii, asi ini ndinoda kuwedzera nekurerutsa zvishoma:

Muchinjikwa-chekunetseka ipfungwa kana chikamu cheiyo system/sangano inobata (kana 'kucheka mhiri') zvimwe zvikamu zvakawanda.


Mienzaniso yakanakisa yezvinetswa zvakadaro ndeyekuvaka system, kutema matanda, chengetedzo, transaction manejimendi, telemetry, dhizaini dhizaini uye kune zvimwe zvakawanda. Tichazotaura pamusoro pevazhinji vavo gare gare muchinyorwa chino.


Padanho rekodhi, zvinonetsa zvekucheka-cheka zvinowanzoitwa uchishandisa matekiniki akaita seAspect -Oriented Programming (AOP) , uko zvinonetsa izvi zvinogadziriswa kuita zvikamu zvakasiyana zvinogona kushandiswa mukati mekushandisa. Izvi zvinoita kuti bhizinesi rirambe rakaparadzaniswa kubva kune izvi zvinonetsa, zvichiita kuti kodhi iverengeke uye inochengeteka.

Aspects Classification

Kune dzakawanda nzira dzinogoneka dzekuisa zvimiro nekuzvipatsanura neakasiyana zvivakwa senge chiyero, saizi, mashandiro, kukosha, chinangwa, uye zvimwe, asi mune ino chinyorwa, ini ndichashandisa yakapusa scope classification. Neizvi, ndinoreva painongedzerwa chikamu ichi, ingave iyo sangano rese, imwe hurongwa, kana chimwe chinhu cheiyo system.


Saka, ndiri kuzopatsanura zvinhu kuita Macro uye Micro .


NeMacro aspect ndinoreva kunyanya kufunga kwatinoteedzerera sisitimu yese seyakasarudzwa masisitimu edhizaini uye dhizaini yayo (monolithic, microservices, sevhisi-yakatarisana architecture), tekinoroji stack, sangano rehurongwa, nezvimwe. Macro maficha ane hukama zvakanyanya nehurongwa uye hwepamusoro-nhanho. zvisarudzo.


Zvichakadaro, iyo Micro chikamu chiri padyo zvakanyanya neiyo kodhi nhanho uye kusimudzira. Semuyenzaniso, ndeupi hurongwa hunoshandiswa kudyidzana nedhatabhesi, chimiro chepurojekiti yemaforodha nemakirasi, kana kunyange chaiwo magadzirirwo echinhu.


Kunyange zvazvo kupatsanurwa uku kusina kunaka, kunobatsira kugadzira kunzwisisa kwezvingangoitika matambudziko uye kukosha uye kukanganisa kwemhinduro dzatinoshandisa kwavari.


Muchinyorwa ichi, yangu yekutanga kutarisa ichave pane macro maficha.

Macro Aspects

Chimiro chesangano

Pandakangotanga kudzidza nezve magadzirirwo esoftware, ndakaverenga zvinyorwa zvakawanda zvinonakidza nezve mutemo waConway uye nemhedzisiro yawo pakuumbwa kwesangano. Kunyanya iyi . Saka, mutemo uyu unoti


Chero sangano rinogadzira masisitimu (inotsanangurwa zvakafara) rinoburitsa dhizaini ine chimiro chiri kopi yehurongwa hwekutaurirana hwesangano.


Ndagara ndichitenda kuti pfungwa iyi ndeyepasi rose uye inomiririra Mutemo Wekuda.


Ipapo ndakatanga kudzidza Eric Evans's Domain-Driven Dhizaini (DDD) maitiro ekuenzanisira masisitimu. Eric Evans anosimbisa kukosha kwekuzivikanwa kwe Bounded Context. Pfungwa iyi inosanganisira kupatsanura chimiro chedomeine chakaoma kuita zvikamu zvidiki, zvinodzoreka, chimwe nechimwe chine ruzivo rwayo rwakaganhurirwa. Iyi nzira inobatsira mukukurukurirana kwechikwata kunobudirira, sezvo ichideredza kudiwa kweruzivo rwakakura rwedunhu rose uye inoderedza shanduko yemamiriro ezvinhu, nokudaro kuita kuti nhaurirano dzinyanye kushanda. Context switching ndiyo yakaipisisa uye inonyanya kushandisa zviwanikwa. Kunyange makombiyuta ari kunetseka nazvo. Kunyangwe zvisingaite kuwana kusavapo kwakakwana kwekuchinja kwemamiriro ezvinhu, ndinofunga kuti ndizvo zvatinofanira kuedza.


Fantasy about keeping in mind a lot of bounded contexts

Kudzokera kuMutemo waConway, ndawana nyaya dzinoverengeka nawo.


Nyaya yekutanga yandakasangana nayo neConway's Law, iyo inoratidza kuti dhizaini yedhizaini inoratidzira chimiro chesangano, ndiyo mukana wekugadzira yakaoma uye yakazara Bounded Contexts. Kuoma uku kunomuka kana chimiro chesangano chisina kurongeka nemiganhu yedomeini, zvinotungamira kune Yakasungwa Contexts inodyidzana zvakanyanya uye yakatakura ruzivo. Iyo inotungamira kune inowanzoitika-kuchinja kwechikwata chekusimudzira.


Imwe nyaya ndeyekuti izwi resangano rinodonha kusvika padanho rekodhi. Kana zvimiro zvesangano zvachinja, zvinoda kugadziriswa kwecodebase, zvichidya zviwanikwa zvakakosha.


Saka, kutevera Inverse Conway Maneuver kunobatsira kuvaka sisitimu uye sangano rinokurudzira inodiwa software yekuvaka. Nekudaro, zvakakosha kutaura kuti nzira iyi haizoshanda zvakanaka mukuvaka-kwakatoumbwa uye zvimiro sezvo shanduko padanho rino dzarebesa, asi iri kuita zvakanyanya mukutanga sezvo ivo vanokurumidza kuunza chero shanduko.

Bhora Hombe reMadhaka

Iyi pateni kana "anti-pattern" inotyaira kuvaka sisitimu isina chero dhizaini. Iko hakuna mitemo, hapana miganhu, uye hapana zano rekudzora kusingadzivisike kukura kuoma. Complexity ndiye muvengi anotyisa kwazvo murwendo rwekuvaka software masisitimu.


Entertaining illustration made by ChatGPT

Kuti tidzivise kugadzira rudzi rwakadaro rwegadziriro, tinofanira kutevera mitemo chaiyo uye zvipingaidzo.

System architecture

Kune zviuru zvinotsanangurwa zveSoftware Architecture. Ini ndinoda vazhinji vavo nekuti vanobata akasiyana maficha acho. Nekudaro, kuti tikwanise kufunga nezvezvivakwa, isu tinofanirwa kuumba mamwe acho mupfungwa dzedu. Uye zvakakosha kutaura kuti tsananguro iyi inogona kushanduka. Saka, pari zvino, ndine tsananguro inotevera pachangu.


Software Architecture ndeye sarudzo uye sarudzo dzaunoita mazuva ese dzinokanganisa iyo yakavakirwa sisitimu.


Kuita sarudzo dzaunofanirwa kuve nazvo mu "bhegi" misimboti uye mapatani ekugadzirisa matambudziko arikumuka, zvakakoshawo kutaura kuti kunzwisisa zvinodikanwa kwakakosha pakuvaka izvo bhizinesi rinoda. Nekudaro, dzimwe nguva zvinodiwa hazvisi pachena kana kuti hazvina kutsanangurwa, mune iyi nyaya, zviri nani kumirira kuti uwane kujekeswa kana kuvimba neruzivo rwako uye kuvimba neruzivo rwako. Asi zvakadaro, haugone kuita sarudzo nemazvo kana iwe usina misimboti uye mapatani ekuvimba nawo. Ndipo pandiri kuuya kune tsananguro yeSoftware Architecture Style.


Software Architecture Style seti yemisimboti uye mapatani anoratidza maitiro ekuvaka software.


Kune akawanda akasiyana masitaera ekuvaka akatarisana nemativi akasiyana ezvakarongwa zvivakwa, uye kushandisa akawanda acho kamwechete inguva yakajairwa.


Somuenzaniso, zvakadai se:

  1. Monolithic architecture

  2. Domain-driven design

  3. Component-based

  4. Microservices

  5. Pombi nemasefa

  6. Chiitiko-inofambiswa

  7. Microkernel

  8. Sevhisi-yakatarisana


zvichingoenda zvakadaro…


Ehe, ivo vane zvakanakira nekuipira kwavo, asi chinonyanya kukosha chandakadzidza ndechekuti zvivakwa zvinoshanduka zvishoma nezvishoma zvichienderana nematambudziko chaiwo. Kutanga neiyo monolithic architecture isarudzo huru yekudzikisa kuoma kwekushanda, ingangoita iyi dhizaini inokodzera zvaunoda kunyangwe mushure mekusvika Chigadzirwa-musika Fit (PMI) nhanho yekuvaka chigadzirwa. Pachiyero, unogona kufunga kuenda kunzira inofambiswa nechiitiko uye mamicroservices ekuwana yakazvimiririra kutumirwa, heterogeneous tech stack nharaunda, uye kushoma kwakabatana dhizaini (uye kushoma kujeka panguva ino nekuda kwechimiro chechiitiko chinotyairwa uye pub-sub nzira kana izvi zvinogamuchirwa). Kureruka uye kushanda zvakanaka zviri pedyo uye zvine simba guru kune mumwe nemumwe. Kazhinji, zvivakwa zvakaomarara zvinokanganisa kukurumidza kwekusimudzira kwezvinhu zvitsva, kutsigira nekuchengetedza zviripo, uye kupokana nekushanduka kwechisikigo kwehurongwa.


Zvisinei, maitiro akaoma anowanzoda maitiro akaoma uye akazara, izvo zvisingadzivisiki.


Zvakaringana, iyi inyaya yakafara kwazvo, uye kune akawanda mazano makuru ezve magadzirirwo nekuvaka masisitimu ekushanduka kwechisikigo. Zvichienderana neruzivo rwangu, ndakagadzira nzira inotevera:

  1. Inenge nguva dzose inotanga ne monolithic architecture style sezvo inobvisa akawanda ematambudziko anomuka nekuda kwechimiro cheakagoverwa masisitimu. Izvo zvakare zvine musoro kutevedzera modular monolith kutarisa pakuvaka zvikamu zvine miganhu yakajeka. Kushandisa chikamu-chakavakirwa nzira kunogona kuvabatsira kutaurirana nekushandisa zviitiko, asi kuve nemafoni akananga (aka RPC) kunorerutsa zvinhu pakutanga. Nekudaro, zvakakosha kuteedzera kutsamira pakati pezvikamu sezvo kana chikamu A chichiziva zvakawanda nezvechikamu B, pamwe, zvine musoro kuzvibatanidza kuita chimwe.
  2. Paunosvika padhuze nemamiriro ezvinhu apo iwe unofanirwa kuyera kukura kwako uye sisitimu, unogona kufunga kutevedzera iyo Stangler pateni kuti ubvise zvishoma nezvishoma zvikamu zvinoda kuiswa zvakazvimiririra kana kuyera nezvinodiwa chaizvo.
  3. Zvino, kana iwe uine chiono chakajeka cheramangwana, rinova rombo rakanaka, unogona kusarudza pane yaunoda kuvaka. Panguva ino, iwe unogona kusarudza kuenda kune microservices architecture nekushandisawo Orchestration uye Choreography nzira, ichibatanidza CQRS patani yeyakazvimirira chiyero kunyora uye kuverenga mashandiro, kana kutofunga kunamatira monolithic dhizaini kana inokodzera zvaunoda.


Izvo zvakakoshawo kuti unzwisise manhamba uye metrics seDAU (Daily Active Users), MAU (Mwedzi Anoshanda Vashandisi), RPC (Chikumbiro Per Sechipiri), uye TPC (Transaction Per Second) nekuti inogona kukubatsira iwe kuita sarudzo nekuti zvivakwa zve 100 vashandisi vanoshanda uye 100 miriyoni vanoshanda vashandisi vakasiyana.


Sechinyorwa chekupedzisira, ndingati zvivakwa zvine chekuita nekubudirira kwechigadzirwa. Zvisizvo zvakagadzirirwa zvivakwa zvezvigadzirwa zvinodikanwa mukuyera, izvo zvingangotungamira mukukundikana sezvo vatengi vasingamirire iwe uchiyera sisitimu, ivo vanosarudza anokwikwidza, saka isu tinofanirwa kunge tiri pamberi pekukwira. Kunyangwe ini ndichibvuma kuti dzimwe nguva haigone kuve yakaonda nzira, iyo pfungwa ndeyekuve ne scalable asi isati yatoyerwa system. Nekune rimwe divi, kuve neyakaomesesa uye yatove yakasimudzwa sisitimu isina vatengi kana zvirongwa zvekuwana vazhinji vavo zvinokubhadhara mari pabhizinesi rako pasina.

Technology stack kusarudzwa

Kusarudza tekinoroji stack zvakare iri macro-level sarudzo sezvo ichipesvedzera kuhaya, sisitimu yechisikigo shanduko maonero, scalability, uye system performance.


Iyi ndiyo rondedzero yezvakakosha zvekufunga pakusarudza tekinoroji stack:

  • Zvido zveprojekiti uye kuoma. Semuenzaniso, iri nyore webhu application inogona kuvakwa neBlazor chimiro kana vagadziri vako vaine ruzivo nazvo, asi nekuda kwekushaikwa kwekukura kweWebAssembly, kusarudza React uye Typescript yekubudirira kwenguva refu kunogona kuve sarudzo iri nani.
  • Scalability uye Performance Zvinodiwa. Kana iwe uchitarisira kugamuchira huwandu hukuru hwetraffic, kusarudza ASP.NET Core pamusoro peDjango inogona kuve sarudzo yehungwaru nekuda kwekuita kwayo kwepamusoro mukubata zvikumbiro panguva imwe chete. Nekudaro, iyi sarudzo inoenderana nehukuru hwetraffic yaunotarisira. Kana iwe uchida kubata zvingangoita mabhiriyoni ezvikumbiro ne low latency, kuvapo kweGarbage Collection kunogona kunetsa.
  • Kuhaya, Nguva Yekuvandudza, uye Mutengo. Kazhinji, izvi ndizvo zvinhu zvatinofanira kuva nehanya nazvo. Nguva yeKushambadzira, Mari yekuchengeta, uye Kuhaya kugadzikana kutyaira bhizinesi rako zvinodiwa pasina zvipingamupinyi.
  • Team Nyanzvi uye Zviwanikwa. Hunyanzvi seti yechikwata chako chekusimudzira chinhu chakakosha. Zvinowanzo shanda zvakanyanya kushandisa matekinoroji ayo timu yako yatoziva nayo kunze kwekunge paine chikonzero chakasimba chekudyara mukudzidza stack nyowani.
  • Kukura. Nharaunda yakasimba uye yakapfuma ecosystem yemaraibhurari uye maturusi anogona kurerutsa zvakanyanya maitiro ekusimudzira. Tekinoroji dzakakurumbira dzinowanzova nerutsigiro rwenharaunda rwuri nani, izvo zvinogona kukosha pakugadzirisa matambudziko nekutsvaga zviwanikwa. Saka, iwe unogona kuchengetedza zviwanikwa uye kutarisa zvakanyanya pane chigadzirwa.
  • Kuchengetedza Kwenguva Yakareba uye Tsigiro. Funga nezvekugara kwenguva refu kweiyo tekinoroji. Matekinoroji anogamuchirwa zvakanyanya uye anotsigirwa kashoma kuti asashande uye anowanzo gamuchira gadziriso nekuvandudzwa.


Kuve neakawanda tekinoroji stacks kunogona kukanganisa kukura kwebhizinesi?

Kubva pane imwe maonero, kuunza imwe imwe stack kunogona kukwirisa kuhaya kwako, asi kune rimwe divi, zvinounza imwe mari yekugadzirisa sezvo iwe uchida kutsigira ese ari maviri. Saka, sezvandambotaura, mumaonero angu, kungodiwa chete kunofanira kunge kuri nharo yekubatanidza akawanda tekinoroji stacks.


Asi zvakadini nemusimboti wekusarudza chishandiso chakanakisa chedambudziko chairo?

Dzimwe nguva iwe hauna imwe sarudzo kunze kwekuunza zvishandiso zvitsva kugadzirisa rimwe dambudziko zvichienderana nekufunga kwakafanana kwambotaurwa, mumamiriro ezvinhu akadaro, zvine musoro kusarudza mhinduro yakanaka.


Kusikwa kwemasisitimu pasina kubatanidza kwakanyanya kune chaiyo tekinoroji kunogona kuve dambudziko. Zvakadaro, zvinobatsira kurwira mamiriro ekuti sisitimu haina kubatanidzwa zvakasimba kune tekinoroji, uye haife kana mangwana, imwe dhizaini kana chishandiso chikava panjodzi kana kutoderedzwa.


Imwe pfungwa yakakosha ine chekuita nekuvhurika-sosi uye proprietary software kutsamira. Proprietary software inokupa kushomeka kuchinjika uye mukana wekugadzirisa. Zvakadaro, chinhu chine njodzi zvakanyanya ndeye mutengesi kukiya-mukati, kwaunobva watsamira pane zvigadzirwa zvemutengesi, mitengo, mazwi, uye mepu yemugwagwa. Izvi zvinogona kuva nengozi kana mutengesi akachinja nzira, akawedzera mitengo, kana kurega chigadzirwa. Open-source software inoderedza njodzi iyi, sechinhu chimwe chete chisingaidzore. Kubvisa imwe pfungwa yekukundikana pamatanho ese ndiyo kiyi yekuvaka yakavimbika masisitimu ekukura.

Imwe Poindi Yekukundikana (SPOF)

Imwe pfungwa yekutadza (SPOF) inoreva chero chikamu chehurongwa icho, kana chikatadza, chichaita kuti sisitimu yese imire kushanda. Kubvisa maSPOF pamatanho ese kwakakosha kune chero system inoda kuwanikwa kwepamusoro. Zvese, kusanganisira ruzivo, vashandi, system components, cloud providers, uye internet cables, zvinogona kukundikana.


Pane akati wandei ekutanga maitiro atingashandise kubvisa imwechete mapoinzi ekutadza:

  1. Redundancy. Shandisa redundancy kune zvakakosha zvikamu. Izvi zvinoreva kuva nezvikamu zvekuchengetedza zvinogona kutora kana chikamu chekutanga chikakundikana. Redundancy inogona kuiswa pamativi akasiyana eiyo sisitimu, kusanganisira Hardware (sevha, disks), networking (zvinongedzo, switch), uye software (database, maseva ekushandisa). Kana iwe uchitambira zvese mune imwe Cloud Provider uye kunyangwe uine backups ipapo, funga kuvaka yakajairwa yekuwedzera backup mune imwe kudzikisa yako yakarasika mutengo kana njodzi.
  2. Data Centers. Govera sisitimu yako munzvimbo dzakawanda dzemuviri, senge data centers kana cloud regions. Iyi nzira inochengetedza sisitimu yako kubva mukutadza kwakanangana nenzvimbo sekudzima kwemagetsi kana njodzi dzinongoitika dzoga.
  3. Failover. Isa nzira yekutadza kune ako ese mazvikamu (DNS, CDN, Load zviremera, Kubernetes, API Gateways, uye Databases). Sezvo nyaya dzichigona kumuka zvisingatarisirwi, zvakakosha kuve nehurongwa hwekuchengetedza kutsiva chero chikamu neclone yayo sezvinodiwa nekukurumidza.
  4. High kuwanikwa mabasa. Ita shuwa kuti masevhisi ako akavakwa kuti ave akatwasuka uye anowanikwa zvakanyanya kubva pakutanga nekutevedzera zvinotevera misimboti:
    • Dzidzira kusamira kwesevhisi uye dzivirira kuchengetedza masesheni emushandisi mune-mundangariro cache. Pane kudaro, shandisa yakagoverwa cache system, senge Redis.
    • Dzivisa kuvimba nehurongwa hwemashandisirwo emeseji paunenge uchigadzira pfungwa.
    • Deredza kuchinja kwekuchinja kudzivirira kukanganisa vatengi veAPI. Pazvinogoneka, sarudza shanduko dzinoenderana neshure. Zvakare, funga nezve mutengo sezvo dzimwe nguva, kuita shanduko yekutyora kunogona kunge kwakanyanya kudhura.
    • Batanidza kutama kwekuita mupombi yekutumirwa.
    • Gadzira nzira yekubata zvikumbiro panguva imwe chete.
    • Shandisa kuwanikwa kwesevhisi, kutarisa, uye kutema miti kuti uwedzere kuvimbika uye kucherechedzwa.
    • Gadzira bhizinesi pfungwa kuti ive isina simba, uchibvuma kuti kutadza kwetiweki hakudzivisiki.
  5. Dependency wongororo. Gara uchiongorora uye kuderedza kutsamira kwekunze. Yega yega yekutsamira yekunze inogona kuunza inogona kuve maSPOF, saka zvakakosha kuti unzwisise uye kudzikisira njodzi idzi.
  6. Kugovana ruzivo rwenguva dzose. Usambofa wakakanganwa kukosha kwekuparadzira ruzivo mukati mesangano rako. Vanhu vanogona kunge vasingafungidziriki, uye kuvimba nemunhu mumwe chete kune ngozi. Kurudzira nhengo dzechikwata kuti dzigadzirise ruzivo rwavo kuburikidza nezvinyorwa. Nekudaro, chenjera kunyora zvakanyanya. Shandisa akasiyana maturusi eAI kurerutsa maitiro aya.

Mhedziso

Muchinyorwa chino, takafukidza akati wandei akakosha maMacro uye kuti tingaite sei nekuoma kwadzo.


Ndinokutendai nekuverenga! Toonana nguva inotevera!