Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia

Nyob zoo cov npoj yaig.

Niaj hnub no peb muab rau koj xav txog kev txhais lus ntawm ib tsab xov xwm los ntawm Tugberk Ugurlu, uas tau lees paub los piav qhia hauv lub ntim me me ntawm cov hauv paus ntsiab lus ntawm kev tsim cov software niaj hnub no. Nov yog qhov uas tus sau hais txog nws tus kheej hauv cov ntsiab lus:

Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia
Txij li nws tsis tuaj yeem hais meej nyob rau hauv ib tsab xov xwm habro xws li lub ntsiab lus colossal raws li cov qauv tsim vaj tsev + cov qauv tsim raws li xyoo 2019, peb pom zoo tsis yog cov ntawv nyeem ntawm Mr. Yog tias koj nyiam, peb yuav tshaj tawm cov ntawv tshwj xeeb tshaj plaws txog kev tsim cov tshuab xa tawm.

Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia

Xaus Vwm Isaac Smith los ntawm Unsplash

Yog tias koj yeej tsis tau ntsib cov teeb meem xws li tsim software system los ntawm kos, tom qab ntawd thaum pib ua haujlwm zoo li no, qee zaum nws tsis paub meej tias yuav pib qhov twg. Kuv ntseeg tias koj thawj zaug yuav tsum tau kos ib thaj tsam kom koj muaj lub tswv yim ntau dua lossis tsawg dua kev ntseeg siab ntawm qhov koj yuav tsim, thiab tom qab ntawd dov koj lub tes tsho thiab ua haujlwm nyob rau hauv cov ciam teb ntawd. Raws li qhov pib, koj tuaj yeem nqa cov khoom lossis kev pabcuam (qhov zoo tshaj yog ib qho uas koj nyiam tiag tiag) thiab txheeb xyuas seb yuav siv nws li cas. Tej zaum koj yuav xav tsis thoob qhov yooj yim npaum li cas cov khoom no zoo li, thiab ntau npaum li cas complexity nws muaj. Tsis txhob hnov ​​qab: yooj yim - feem ntau complex, thiab tsis ua li cas.

Kuv xav tias cov lus qhia zoo tshaj plaws uas kuv tuaj yeem muab rau ib tus neeg pib tsim lub system yog qhov no: tsis txhob ua qhov kev xav! Txij thaum pib, koj yuav tsum qhia qhov tseeb paub txog qhov system no thiab cov kev cia siab cuam tshuam nrog nws. Nov yog qee cov lus nug zoo los nug kom pab koj pib nrog koj tus qauv tsim:

  • Qhov teeb meem peb sim daws yog dab tsi?
  • Dab tsi yog tus naj npawb ntawm cov neeg siv uas yuav cuam tshuam nrog peb qhov system?
  • Cov qauv ntawm kev sau ntawv thiab nyeem cov ntaub ntawv twg peb yuav siv?
  • Dab tsi yog qhov kev cia siab ua tsis tiav, peb yuav daws lawv li cas?
  • Dab tsi yog qhov kev cia siab rau qhov system sib xws thiab muaj?
  • Koj puas yuav tsum tau coj mus rau hauv tus account tej yam yuav tsum muaj ntsig txog kev pov thawj sab nraud thiab kev cai thaum ua haujlwm?
  • Hom ntaub ntawv rhiab heev uas peb yuav khaws cia?

Cov no tsuas yog ob peb nqe lus nug uas muaj txiaj ntsig zoo rau kuv thiab pab pawg uas kuv tau koom nrog ntau xyoo ntawm kev ua haujlwm. Yog tias koj paub cov lus teb rau cov lus nug no (thiab lwm yam uas cuam tshuam rau cov ntsiab lus uas koj yuav tsum tau ua haujlwm), ces koj tuaj yeem maj mam delve rau hauv cov ntsiab lus ntawm qhov teeb meem.

Teem theem pib

