Kev xaiv ntawm architectural style (Part 1)

Nyob zoo, habr. Kev tso npe kawm rau cov chav kawm tshiab tau qhib tam sim no ntawm OTUS "Software Architect". Hnub ua ntej ntawm qhov pib ntawm chav kawm, kuv xav qhia rau koj kuv cov lus qub.

Taw qhia

Kev xaiv ntawm architectural style yog ib qho ntawm cov kev txiav txim siab tseem ceeb thaum tsim cov ntaub ntawv. Nyob rau hauv cov kab lus no, kuv tawm tswv yim los txheeb xyuas cov qauv kev tsim vaj tsev nrov tshaj plaws rau kev siv lub tsev thiab teb cov lus nug ntawm seb qhov twg yog qhov zoo tshaj plaws architectural style. Nyob rau hauv tus txheej txheem ntawm kev nthuav qhia, kuv yuav sim kos ib lub laj thawj uas piav qhia txog kev txhim kho cov qauv vaj tsev ntawm monoliths mus rau microservices.

Ib me ntsis keeb kwm

Yog tias koj sim nug cov neeg tsim khoom: "Vim li cas peb xav tau microservices?", koj yuav tau txais ntau cov lus teb. Koj yuav hnov ​​​​tias microservices txhim kho scalability, ua kom yooj yim rau kev nkag siab, txhim kho kev zam txim, thiab qee zaum koj yuav hnov ​​​​tias lawv tso cai rau koj "ntxuav koj cov cai." Cia peb saib keeb kwm kom nkag siab lub hom phiaj tom qab qhov tshwm sim ntawm microservices.

Nyob rau hauv luv luv, microservices nyob rau hauv peb tam sim no kev nkag siab tau tshwm sim raws li nram no: nyob rau hauv 2011, James Lewis, soj ntsuam kev ua hauj lwm ntawm ntau lub tuam txhab, kos xim rau qhov tshwm sim ntawm ib tug tshiab "micro-app" qauv, uas optimized SOA nyob rau hauv cov nqe lus ntawm accelerating lub xa mus. kev pabcuam. Ib me ntsis tom qab, nyob rau hauv 2012, ntawm lub rooj sib tham architecture, tus qauv tau renamed microservice. Yog li, thawj lub hom phiaj ntawm kev qhia microservices yog los txhim kho qhov tsis zoo sij hawm mus ua lag luam.

Microservices tau nyob rau hype nthwv dej hauv xyoo 2015. Raws li qee qhov kev tshawb fawb, tsis yog ib lub rooj sib tham tau ua tiav yam tsis muaj daim ntawv qhia txog lub ntsiab lus ntawm microservices. Ntxiv mus, qee lub rooj sib tham tau mob siab rau tshwj xeeb rau microservices. Niaj hnub no, ntau txoj haujlwm pib siv cov qauv tsim vaj tsev no, thiab yog tias qhov project muaj tons ntawm cov cai qub, ces kev tsiv teb tsaws chaw mus rau microservices tej zaum yuav ua haujlwm zoo.

Txawm hais tias tag nrho cov saum toj no, tsawg tsawg ntawm cov neeg tsim khoom tseem tuaj yeem txhais lub tswvyim ntawm "microservice". Tab sis peb yuav tham txog qhov no me ntsis tom qab ...

Monolith

Cov qauv vaj tsev uas sib txawv microservices yog monolith (los yog tag nrho-hauv-ib). Tej zaum nws yuav tsis muaj txiaj ntsig los qhia tias lub monolith yog dab tsi, yog li kuv yuav tam sim ntawd sau qhov tsis zoo ntawm cov qauv vaj tsev no, uas tau pib txhim kho ntxiv ntawm cov qauv vaj tsev: qhov loj me, kev sib txuas, kev xa tawm, scalability, kev ntseeg tau thiab rigidity. Hauv qab no kuv thov kom ua tib zoo saib ntawm txhua qhov kev tsis txaus siab sib cais.

loj

