paint-brush
Ki jan fè fas ak konpleksite lè konsepsyon sistèm lojisyèlpa@fairday
64,467 lekti
64,467 lekti

Ki jan fè fas ak konpleksite lè konsepsyon sistèm lojisyèl

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

Twò lontan; Pou li

Konpleksite se lènmi an! Ann aprann kijan pou fè fas ak sa!
featured image - Ki jan fè fas ak konpleksite lè konsepsyon sistèm lojisyèl
Aleksei HackerNoon profile picture

Ki sa li tout sou?

Chak jou, chak moman pandan karyè jeni nou an, nou rankontre anpil pwoblèm diferan nan divès konpleksite ak sitiyasyon kote nou bezwen pran yon desizyon oswa ranvwaye li akòz mank done. Chak fwa nou bati nouvo sèvis, konstwi enfrastrikti, oswa menm fòme pwosesis devlopman, nou manyen yon gwo mond nan divès defi.


Li difisil, e petèt menm enposib, lis tout pwoblèm yo. Ou pral rankontre kèk nan pwoblèm sa yo sèlman si w ap travay nan yon Tanporèman nich espesifik. Nan lòt men an, gen anpil ke nou tout dwe konprann ki jan yo rezoud, kòm yo enpòtan anpil pou bati sistèm IT. Avèk yon gwo pwobabilite, ou pral rankontre yo nan tout pwojè yo.


Nan atik sa a, mwen pral pataje eksperyans mwen ak kèk nan pwoblèm yo mwen te rankontre pandan y ap kreye pwogram lojisyèl.

Ki sa ki Enkyetid Cross-Cutting?

Si nou gade nan Wikipedia, nou pral jwenn definisyon sa a


Nan devlopman lojisyèl ki oryante sou aspè yo, enkyetid transvèsal yo se aspè nan yon pwogram ki afekte plizyè modil, san yo pa posiblite pou yo te encapsulé nan okenn nan yo. Enkyetid sa yo souvan pa ka dekonpoze pwòp soti nan rès la nan sistèm nan tou de nan konsepsyon an ak aplikasyon an, epi yo ka lakòz swa gaye (diplikasyon kòd), anmele (depandans enpòtan ant sistèm yo), oswa toude.


Li dekri anpil sa li ye, men mwen vle pwolonje ak senplifye li yon ti kras:

Yon enkyetid transvèsal se yon konsèp oswa yon eleman nan sistèm / òganizasyon an ki afekte (oswa 'koupe atravè') anpil lòt pati.


Pi bon egzanp enkyetid sa yo se achitekti sistèm, antre, sekirite, jesyon tranzaksyon, telemetri, konsepsyon baz done e gen anpil lòt. Nou pral elabore sou anpil nan yo pita nan atik sa a.


Nan nivo kòd, enkyetid transvèsal yo souvan aplike lè l sèvi avèk teknik tankou Aspè-Oryante Programming (AOP) , kote enkyetid sa yo modularize nan eleman separe ki ka aplike nan tout aplikasyon an. Sa a kenbe lojik biznis la izole nan enkyetid sa yo, fè kòd la pi lizib ak antretyen.

Aspè Klasifikasyon

Gen anpil fason posib ki jan yo klasifye aspè yo pa segmentation yo ak pwopriyete diferan tankou dimansyon, gwosè, fonctionnalités, enpòtans, sib, ak lòt moun, men nan atik sa a, mwen pral sèvi ak yon klasifikasyon sijè ki abòde ki senp. Pa sa, mwen vle di kote aspè espesifik sa a dirije si li se òganizasyon an antye, yon sistèm patikilye, oswa yon eleman espesifik nan sistèm sa a.


Se konsa, mwen pral divize aspè yo nan Macro ak Mikwo .


Pa Aspè Macro mwen vle di sitou konsiderasyon nou swiv pou tout sistèm lan tankou achitekti sistèm chwazi ak konsepsyon li yo (monolitik, mikwosèvis, achitekti oryante sèvis), pil teknoloji, estrikti òganizasyon, elatriye Aspè Macro yo gen rapò sitou ak estratejik ak wo nivo. desizyon.


Nan entre-temps la, aspè nan Micro se pi pre nivo kòd la ak devlopman. Pou egzanp, ki kad ki itilize pou kominike avèk baz done a, estrikti nan pwojè nan dosye ak klas, oswa menm modèl konsepsyon objè espesifik.