Kuv txhais li cas los ntawm "baseline" ntawm no? Qhov tseeb, nyob rau hauv peb lub sij hawm, feem ntau cov teeb meem hauv kev lag luam software "tuaj yeem" daws tau los ntawm cov txheej txheem thiab cov thev naus laus zis uas twb muaj lawm. Raws li, los ntawm kev taug kev toj roob hauv pes no, koj tau txais lub taub hau pib thaum ntsib teeb meem uas lwm tus yuav tsum tau daws ua ntej koj. Tsis txhob hnov ​​​​qab tias cov kev pab cuam raug sau los daws cov teeb meem kev lag luam thiab cov neeg siv, yog li peb siv zog los daws qhov teeb meem ntawm qhov ncaj thiab yooj yim tshaj plaws (los ntawm tus neeg siv qhov kev xav). Vim li cas qhov no tseem ceeb kom nco ntsoov? Tej zaum hauv koj qhov kev sib koom tes koj nyiam nrhiav cov kev daws teeb meem tshwj xeeb rau txhua qhov teeb meem, vim koj xav tias, "Kuv yog tus programmer zoo li cas yog tias kuv ua raws li cov qauv txhua qhov chaw"? Qhov tseeb, kev kos duab ntawm no yog txiav txim siab txog qhov twg thiab yuav ua li cas. Tau kawg, peb txhua tus yuav tsum tau nrog cov teeb meem tshwj xeeb los ntawm ib ntus, txhua qhov yog qhov kev sib tw tiag tiag. Txawm li cas los xij, yog tias peb theem pib tau hais meej meej, ces peb paub tias yuav siv peb lub zog li cas: nrhiav kev npaj npaj rau kev daws teeb meem uas tau teeb tsa ua ntej peb, lossis kawm ntxiv thiab nkag siab tob dua.

Kuv xav tias kuv muaj peev xwm hais tau rau koj tias yog tus kws tshaj lij ntseeg siab nkag siab txog qhov kev tsim vaj tsev ntawm qee qhov software zoo li cas, ces qhov kev paub no yuav yog qhov tseem ceeb rau kev paub txog kev kos duab ntawm tus kws kos duab thiab tsim lub hauv paus ruaj khov hauv daim teb no.

Okay, yog li pib qhov twg? U Donna Martina Muaj ib lub chaw khaws cia ntawm GitHub hu ua system-tsim-primer, los ntawm qhov koj tuaj yeem kawm paub yuav ua li cas tsim cov tshuab loj, nrog rau kev npaj rau kev xam phaj ntawm lub ncauj lus no. Lub repository muaj ib ntu nrog piv txwv tiag tiag architectures, qhov twg, tshwj xeeb, nws tau txiav txim siab yuav ua li cas lawv mus rau qhov tsim ntawm lawv cov tshuab qee lub tuam txhab paub zooxws li Twitter, Uber, thiab lwm yam.

Txawm li cas los xij, ua ntej hloov mus rau cov khoom siv no, cia peb ua tib zoo saib cov kev sib tw tseem ceeb tshaj plaws uas peb ntsib hauv kev xyaum. Qhov no yog qhov tseem ceeb vim tias koj yuav tsum tau qhia ntau yam ntawm cov teeb meem tawv ncauj thiab ntau qhov teeb meem, thiab tom qab ntawd daws nws nyob rau hauv lub moj khaum ntawm cov kev cai nyob rau hauv quab yuam nyob rau hauv ib tug muab system. Jackson Gabbard, ib tug qub neeg ua haujlwm Facebook, sau 50-feeb video hais txog kev tsim qauv kev xam phaj, qhov twg nws tau qhia nws tus kheej kev paub txog kev tshuaj xyuas ntau pua tus neeg thov. Thaum cov yeeb yaj kiab tsom mus rau kev tsim qauv loj thiab cov txheej txheem ua tiav uas yog qhov tseem ceeb thaum tab tom nrhiav tus neeg sib tw rau txoj haujlwm no, nws tseem yuav ua haujlwm raws li cov peev txheej ntawm cov khoom tseem ceeb tshaj plaws thaum tsim cov tshuab. kuv kuj qhia Cov ntsiab lus daim video no.

Tsim kev paub txog kev khaws cia thiab khaws cov ntaub ntawv

Feem ntau, koj qhov kev txiav txim siab txog yuav ua li cas koj khaws thiab khaws koj cov ntaub ntawv nyob rau lub sijhawm ntev muaj kev cuam tshuam tseem ceeb rau kev ua haujlwm ntawm lub cev. Yog li ntawd, koj yuav tsum xub nkag siab txog qhov xav tau sau thiab nyeem cov yam ntxwv ntawm koj lub cev. Tom qab ntawd koj yuav tsum muaj peev xwm ntsuas cov ntsuas no thiab xaiv cov kev xaiv raws li cov kev ntsuas tau ua. Txawm li cas los xij, koj tuaj yeem daws tau qhov haujlwm no tsuas yog tias koj nkag siab txog cov qauv khaws cia cov ntaub ntawv uas twb muaj lawm. Hauv txoj ntsiab cai, qhov no txhais tau tias muaj kev paub zoo txog xaiv database.

