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.
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.
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.
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.
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.
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.
Pou evite konstwi kalite sistèm sa a, nou bezwen swiv règ espesifik ak kontrent.
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:
Achitekti monolitik
Konsepsyon ki baze sou domèn
Konpozan ki baze sou
Microservices
Tiyo ak filtè
Evènman-kondwi
Microkernel
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:
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.
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:
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.
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:
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!