Pandan ke klasifikasyon sa a pa ideyal, li ede estriktire yon konpreyansyon sou pwoblèm posib ak enpòtans ak enpak solisyon nou aplike pou yo.


Nan atik sa a, konsantre prensipal mwen an pral sou aspè macro yo.

Aspè makro

Estrikti òganizasyon

Lè mwen fèk kòmanse aprann sou achitekti lojisyèl, mwen li anpil atik enteresan sou lwa Conway a ak enpak li sou estrikti òganizasyonèl. Espesyalman yon sèl sa a . So, sa lwa i dir sa


Nenpòt òganizasyon ki desine yon sistèm (defini an jeneral) pral pwodwi yon konsepsyon ki gen estrikti se yon kopi estrikti kominikasyon òganizasyon an.


Mwen te toujou kwè ke konsèp sa a se vreman trè inivèsèl ak reprezante Règ an lò.


Lè sa a, mwen te kòmanse aprann apwòch Eric Evans nan domèn-driven Design (DDD) pou sistèm modèl. Eric Evans mete aksan sou enpòtans idantifikasyon Bounded Context. Konsèp sa a enplike divize yon modèl domèn konplèks an pi piti, seksyon ki pi jere, yo chak ak pwòp seri limite konesans li yo. Apwòch sa a ede nan kominikasyon ekip efikas, paske li redwi nesesite pou anpil konesans nan domèn nan tout antye epi minimize chanje kontèks, konsa fè konvèsasyon pi efikas. Chanjman nan kontèks se bagay ki pi mal la epi ki pi konsome resous tout tan. Menm òdinatè yo ap goumen ak li. Malgre ke li se fasil reyalize yon absans konplè nan chanje kontèks, mwen kalkile se sa nou ta dwe fè efò pou.


Fantasy about keeping in mind a lot of bounded contexts

Retounen nan Lwa Conway a, mwen jwenn plizyè pwoblèm ak li.


Premye pwoblèm mwen te rankontre ak Lwa Conway a, ki sijere ke konsepsyon sistèm miwa estrikti òganizasyonèl, se potansyèl pou fòme Kontèks Limite konplèks ak konplè. Konpleksite sa a rive lè estrikti òganizasyonèl la pa aliyen ak fwontyè domèn, sa ki mennen nan Kontèks Limite ki lou entèdepandan ak chaje ak enfòmasyon. Li mennen nan souvan chanje kontèks pou ekip devlopman an.


Yon lòt pwoblèm se ke tèminoloji òganizasyonèl koule nan nivo kòd la. Lè estrikti òganizasyonèl chanje, li nesesè modifikasyon kodbaz, konsome resous valab.


Kidonk, swiv Manèv Inverse Conway ede bati sistèm nan ak òganizasyon ki ankouraje achitekti lojisyèl vle. Sepandan, li enpòtan pou w di ke apwòch sa a pa pral travay trè byen nan achitekti ak estrikti ki deja fòme depi chanjman nan etap sa a yo pwolonje, men li se eksepsyonèlman pèfòmans nan demaraj paske yo rapid pou prezante nenpòt chanjman.

Sou entènèt jwèt Big boul nan labou

Modèl sa a oswa "anti-modèl" kondwi bati yon sistèm san okenn achitekti. Pa gen okenn règ, pa gen limit, ak pa gen okenn estrateji sou kòman yo kontwole konpleksite a ap grandi inevitab. Konpleksite se lènmi ki pi tèribl nan vwayaj la nan bati sistèm lojisyèl.


Entertaining illustration made by ChatGPT

Pou evite konstwi kalite sistèm sa a, nou bezwen swiv règ espesifik ak kontrent.

Achitekti sistèm

Genyen myriad definisyon pou Achitekti lojisyèl. Mwen renmen anpil nan yo paske yo kouvri diferan aspè nan li. Sepandan, pou nou kapab rezone sou achitekti, nou bezwen natirèlman fòme kèk nan yo nan lespri nou. Epi li enpòtan pou nou di ke definisyon sa a ka evolye. Se konsa, omwen pou kounye a, mwen gen deskripsyon sa a pou tèt mwen.


Achitekti lojisyèl se sou desizyon ak chwa ou fè chak jou ki gen enpak sou sistèm bati a.