Databases tuaj yeem xav tias yog cov ntaub ntawv cov qauv uas tsis tshua muaj scalable thiab ruaj khov. Yog li ntawd, kev paub txog cov qauv ntaub ntawv yuav tsum muaj txiaj ntsig zoo rau koj thaum xaiv cov ntaub ntawv tshwj xeeb. Piv txwv li, Redis yog cov ntaub ntawv qauv neeg rau zaub mov uas txhawb ntau hom kev muaj txiaj ntsig. Nws tso cai rau koj los ua haujlwm nrog cov ntaub ntawv cov qauv xws li cov npe thiab cov teeb tsa, thiab nyeem cov ntaub ntawv siv cov algorithms uas paub zoo, piv txwv li, LRU, txhim kho xws li kev ua haujlwm nyob rau hauv ib qho kev ruaj khov thiab siv tau zoo heev.

Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia

Xaus Vwm Samuel Zeller los ntawm Unsplash

Thaum koj muaj kev nkag siab txaus ntawm ntau yam qauv khaws cia, txav mus rau kev kawm cov ntaub ntawv sib xws thiab muaj. Ua ntej tshaj plaws, koj yuav tsum nkag siab CAP theorem yam tsawg kawg ntawm cov ntsiab lus dav dav, thiab tom qab ntawd txhuam qhov kev paub no los ntawm kev saib ze dua ntawm cov qauv tsim sib xws ΠΈ kev siv tau. Txoj kev no, koj yuav tsim kev nkag siab ntawm thaj chaw thiab nkag siab tias kev nyeem ntawv thiab sau cov ntaub ntawv yog ob qho teeb meem sib txawv, txhua tus muaj nws cov kev sib tw tshwj xeeb. Armed nrog ob peb qhov sib xws thiab muaj cov qauv, koj tuaj yeem ua kom muaj kev ua haujlwm zoo thaum ua kom cov ntaub ntawv ntws mus rau koj daim ntawv thov.

Thaum kawg, xaus kev sib tham txog cov ntaub ntawv khaws cia cov teeb meem, peb yuav tsum hais txog caching. Nws puas yuav tsum khiav ib txhij ntawm tus neeg siv khoom thiab server? Cov ntaub ntawv dab tsi yuav nyob hauv koj lub cache? Thiab yog vim li cas? Koj npaj cache invalidation li cas? Nws puas yuav ua tsis tu ncua, ntawm qee lub sijhawm? Yog tias muaj, ntau npaum li cas? Kuv pom zoo kom pib kawm cov ncauj lus no nrog ntu txuas ntxiv lub aforementioned system tsim primer.

Kev sib txuas lus qauv

Cov tshuab muaj ntau yam khoom siv; cov no tuaj yeem yog cov txheej txheem sib txawv khiav hauv tib lub cev ntawm lub cev, lossis cov tshuab sib txawv khiav ntawm ntau qhov chaw ntawm koj lub network. Qee qhov kev pabcuam hauv koj lub network yuav yog tus kheej, tab sis lwm tus yuav tsum yog pej xeem thiab qhib rau cov neeg siv khoom nkag mus rau lawv los ntawm sab nraud.

Nws yog ib qho tsim nyog los xyuas kom meej kev sib txuas lus ntawm cov peev txheej no nrog rau ib leeg, nrog rau kev sib pauv ntaub ntawv ntawm tag nrho cov kab ke thiab lub ntiaj teb sab nraud. Hauv cov ntsiab lus ntawm kev tsim qauv, ntawm no dua peb tau ntsib nrog cov teeb meem tshiab thiab tshwj xeeb. Cia peb saib seb lawv tuaj yeem siv tau li cas asynchronous ua haujlwm ntws,a qho pMuaj ntau hom kev sib txuas lus.

Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia

Xaus Vwm Tony Stoddard los ntawm Unsplash