Lub monolith loj heev. Thiab nws feem ntau sib txuas lus nrog cov ntaub ntawv loj heev. Daim ntawv thov yuav loj dhau rau ib tus tsim tawm kom nkag siab txhua. Tsuas yog cov neeg uas tau siv sijhawm ntau ua haujlwm ntawm cov cai no tuaj yeem ua haujlwm zoo nrog monolith, thaum cov neeg pib tshiab yuav siv sijhawm ntau los txiav txim siab lub monolith thiab tsis muaj kev lees paub tias lawv yuav txiav txim siab. Feem ntau, thaum ua hauj lwm nrog ib tug monolith, muaj ib txwm ib co "txheej txheem" ​​cov laus uas paub lub monolith ntau dua los yog tsawg zoo thiab ntaus tes ntawm lwm yam tshiab developers nyob rau hauv ib xyoos thiab ib nrab. Lawm, xws li ib tug laus laus laus yog ib qho kev ua tsis tiav, thiab nws txoj kev tawm mus tuaj yeem ua rau tuag ntawm monolith.

Kev sib txuas

Lub monolith yog "pob loj ntawm av nkos", kev hloov pauv uas tuaj yeem ua rau muaj qhov tshwm sim tsis tau. Los ntawm kev hloov pauv hauv ib qho chaw, koj tuaj yeem ua rau lub monolith ua rau lwm qhov (tib yam "koj khawb koj pob ntseg, * @ poob tawm"). Qhov no yog vim lub fact tias lub Cheebtsam nyob rau hauv lub monolith muaj complex thiab, tseem ceeb tshaj, tsis-pom kev sib raug zoo.

Kev xa tawm

Kev siv lub monolith, vim yog kev sib raug zoo ntawm nws cov khoom, yog txheej txheem ntev nrog nws tus kheej ritual. Xws li kev cai dab qhuas feem ntau tsis yog tus qauv tag nrho thiab tau dhau los ntawm "hais lus."

Scalability

Monolith modules tuaj yeem muaj qhov tsis sib haum xeeb cov kev xav tau, yuav tsum muaj kev cuam tshuam los ntawm kev kho vajtse. Xav txog tias koj muaj lub monolith uas muaj cov kev pabcuam A thiab B. Kev Pabcuam A xav tau ntawm qhov loj ntawm lub hard drive, thiab kev pabcuam B yog xav tau ntawm RAM. Nyob rau hauv cov ntaub ntawv no, txawm lub tshuab uas lub monolith yog ntsia yuav tsum txhawb cov kev cai ntawm ob qho tib si kev pab cuam, los yog koj yuav tau manually, artificially lov tes taw ib qho ntawm cov kev pab cuam.

Lwm qhov piv txwv (ntau classic): kev pabcuam A yog qhov nrov dua li kev pabcuam B, yog li koj xav kom muaj 100 cov kev pabcuam A, thiab 10 cov kev pabcuam B. Ib zaug ntxiv, ob txoj kev xaiv: txawm tias peb xa 100 qhov kev pabcuam puv ntoob, lossis qee qhov tomqab ntawd cov kev pabcuam B yuav tsum tau ua haujlwm tsis siv neeg.

Kev ntseeg tau

Txij li thaum tag nrho cov kev pab cuam nyob ua ke, yog hais tias lub monolith ntog, ces tag nrho cov kev pab cuam poob ib zaug. Qhov tseeb, qhov no yuav tsis yog qhov phem heev, yam tsawg kawg yuav tsis muaj ib feem ua tsis tiav hauv kev faib tawm, tab sis ntawm qhov tod tes, vim muaj kab mob hauv kev ua haujlwm uas siv los ntawm 0.001% ntawm cov neeg siv, koj tuaj yeem poob tag nrho cov neeg siv. ntawm koj qhov system.

Inertia

Vim qhov loj ntawm monolith, nws nyuaj rau hloov mus rau cov thev naus laus zis tshiab. Raws li qhov tshwm sim, tuav tus neeg laus uas muaj kev mob siab rau zoo li yog ib txoj haujlwm cais. Cov txheej txheem thev naus laus zis tau xaiv thaum pib ntawm qhov project tuaj yeem dhau los ua ib qho thaiv uas cuam tshuam txoj kev loj hlob ntawm cov khoom.

xaus

Lwm zaus peb yuav tham txog yuav ua li cas tib neeg tau sim daws cov teeb meem no los ntawm kev txav mus rau cov khoom siv thiab SOA.

Kev xaiv ntawm architectural style (Part 1)

Nyeem ntxiv:

Tau qhov twg los: www.hab.com

Ntxiv ib saib