Pou pran desizyon ou bezwen gen nan "sak" ou prensip ak modèl pou rezoud pwoblèm ki rive, li esansyèl tou pou deklare ke konprann kondisyon yo se kle pou konstwi sa yon biznis bezwen. Sepandan, pafwa kondisyon yo pa transparan oswa menm pa defini, nan ka sa a, li pi bon pou tann pou jwenn plis klarifikasyon oswa konte sou eksperyans ou ak fè konfyans entwisyon ou. Men, de tout fason, ou pa ka pran desizyon byen si ou pa gen prensip ak modèl yo konte sou yo. Se la mwen vini nan definisyon an nan Style Achitekti lojisyèl.


Style Achitekti Lojisyèl se yon seri prensip ak modèl ki deziyen kijan pou konstwi lojisyèl.


Gen yon anpil nan diferan estil achitekti konsantre sou divès kote nan achitekti te planifye a, epi aplike plizyè nan yo nan yon fwa se yon sitiyasyon nòmal.


Pou egzanp, tankou:

  1. Achitekti monolitik

  2. Konsepsyon ki baze sou domèn

  3. Konpozan ki baze sou

  4. Microservices

  5. Tiyo ak filtè

  6. Evènman-kondwi

  7. Microkernel

  8. Oryante sèvis


ak sou sa...


Natirèlman, yo gen avantaj ak dezavantaj yo, men bagay ki pi enpòtan mwen te aprann se ke achitekti evolye piti piti pandan y ap depann sou pwoblèm aktyèl yo. Kòmanse ak achitekti monolitik la se yon bon chwa pou diminye konpleksite operasyonèl, trè posib achitekti sa a pral anfòm bezwen ou yo menm apre yo fin rive soti etap Product-market Fit (PMI) nan bati pwodwi a. Nan echèl, ou ka konsidere deplase nan direksyon pou yon apwòch ki baze sou evènman ak mikwo-sèvis pou reyalize deplwaman endepandan, anviwònman pile teknoloji eterojèn, ak mwens makonnen achitekti (ak mwens transparan nan entre-temps la akòz nati a nan evènman kondwi ak apwòch pub-sub si sa yo adopte). Senplisite ak efikasite yo fèmen epi yo gen yon gwo enpak youn sou lòt. Anjeneral, achitekti konplike gen enpak sou vitès devlopman nouvo karakteristik, sipòte ak kenbe sa ki deja egziste, ak defi evolisyon natirèl sistèm nan.


Sepandan, sistèm konplèks souvan mande pou achitekti konplèks ak konplè, ki se inevitab.


Ase, sa a se yon sijè trè trè laj, e gen anpil gwo lide sou fason yo estrikti ak bati sistèm pou evolisyon natirèl. Dapre eksperyans mwen, mwen te travay sou apwòch sa a:

  1. Prèske toujou kòmanse ak style la achitekti monolitik depi li elimine pi fò nan pwoblèm yo ki rive akòz nati a nan sistèm distribiye. Li fè sans tou pou swiv monolith modilè pou konsantre sou eleman bilding ak limit klè. Aplike yon apwòch ki baze sou eleman ta ka ede yo kominike youn ak lòt lè yo itilize evènman, men gen apèl dirèk (aka RPC) senplifye bagay yo nan kòmansman an. Sepandan, li enpòtan pou swiv depandans ant eleman yo paske si eleman A konnen anpil bagay sou eleman B, petèt, li fè sans pou rantre yo nan yon sèl.
  2. Lè ou vin pi pre sitiyasyon an lè ou bezwen echèl devlopman ak sistèm ou a, ou ta ka konsidere swiv modèl la Stangler piti piti ekstrè eleman ki bezwen deplwaye poukont yo oswa menm echèl ak kondisyon espesifik.
  3. Koulye a, si ou gen yon vizyon klè nan tan kap vini an, ki se yon ti jan nan chans enkwayab, ou ta ka deside sou achitekti a vle. Nan moman sa a, ou ka deside sou mouvman nan achitekti mikwosèvis yo lè w aplike tou apwòch Òkestro ak Koregrafi, enkòpore modèl CQRS pou operasyon ekri ak lekti echèl endepandan, oswa menm deside rete ak achitekti monolitik si li adapte bezwen ou yo.


Li enpòtan tou pou w konprann nimewo yo ak mezi tankou DAU (Itilizatè aktif chak jou), MAU (Itilizatè aktif chak mwa), RPC (Demann pou chak segonn), ak TPC (tranzaksyon pou chak segonn) paske li ta ka ede w fè chwa paske achitekti pou 100 itilizatè aktif ak 100 milyon itilizatè aktif yo diferan.