Thaum npaj kev sib txuas lus nrog lub ntiaj teb sab nraud, nws yog ib qho tseem ceeb heev kev ruaj ntseg, qhov kev pab cuam uas tseem yuav tsum tau ua tiag tiag thiab nquag ua raws.

Kev sib txuas kev faib tawm

Kuv tsis paub tseeb tias muab cov ncauj lus no tso rau hauv ib ntu yuav zoo li tsim nyog rau txhua tus. Txawm li cas los xij, kuv yuav nthuav tawm lub tswv yim no nthuav dav ntawm no, thiab kuv ntseeg tias cov khoom siv hauv ntu no tau piav qhia meej tshaj plaws los ntawm lo lus "kev sib txuas sib txuas".

Cov kab ke raug tsim los ntawm kev sib txuas ntau yam, thiab lawv cov kev sib txuas lus nrog ib leeg feem ntau yog tsim los ntawm cov txheej txheem tsim, piv txwv li, TCP thiab UDP. Txawm li cas los xij, cov txheej txheem zoo li no feem ntau tsis txaus los ua kom tau raws li txhua qhov kev xav tau ntawm cov tshuab niaj hnub no, uas feem ntau ua haujlwm nyob rau hauv siab load thiab tseem nyob ntawm cov neeg siv xav tau. Nws yog feem ntau tsim nyog los nrhiav txoj hauv kev los faib cov kev sib txuas los tiv thaiv cov khoom siv siab ntawm lub cev.

Qhov kev faib tawm no yog raws li cov neeg paub zoo sau npe system (DNS). Xws li lub kaw lus tso cai rau lub npe hloov pauv xws li hnyav puag ncig robin thiab latency-raws li txoj hauv kev los pab faib cov khoom thauj.

Load ntsuas Nws yog ib qho tseem ceeb heev, thiab yuav luag txhua qhov loj hauv Is Taws Nem uas peb cuam tshuam nrog niaj hnub no yog nyob tom qab ib lossis ntau dua load balancers. Load balancers pab faib cov neeg thov kev thov thoob plaws ntau yam muaj. Load balancers tuaj rau hauv ob qho tib si kho vajtse thiab software, txawm li cas los xij, hauv kev xyaum, ntau zaus koj yuav tsum tau nrog cov software, piv txwv li. HAPROxy ΠΈ ELB. Rov qab proxies conceptually kuj zoo ib yam li load balancers, txawm hais tias muaj ntau yam ntawm thawj thiab thib ob sib txawv. Cov kev sib txawv no yuav tsum raug coj mus rau hauv tus account thaum tsim ib lub system raws li koj xav tau.

Koj kuj yuav tsum paub txog cov ntsiab lus xa tawm network (CDN). CDN yog lub network faib thoob ntiaj teb ntawm proxy servers uas xa cov ntaub ntawv los ntawm cov nodes uas thaj chaw nyob ze rau ib tus neeg siv tshwj xeeb. CDNs yog qhov zoo dua los siv yog tias koj ua haujlwm nrog cov ntaub ntawv zoo li qub sau hauv JavaScript, CSS thiab HTML. Tsis tas li ntawd, cov kev pabcuam huab uas muab cov neeg saib xyuas kev khiav tsheb muaj ntau niaj hnub no, piv txwv li, Azure Traffic Manager, muab kev faib thoob ntiaj teb rau koj thiab txo qis latency thaum ua haujlwm nrog cov ntsiab lus dynamic. Txawm li cas los xij, cov kev pabcuam no feem ntau muaj txiaj ntsig zoo thaum koj yuav tsum ua haujlwm nrog cov kev pabcuam hauv lub vev xaib tsis muaj neeg nyob.

Wb tham txog kev lag luam logic. Kev txhim kho kev lag luam logic, kev ua haujlwm ntws thiab cov khoom

Yog li, peb tau tswj hwm los tham txog ntau yam kev tsim kho vaj tse ntawm qhov system. Feem ntau, tus neeg siv tsis txawm xav txog tag nrho cov ntsiab lus ntawm koj lub cev thiab, ncaj ncees, tsis quav ntsej txog lawv txhua. Tus neeg siv txaus siab rau qhov nws zoo li cuam tshuam nrog koj lub cev, dab tsi tuaj yeem ua tiav los ntawm kev ua qhov no, thiab tseem yuav ua li cas lub kaw lus ua haujlwm rau cov neeg siv cov lus txib, dab tsi thiab nws ua li cas nrog cov neeg siv cov ntaub ntawv.