Kòm yon nòt final, mwen ta di ke achitekti gen yon enpak siyifikatif sou siksè pwodwi a. Achitekti ki mal fèt pou pwodwi yo mande nan dekale, ki gen anpil chans mennen nan echèk depi kliyan pa pral tann pandan w ap echèl sistèm nan, yo pral chwazi yon konkiran, kidonk nou bezwen yo dwe devan dekale potansyèl yo. Malgre ke mwen admèt ke pafwa li pa ta ka yon apwòch mèg, lide a se gen yon sistèm évolutive men pa deja echèl. Nan lòt men an, gen yon sistèm trè konplike ak deja echèl ki pa gen okenn kliyan oswa plan yo jwenn anpil nan yo ap koute ou lajan sou biznis ou pou anyen.

Seleksyon pil teknoloji

Chwazi yon pil teknoloji se tou yon desizyon macro-nivo paske li enfliyanse anbochaj, pèspektiv evolisyon natirèl sistèm, évolutivité, ak pèfòmans sistèm.


Sa a se lis konsiderasyon debaz pou chwazi yon pil teknoloji:

  • Kondisyon pwojè ak konpleksite. Pou egzanp, yon senp aplikasyon entènèt ka bati ak Blazor fondasyon an si devlopè ou yo gen eksperyans ak li, men akòz mank de matirite nan WebAssembly, chwazi React ak Typescript pou siksè alontèm ta ka yon pi bon desizyon.
  • Évolutivité ak pèfòmans bezwen. Si w prevwa ke w ap resevwa yon gwo kantite trafik, chwazi pou ASP.NET Core sou Django ta ka yon chwa ki gen bon konprann akòz pèfòmans siperyè li nan manyen demann konkouran. Sepandan, desizyon sa a depann de echèl trafik ou espere. Si ou bezwen jere potansyèlman dè milya de demann ak latansi ki ba, prezans nan Gabage Collection ta ka yon defi.
  • Anbochaj, tan devlopman, ak pri. Nan pifò ka yo, sa yo se faktè sa yo nou bezwen pran swen sou yo. Tan pou mache, pri antretyen, ak estabilite anbochaj kondwi bezwen biznis ou san obstak.
  • Ekspètiz Ekip ak Resous. Konpetans ekip devlopman ou a se yon faktè enpòtan. Anjeneral, li pi efikas pou itilize teknoloji ekip ou a deja abitye amwenske gen yon rezon solid pou envesti nan aprann yon nouvo pil.
  • Matirite. Yon kominote solid ak yon ekosistèm rich nan bibliyotèk ak zouti ka anpil fasilite pwosesis devlopman an. Teknoloji popilè yo souvan gen pi bon sipò nan kominote a, ki ka gen anpil valè pou rezoud pwoblèm ak jwenn resous. Kidonk, ou ka ekonomize resous epi konsantre sitou sou pwodwi a.
  • Antretyen alontèm ak sipò. Konsidere viabilite alontèm teknoloji a. Teknoloji ke yo adopte ak sipòte lajman gen mwens chans pou yo vin demode epi jeneralman resevwa mizajou ak amelyorasyon regilye.


Kouman gen plizyè pil teknoloji kapab afekte kwasans biznis?

Soti nan yon pèspektiv, entwodwi yon lòt pile ta ka echèl anbochaj ou a, men nan lòt men an, li pote depans antretyen siplemantè paske ou bezwen sipòte tou de pile. Se konsa, jan mwen te di deja, nan pwen de vi mwen, sèlman bezwen siplemantè ta dwe yon agiman pou enkòpore plis pil teknoloji.


Men, ki sa ki sou prensip la nan chwazi zouti ki pi bon pou yon pwoblèm espesifik?

Pafwa ou pa gen okenn lòt chwa men pote nouvo zouti pou rezoud yon pwoblèm espesifik ki baze sou menm konsiderasyon yo mansyone pi wo a, nan ka sa yo, li fè sans yo chwazi pi bon solisyon an.


Kreyasyon sistèm san kouple segondè nan yon teknoloji espesifik ta ka yon defi. Sepandan, li itil pou fè efò pou yon kondisyon kote sistèm lan pa byen konekte ak teknoloji, epi li p ap mouri si demen, yon kad espesifik oswa yon zouti vin vilnerab oswa menm depreke.


Yon lòt konsiderasyon enpòtan ki gen rapò ak sous louvri ak depandans lojisyèl propriétaires. Lojisyèl pwopriyetè ba ou mwens fleksibilite ak posiblite pou yo Customized. Poutan, faktè ki pi danjere a se lock-in vandè, kote ou vin depann sou pwodwi yon machann, pri, tèm, ak plan wout. Sa a ka riske si vandè a chanje direksyon, ogmante pri, oswa sispann pwodwi a. Lojisyèl Open-source diminye risk sa a, paske yon sèl antite pa kontwole li. Elimine yon sèl pwen echèk sou tout nivo se yon kle pou konstwi sistèm serye pou kwasans.

Sèl pwen echèk (SPOF)

Yon sèl pwen echèk (SPOF) refere a nenpòt pati nan yon sistèm ki, si li echwe, pral lakòz tout sistèm nan sispann fonksyone. Elimine SPOF nan tout nivo enpòtan anpil pou nenpòt sistèm ki mande disponiblite segondè. Tout bagay, ki gen ladan konesans, pèsonèl, konpozan sistèm, founisè nwaj, ak kab entènèt, ka echwe.


Gen plizyè teknik debaz nou ta ka aplike pou elimine sèl pwen echèk:

  1. Redondans. Aplike redondance pou eleman kritik yo. Sa vle di gen konpozan backup ki ka pran sou si eleman prensipal la echwe. Redondans ka aplike atravè diferan kouch nan sistèm nan, ki gen ladan pyès ki nan konpitè (sèvè, disk), rezo (lyen, switch), ak lojisyèl (baz done, sèvè aplikasyon). Si w ap òganize tout bagay nan yon sèl Founisè Cloud e menm gen sovgad la, konsidere bati yon backup regilye adisyonèl nan yon lòt pou diminye pri pèdi ou an ka ta gen yon dezas.
  2. Sant Done yo. Distribye sistèm ou a atravè plizyè kote fizik, tankou sant done oswa rejyon nwaj yo. Apwòch sa a pwoteje sistèm ou a kont echèk espesifik kote yo ye tankou pann kouran oswa dezas natirèl.
  3. Failover. Aplike yon apwòch failover pou tout eleman ou yo (DNS, CDN, balans chaj, Kubernetes, API Gateways, ak baz done). Depi pwoblèm yo ka parèt san atann, li enpòtan pou gen yon plan backup pou ranplase nenpòt eleman ak script li yo rapidman.
  4. Sèvis disponiblite segondè. Asire w ke sèvis ou yo bati pou yo kapab évolutive orizontal ak trè disponib depi nan kòmansman an lè w respekte prensip sa yo:
    • Pratike sèvis apatrid epi evite estoke sesyon itilizatè yo nan kachèt nan memwa. Olye de sa, sèvi ak yon sistèm kachèt distribiye, tankou Redis.
    • Evite konte sou lòd kwonolojik konsomasyon mesaj lè w ap devlope lojik.
    • Minimize chanjman rupture yo pou anpeche deranje konsomatè API yo. Lè sa posib, patisipe pou chanjman ki konpatib bak. Epitou, konsidere pri depi pafwa, mete ann aplikasyon yon chanjman kase ka pi pri-efikas.
    • Enkòpore ekzekisyon migrasyon an nan tiyo deplwaman an.
    • Etabli yon estrateji pou okipe demann konkouran.
    • Aplike sèvis dekouvèt, siveyans, ak anrejistreman pou amelyore fyab ak obsèvabilite.
    • Devlope lojik biznis yo dwe idempotan, rekonèt ke echèk rezo yo inevitab.
  5. Revizyon depandans. Regilyèman revize epi minimize depandans ekstèn yo. Chak depandans ekstèn ka prezante potansyèl SPOF, kidonk li esansyèl pou konprann ak bese risk sa yo.
  6. Pataje konesans regilye. Pa janm bliye enpòtans pou gaye konesans nan òganizasyon w lan. Moun yo ka enprevizib, epi konte sou yon sèl moun se riske. Ankouraje manm ekip yo pou nimerik konesans yo atravè dokiman. Sepandan, fè atansyon sou dokimante twòp. Sèvi ak divès kalite zouti AI pou senplifye pwosesis sa a.

Konklizyon

Nan atik sa a, nou kouvri plizyè aspè kle Macro ak fason nou ka fè fas ak konpleksite yo.


Mèsi paske w li! Nap wè pwochèn fwa!