Raws li lub npe ntawm tsab xov xwm no qhia, kuv yuav tham txog software architecture thiab system tsim. Raws li, kuv tsis tau npaj los npog cov qauv tsim software uas piav qhia txog yuav ua li cas cov khoom siv software tsim. Txawm li cas los xij, qhov ntau kuv xav txog nws, qhov ntau nws zoo li rau kuv tias txoj kab ntawm software tsim qauv thiab cov qauv kev tsim vaj tsev yog qhov muag plooj, thiab ob lub tswv yim zoo sib xws. Cia peb ua piv txwv kev sau npe (kev nthuav qhia qhov chaw). Thaum koj tau txais cov qauv kev tsim vaj tsev no, nws yuav cuam tshuam yuav luag txhua yam ntawm koj lub cev: kev cia ntev ntev ntawm cov ntaub ntawv, qib kev sib xws ntawm koj lub cev, cov duab ntawm cov khoom hauv nws, thiab lwm yam. Yog li ntawd, kuv txiav txim siab hais txog qee cov qauv kev tsim vaj tsev uas cuam tshuam ncaj qha rau kev lag luam logic. Txawm hais tias tsab xov xwm no yuav tsum txwv nws tus kheej rau ib daim ntawv teev npe yooj yim, kuv xav kom koj paub txog nws thiab xav txog cov tswv yim cuam tshuam nrog cov qauv no. Ntawm no koj yog:

Kev sib koom ua ke

Nws tsis tshua muaj qhov tsis zoo uas koj yuav pom koj tus kheej ntawm qhov project raws li tus neeg koom nrog uas yog lub luag haujlwm rau tus txheej txheem tsim qauv. Ntawm qhov tsis sib xws, koj yuav muaj feem cuam tshuam nrog cov npoj yaig ua haujlwm ob sab hauv thiab sab nraud koj txoj haujlwm. Hauv qhov no, koj yuav tsum tau ntsuas cov kev xaiv thev naus laus zis nrog cov npoj yaig, txheeb xyuas cov kev xav tau ntawm kev lag luam thiab nkag siab tias yuav ua li cas zoo tshaj rau kev ua haujlwm sib luag.

Software Architecture thiab Systems Tsim: Daim Duab Loj thiab Cov Lus Qhia

Xaus Vwm Kaleidico los ntawm Unsplash

Thawj kauj ruam yog los tsim kom muaj qhov tseeb thiab sib koom kev nkag siab ntawm lub hom phiaj kev lag luam uas koj tab tom sim ua kom tiav yog thiab qhov chaw txav koj yuav tsum tau ua nrog. Cov txheej txheem ua qauv pab pawg, tshwj xeeb cua daj cua dub txheej xwm (kev tshwm sim cua daj cua dub) pab kom ceev cov txheej txheem no thiab ua rau koj muaj feem ua tiav. Txoj haujlwm no tuaj yeem ua tiav ua ntej lossis tom qab koj qhia ciam teb ntawm koj cov kev pabcuam, thiab tom qab ntawd sib sib zog nqus nws raws li cov khoom matures. Raws li theem ntawm kev sib xws uas yuav ua tiav ntawm no, koj tuaj yeem tsim tau hom lus rau cov ntsiab lus txwv uas koj ua haujlwm. Thaum koj yuav tsum tham txog lub architecture ntawm koj lub cev, koj yuav pom nws muaj txiaj ntsig qauv C4, npaj Simon Brown, tshwj xeeb tshaj yog thaum koj yuav tsum nkag siab ntau npaum li cas koj yuav tau mus rau hauv cov ntsiab lus ntawm qhov teeb meem, pom cov khoom koj xav sib txuas lus.

Tej zaum muaj lwm yam cuab yeej paub tab ntawm cov ncauj lus no uas tsis muaj txiaj ntsig tsawg dua li Domain Driven Design. Txawm li cas los xij, peb qee yam rov qab los nkag siab txog qhov kev kawm, yog li kev paub thiab kev paub hauv thaj chaw Domain-Driven Design yuav tsum muaj txiaj ntsig rau koj.

Tau qhov twg los: www.hab.com

Ntxiv ib saib