Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Kweli nqaku, ndiza kuthetha malunga nendlela iprojekthi endisebenza ngayo eguqulwe ngayo ukusuka kwi-monolith enkulu ukuya kwiseti yee-microservices.

Le projekthi yaqala imbali yayo kudala kakhulu, ekuqaleni kuka-2000. Iinguqulelo zokuqala zabhalwa kwiVisual Basic 6. Ekuhambeni kwexesha, kwacaca ukuba uphuhliso kolu lwimi kuya kuba nzima ukuxhasa kwixesha elizayo, ekubeni i-IDE kwaye ulwimi ngokwalo aluphuhliswanga kakuhle. Ekupheleni kweminyaka yoo-2000, kwagqitywa ekubeni kutshintshelwe kwi-C # ethembisayo. Inguqulo entsha yabhalwa ngokuhambelana nokuhlaziywa kwendala, ngokuthe ngcembe ikhowudi yabhalwa kwi-.NET. I-backend kwi-C # yaqale yajoliswa kwi-architecture yenkonzo, kodwa ngexesha lophuhliso, amathala eencwadi aqhelekileyo anengqiqo asetyenzisiweyo, kwaye iinkonzo zaqaliswa kwinkqubo enye. Isiphumo yaba sisicelo esasibiza ngokuba yi "monolith yenkonzo."

Enye yeenzuzo ezimbalwa zale ndibaniselwano yayikukukwazi kweenkonzo ukubizana nge-API yangaphandle. Kwakukho izinto ezifunekayo ezicacileyo zenguqu kwinkonzo echanekileyo, kwaye kwixesha elizayo, i-microservice architecture.

Saqala umsebenzi wethu wokubola malunga no-2015. Asikafiki kwindawo efanelekileyo - kusekho iinxalenye zeprojekthi enkulu engenakubizwa ngokuba yi-monoliths, kodwa ayibonakali njenge-microservices. Nakuba kunjalo, inkqubela ibalulekile.
Ndiza kuthetha ngayo kwinqaku.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Iziqulatho

Uyilo kunye neengxaki zesisombululo esikhoyo


Ekuqaleni, i-architecture ibonakala ngolu hlobo: i-UI sisicelo esahlukileyo, inxalenye ye-monolithic ibhalwe kwi-Visual Basic 6, i-.NET isicelo yiseti yeenkonzo ezihambelanayo ezisebenza ngesiseko sedatha enkulu.

Ukungalungi kwesisombululo sangaphambili

Inqaku elinye lokusilela
Sinenqaku elinye lokusilela: isicelo se.NET siqhube kwinkqubo enye. Ukuba nayiphi na imodyuli ayiphumelelanga, inkqubo yonke ayiphumelelanga kwaye kwafuneka iqalwe ngokutsha. Ekubeni sizenza ngokuzenzekelayo inani elikhulu leenkqubo zabasebenzisi abahlukeneyo, ngenxa yokungaphumeleli kwenye yazo, wonke umntu akakwazanga ukusebenza ixesha elithile. Kwaye kwimeko yempazamo yesoftware, nokuba i-backup ayizange incede.

Umgca wophuculo
Le ntsilelo yeyombutho. Isicelo sethu sinabathengi abaninzi, kwaye bonke bafuna ukusiphucula ngokukhawuleza. Ngaphambili, kwakungenakwenzeka ukwenza oku ngokufanayo, kwaye bonke abathengi bema emgceni. Le nkqubo yayingalunganga kumashishini kuba kwakufuneka babonise ukuba umsebenzi wabo ubalulekile. Kwaye iqela lophuhliso lichithe ixesha liququzelela lo mgca. Oku kuthathe ixesha elininzi kunye nomzamo, kwaye imveliso ekugqibeleni ayinakutshintsha ngokukhawuleza njengoko bebengathanda.

Ukusetyenziswa kwemithombo yobutyebi ngokufanelekileyo
Xa ubamba iinkonzo kwinkqubo enye, sihlala sikhuphela ngokupheleleyo uqwalaselo ukusuka kumncedisi ukuya kwiseva. Besifuna ukubeka ezona nkonzo zithwele kakhulu ngokwahlukeneyo ukuze singachithi izixhobo kwaye sifumane ulawulo olubhetyebhetye ngakumbi kwisikimu sethu sokusasazwa.

Kunzima ukuphumeza itekhnoloji yanamhlanje
Ingxaki eyaziwayo kubo bonke abaphuhlisi: kukho umnqweno wokwazisa iteknoloji yanamhlanje kwiprojekthi, kodwa akukho thuba. Ngesisombululo esikhulu se-monolithic, naluphi na uhlaziyo lwelayibrari yangoku, singasathethi ke ngokutshintshela kwentsha, ijika ibe ngumsebenzi ongengomsebenzi omncinci. Kuthatha ixesha elide ukubonisa inkokeli yeqela ukuba oku kuya kuzisa iibhonasi ezininzi kune-nerve elahlekileyo.

Ubunzima bokukhupha utshintsho
Le yayiyeyona ngxaki imbi kakhulu - sasikhupha ukhupho rhoqo emva kweenyanga ezimbini.
Ukukhutshwa ngakunye kwajika kwaba yintlekele yokwenyani kwibhanki, nangona uvavanyo kunye nemizamo yabaphuhlisi. Ishishini laqonda ukuba ekuqaleni kweveki ezinye zemisebenzi yazo aziyi kusebenza. Kwaye abaphuhlisi baqonda ukuba iveki yeziganeko ezinzulu zibalindile.
Wonke umntu wayenomnqweno wokutshintsha imeko.

Okulindelekileyo kwiinkonzo ezincinci


Ukukhutshwa kwamacandelo xa sele elungile. Ukuhanjiswa kwamacandelo xa ulungele ngokubola isisombululo kunye nokwahlula iinkqubo ezahlukeneyo.

Amaqela amancinci emveliso. Oku kubalulekile kuba iqela elikhulu elisebenza kwi-monolith endala kwakunzima ukuyilawula. Iqela elinjalo laphoqeleka ukuba lisebenze ngokwenkqubo engqongqo, kodwa bafuna ubuchule obuninzi kunye nokuzimela. Ngamaqela amancinane kuphela akwaziyo ukufikelela oku.

Ukwahlukaniswa kweenkonzo kwiinkqubo ezahlukeneyo. Ngokufanelekileyo, bendifuna ukuyibeka yodwa kwizikhongozeli, kodwa inani elikhulu leenkonzo ezibhalwe kwi-.NET Framework isebenza kuphela kwiWindows. Iinkonzo ezisekelwe kwi-NET Core ngoku zivela, kodwa zimbalwa zazo okwangoku.

Ukuhanjiswa bhetyebhetye. Singathanda ukudibanisa iinkonzo ngendlela esizifuna ngayo, hayi indlela ikhowudi enyanzelisa ngayo.

Ukusetyenziswa kwetekhnoloji entsha. Oku kunomdla kuye nawuphi na umdwelisi.

Iingxaki zotshintsho


Ngokuqinisekileyo, ukuba bekulula ukuphula i-monolith kwi-microservices, bekungekho mfuneko yokuthetha ngayo kwiinkomfa kwaye ubhale amanqaku. Mininzi imigibe kule nkqubo; Ndiza kuchaza eyona migibe isithinteleyo.

Ingxaki yokuqala eqhelekileyo kwiimonoliths ezininzi: ukuhambelana kwengqiqo yezoshishino. Xa sibhala i-monolith, sifuna ukuphinda sisebenzise iiklasi zethu ukuze singabhali ikhowudi engeyomfuneko. Kwaye xa ufudukela kwi-microservices, oku kuba yingxaki: yonke ikhowudi idityaniswe ngokuqinileyo, kwaye kunzima ukwahlula iinkonzo.

Ngethuba lokuqala komsebenzi, indawo yokugcina yayineeprojekthi ezingaphezu kwe-500 kunye nemigca yekhowudi engaphezu kwe-700 yamawaka. Esi sisigqibo esikhulu kwaye ingxaki yesibini. Kwakungenakwenzeka ukuyithatha nje kwaye uyahlulahlule kwiinkonzo ezincinci.

Ingxaki yesithathu β€” ukunqongophala kweziseko zophuhliso eziyimfuneko. Enyanisweni, besikhuphela ikhowudi yomthombo ngesandla kwiiseva.

Uhamba njani ukusuka kwi-monolith ukuya kwii-microservices


Ukubonelela ngeeMicroservices

Okokuqala, sazigqibela ngoko nangoko ukuba ukwahlulwa kwee-microservices yinkqubo ephindaphindwayo. Besisoloko kufuneka ukuba siphuhlise iingxaki zoshishino ngaxeshanye. Indlela esiza kuyiphumeza ngayo le ngobuchule sele iyingxaki yethu. Ngoko ke, silungiselele inkqubo yokuphindaphinda. Ayizukusebenza nangayiphi na enye indlela ukuba unesicelo esikhulu kwaye asikakulungeli ukubhalwa kwakhona.

Zeziphi iindlela esizisebenzisayo ukwahlula iinkonzo ezincinci?

Indlela yokuqala β€” hambisa iimodyuli ezikhoyo njengeenkonzo. Kulo mba, sibe nethamsanqa: kukho iinkonzo ezibhalisiweyo ezisebenzayo kusetyenziswa iprotocol yeWCF. Bahlulwa baba ziindibano ezahlukeneyo. Sazikhupha ngokwahlukeneyo, songeza isiqalisi esincinci kwisakhiwo ngasinye. Yabhalwa kusetyenziswa ithala leencwadi elimangalisayo le-Topshelf, ekuvumela ukuba usebenzise usetyenziso njengenkonzo kunye nekhonsoli. Oku kulungele ukulungisa ingxaki kuba akukho projekthi zongezelelweyo zifunekayo kwisisombululo.

Iinkonzo zixhunywe ngokwengqiqo yezoshishino, ekubeni basebenzisa iindibano eziqhelekileyo kwaye basebenza kunye nedatha eqhelekileyo. Abanakuze babizwe ngokuba zii-microservices ngohlobo lwabo olusulungekileyo. Nangona kunjalo, sinokubonelela ngezi nkonzo ngokwahlukeneyo, kwiinkqubo ezahlukeneyo. Oku kukodwa kwenza ukuba kube lula ukunciphisa impembelelo yabo komnye nomnye, ukunciphisa ingxaki ngophuhliso oluhambelanayo kunye nenqaku elilodwa lokungaphumeleli.

INdibano kunye nomninimzi ngumgca omnye wekhowudi kwiklasi yeNkqubo. Safihla umsebenzi kunye neTopshelf kwiklasi yokuncedisa.

namespace RBA.Services.Accounts.Host
{
   internal class Program
   {
      private static void Main(string[] args)
      {
        HostRunner<Accounts>.Run("RBA.Services.Accounts.Host");

       }
    }
}

Indlela yesibini yokwaba iimicroservices yile: badale ukusombulula iingxaki ezintsha. Ukuba ngexesha elifanayo i-monolith ayikhuli, le nto sele ihle kakhulu, oku kuthetha ukuba sihamba ngendlela efanelekileyo. Ukusombulula iingxaki ezintsha, sizame ukwenza iinkonzo ezahlukeneyo. Ukuba bekukho ithuba elinjalo, ngoko senze iinkonzo ezininzi "ze-canonical" ezilawula ngokupheleleyo imodeli yazo yedatha, i-database eyahlukileyo.

Thina, njengabaninzi, saqala ngeenkonzo zokuqinisekisa kunye nogunyaziso. Bagqibelele kule nto. Zizimeleyo, njengomthetho, zinemodeli yedatha eyahlukileyo. Bona ngokwabo abasebenzisani ne-monolith, kuphela ijika kubo ukusombulula iingxaki ezithile. Ukusebenzisa ezi nkonzo, unokuqalisa ukutshintshela kulwakhiwo olutsha, ukulungisa iziseko ezingundoqo kuzo, zama ezinye iindlela ezinxulumene namathala eencwadi enethiwekhi, njl. Asinawo nawaphi na amaqela kumbutho wethu angakwaziyo ukwenza inkonzo yokuqinisekisa.

Indlela yesithathu yokwaba ii-microservicesLe siyisebenzisayo icace kancinci kuthi. Oku kukususwa kwengqiqo yoshishino kuluhlu lwe-UI. Isicelo sethu esingundoqo se-UI yidesktop, yona, njenge-backend, ibhalwe kwi-C #. Abaphuhlisi ngamaxesha athile benza iimpazamo kwaye bagqithisela iinxalenye zengqiqo kwi-UI ebekumele ukuba ikhona ngasemva kwaye iphinde isetyenziswe.

Ukuba ujonga umzekelo wokwenyani ukusuka kwikhowudi yecandelo le-UI, unokubona ukuba uninzi lwesi sisombululo luqulethe ingqiqo yoshishino yokwenene eluncedo kwezinye iinkqubo, kungekhona nje ukwakha ifom ye-UI.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ingqiqo ye-UI yokwenyani ikhona kuphela kwimigca emibini yokugqibela. Siyidlulisele kwiseva ukuze iphinde isetyenziswe, ngaloo ndlela sinciphisa i-UI kwaye sifezekisa uyilo oluchanekileyo.

Indlela yesine kunye neyona nto ibalulekileyo yokwahlula ii-microservices, okwenza kube lula ukunciphisa i-monolith, ukususwa kweenkonzo ezikhoyo ngokucutshungulwa. Xa sithatha iimodyuli ezikhoyo njengoko zinjalo, isiphumo asisoloko sithandwa ngabaphuhlisi, kwaye inkqubo yeshishini inokuba iphelelwe lixesha ukusukela oko kwenziwa umsebenzi. Ngokuhlengahlengisa, sinokuxhasa inkqubo entsha yeshishini kuba iimfuno zeshishini zihlala zitshintsha. Sinokuyiphucula ikhowudi yomthombo, sisuse iziphene ezaziwayo, kwaye senze imodeli engcono yedatha. Zininzi izibonelelo ezifumanekayo.

Ukwahlula iinkonzo ekuqhubeni kuqhagamshelwe ngokungenakuhluzwa kwingqikelelo yomxholo odaliweyo. Lo ngumbono ovela kwiDomain Driven Design. Kuthetha icandelo lesizinda somzekelo apho yonke imiqathango yolwimi olunye ichazwa ngokukodwa. Makhe sijonge umxholo we-inshurensi kunye namatyala njengomzekelo. Sinesicelo se-monolithic, kwaye kufuneka sisebenze ne-akhawunti kwi-inshurensi. Silindele ukuba umphuhlisi afumane i-Akhawunti yeklasi esele ikhona kwenye indibano, ayibhekise kwiklasi ye-Inshurensi, kwaye siya kuba nekhowudi yokusebenza. Umgaqo we-DRY uya kuhlonishwa, umsebenzi uya kwenziwa ngokukhawuleza ngokusebenzisa ikhowudi ekhoyo.

Ngenxa yoko, kuvela ukuba iimeko zeeakhawunti kunye ne-inshurensi zixhunyiwe. Njengoko iimfuno ezintsha zivela, oku kudityaniswa kuya kuphazamisana nophuhliso, kwandisa ubunzima bengqiqo yeshishini esele inzima. Ukuxazulula le ngxaki, kufuneka ufumane imida phakathi kweemeko kwikhowudi kwaye ususe ukuphulwa kwazo. Ngokomzekelo, kumxholo we-inshurensi, kunokwenzeka ukuba inombolo ye-akhawunti yeBhanki eyi-20 kunye nomhla wokuvulwa kwe-akhawunti iya kwanela.

Ukwahlula le mixholo edibeneyo ukusuka komnye nomnye kwaye siqale inkqubo yokwahlula i-microservices kwisisombululo se-monolithic, sasebenzisa indlela efana nokudala ii-API zangaphandle ngaphakathi kwesicelo. Ukuba besisazi ukuba enye imodyuli kufuneka ibeyinkonzo encinci, ngandlel’ ithile ilungiswe ngaphakathi kwenkqubo, ngoko ngoko nangoko safowunela kwingqiqo eyenye imeko elinganiselweyo ngeefowuni zangaphandle. Umzekelo, nge-REST okanye i-WCF.

Sagqiba ngokuqinileyo ukuba asiyi kukuphepha ikhowudi eya kufuna ukuthengiselana ngokusasazwa. Kwimeko yethu, kuye kwaba lula ukulandela lo mgaqo. Asikadibani neemeko apho utshintshiselwano olungqongqo lufuneka ngokwenene - ukuhambelana kokugqibela phakathi kweemodyuli kwanele.

Makhe sijonge umzekelo othile. Sinombono weokhestra - umbhobho oqhuba iqumrhu "lesicelo". Udala umxhasi, i-akhawunti kunye nekhadi lebhanki ngokulandelelana. Ukuba umxhasi kunye ne-akhawunti yenziwe ngempumelelo, kodwa ukudalwa kwekhadi akuphumeleli, isicelo asihambi kwisimo "esiphumeleleyo" kwaye sihlala "kwikhadi elingadalwanga". Kwixesha elizayo, umsebenzi ongasemva uya kuwuthatha kwaye uwugqibe. Inkqubo ikwimo yokungahambelani kangangexesha elithile, kodwa ngokubanzi sanelisekile koku.

Ukuba kuvela imeko xa kuyimfuneko ukugcina inxalenye yedatha ngokungaguqukiyo, sinokuya ekuhlanganiseni inkonzo ukuze siyiqhube kwinkqubo enye.

Makhe sijonge umzekelo wokwabiwa kwenkonzo encinci. Ungayizisa njani imveliso ngokukhuselekileyo noko? Kulo mzekelo, sinenxalenye eyahlukileyo yenkqubo - imodyuli yenkonzo yokuhlawula, enye yamacandelo ekhowudi esingathanda ukwenza i-microservice.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Okokuqala, senza i-microservice ngokubhala kwakhona ikhowudi. Siphucula imiba ethile ebesingonwabanga yiyo. Siphumeza iimfuno zeshishini elitsha kumthengi. Songeza iSango le-API kunxibelelwano phakathi kwe-UI kunye ne-backend, eya kubonelela ngokuthumela umnxeba.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Okulandelayo, sikhulula olu lungelelwaniso lusebenze, kodwa kwimeko yokulinga. Uninzi lwabasebenzisi bethu basasebenza kunye neenkqubo zeshishini elidala. Kubasebenzisi abatsha, siphuhlisa inguqulelo entsha yesicelo se-monolithic esingasaqulathanga le nkqubo. Ngokusisiseko, sinendibaniselwano ye-monolith kunye ne-microservice esebenza njengomqhubi wenqwelomoya.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ngomqhubi ophumeleleyo, siyaqonda ukuba ulungelelwaniso olutsha lusebenza ngokwenene, sinokususa i-monolith endala kwi-equation kwaye sishiye ulungelelwaniso olutsha endaweni yesisombululo esidala.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Lilonke, sisebenzisa phantse zonke iindlela ezikhoyo zokwahlula ikhowudi yomthombo we-monolith. Zonke zisivumela ukuba sinciphise ubungakanani beendawo zesicelo kwaye siziguqulele kumathala eencwadi amatsha, senze ikhowudi yomthombo engcono.

Ukusebenza kunye nedathabheyisi


I-database inokwahlulwa ibe yimbi ngakumbi kunekhowudi yomthombo, kuba ayiqukethe kuphela i-schema yangoku, kodwa kunye nedatha yembali eqokelelweyo.

I-database yethu, njengabanye abaninzi, yayinenye i-drawback ebalulekileyo - ubukhulu bayo obukhulu. Lo vimba weenkcukacha wayilwa ngokwengqiqo yeshishini elintsonkothileyo le-monolith, kunye nobudlelwane obuqokelelweyo phakathi kweetheyibhile zemixholo eyahlukeneyo ebophelelekileyo.

Kwimeko yethu, phezulu zonke iingxaki (idatha enkulu, uxhulumaniso oluninzi, ngamanye amaxesha imida engacacanga phakathi kweetafile), kwavela ingxaki eyenzeka kwiiprojekthi ezininzi ezinkulu: ukusetyenziswa kwethemplate yedatha ekwabelwana ngayo. Idatha yathathwa kwiitheyibhile ngokujonga, ngokuphindaphinda, kwaye yathunyelwa kwezinye iinkqubo apho oku kuphindaphindwa kwakudingeka khona. Ngenxa yoko, asikwazanga ukususa iitheyibhile kwi-schema eyahlukileyo kuba bezisetyenziswa ngokusebenzayo.

Ukwahlula okufanayo kwiimeko ezilinganiselweyo kwikhowudi kusinceda ngokuhlukana. Ihlala isinika umbono olungileyo wokuba siqhekeza njani idatha kwinqanaba ledatha. Siyaziqonda ukuba zeziphi iitheyibhile ezizezomxholo omnye kwaye zeziphi kwenye.

Sisebenzise iindlela ezimbini zehlabathi zokwahlulahlula kwesiseko sedatha: ukwahlulahlula iitafile ezikhoyo kunye nokwahlulahlula ngokulungiswa.

Ukwahlula iitafile esele zikho yindlela elungileyo yokusebenzisa ukuba ulwakhiwo lwedatha lulungile, luyahlangabezana neemfuno zoshishino, kwaye wonke umntu uyakuvuyela oko. Kule meko, sinokwahlula iitafile ezikhoyo kwi-schema eyahlukileyo.

Isebe elinokucubungula liyafuneka xa imodeli yeshishini itshintshile kakhulu, kwaye iitafile azisasanelisi konke konke.

Ukwahlula iitafile ezikhoyo. Kufuneka sigqibe ngento esiya kwahlula ngayo. Ngaphandle kolu lwazi, akukho nto iya kusebenza, kwaye apha ukuhlukana kweemeko ezinqamlekileyo kwikhowudi kuya kusinceda. Njengomthetho, ukuba unokuqonda imida yeemeko kwikhowudi yomthombo, kuyacaca ukuba zeziphi iitheyibhile kufuneka zifakwe kuluhlu lwesebe.

Makhe sicinge ukuba sinesisombululo apho iimodyuli ezimbini ze-monolith zisebenzisana nedatha enye. Kufuneka siqinisekise ukuba imodyuli enye kuphela isebenzisana necandelo leetafile ezihlukeneyo, kwaye enye iqala ukusebenzisana nayo nge-API. Ukuqala, kwanele ukuba ukurekhoda kuphela kwenziwa nge-API. Le yimeko efunekayo ukuba sithethe ngokuzimela kwee-microservices. Uqhagamshelwano lokufunda lunokuhlala logama nje kungekho ngxaki inkulu.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Isinyathelo esilandelayo kukuba sinokuhlula icandelo lekhowudi elisebenza kunye neetafile ezihlukeneyo, kunye okanye ngaphandle kokucubungula, kwi-microservice eyahlukileyo kwaye siyiqhube kwinkqubo eyahlukileyo, isitya. Oku kuya kuba yinkonzo eyahlukileyo kunye noqhagamshelo kwisiseko sedatha se-monolith kunye nezo zitheyibhile ezingahambelani ngqo nayo. I-monolith isanxibelelana ukuze kufundwe kunye nenxalenye esuswayo.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Kamva siya kususa olu xhulumaniso, oko kukuthi, ukufunda idatha kwisicelo se-monolithic kwiitheyibhile ezihlukanisiweyo nazo ziya kudluliselwa kwi-API.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Okulandelayo, siya kukhetha kwisiseko sedatha ngokubanzi iitafile apho kuphela i-microservice entsha isebenza. Sinokuhambisa iitafile kwi-schema eyahlukileyo okanye nakwisiseko sedatha eyahlukileyo. Kusekho unxibelelwano lokufunda phakathi kwe-microservice kunye ne-database ye-monolith, kodwa akukho nto yakuzikhathaza ngayo, kolu qwalaselo inokuphila ixesha elide.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Isinyathelo sokugqibela kukususa ngokupheleleyo zonke iindibano. Kule meko, sinokudinga ukufuduka idatha kwisiseko sedatha engundoqo. Ngamanye amaxesha sifuna ukuphinda sisebenzise ezinye iinkcukacha okanye abalawuli abaphinda-phinda kwiinkqubo zangaphandle koovimba beenkcukacha abaninzi. Oku kwenzeka kuthi ngamaxesha athile.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Isebe lokulungisa. Le ndlela ifana kakhulu neyokuqala, kuphela ngokulandelelana kwe-reverse. Ngokukhawuleza sinikezela i-database entsha kunye ne-microservice entsha esebenzisana ne-monolith nge-API. Kodwa kwangaxeshanye, kukho isethi yeetafile zedatha esifuna ukuyicima kwixesha elizayo. Asisayidingi; siyitshintshele kwimodeli entsha.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ukuze esi sikimu sisebenze, siya kufuna ixesha lotshintsho.

Kukho iindlela ezimbini ezinokwenzeka.

Eyokuqala: siphindaphinda yonke idatha kwiziko ledatha elitsha nelidala. Kule meko, sinokuphinda-phinda kwakhona kwedatha kunye neengxaki zongqamaniso ezinokuvela. Kodwa sinokuthatha abaxhasi ababini abahlukeneyo. Omnye uya kusebenza nenguqulelo entsha, enye nendala.

Okwesibini: sahlula idata ngokwemigaqo ethile yeshishini. Ngokomzekelo, sasinemveliso ye-5 kwinkqubo egcinwe kwi-database endala. Sibeka eyesithandathu ngaphakathi komsebenzi omtsha weshishini kwisiseko sedatha entsha. Kodwa siya kufuna i-API Gateway eya kulungelelanisa le datha kwaye ibonise umxhasi apho kwaye ufumane ntoni.

Zombini iindlela ziyasebenza, khetha ngokuxhomekeke kwimeko.

Emva kokuba siqinisekile ukuba yonke into isebenza, inxalenye ye-monolith esebenza kunye nezakhiwo zedatha endala inokukhutshazwa.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Isinyathelo sokugqibela kukususa izakhiwo zedatha endala.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ukushwankathela, sinokuthi sineengxaki ngesiseko sedatha: kunzima ukusebenzisana nayo xa kuthelekiswa nekhowudi yomthombo, kunzima ukwabelana, kodwa kunokwenziwa kwaye kufuneka kwenziwe. Sifumene iindlela ezisivumela ukuba senze oku ngokukhuselekileyo, kodwa kuselula ukwenza iimpazamo ngedatha kunekhowudi yemvelaphi.

Ukusebenza ngekhowudi yomthombo


Yiloo nto umzobo wekhowudi yomthombo wawubukeka ngathi xa siqala ukuhlalutya iprojekthi ye-monolithic.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Inokwahlulwa ngokurhabaxa ibe ngamacandelo amathathu. Olu luluhlu lweemodyuli eziqalisiwe, iiplagi, iinkonzo kunye nemisebenzi yomntu ngamnye. Enyanisweni, ezi yayiziindawo zokungena ngaphakathi kwesisombululo se-monolithic. Onke ke ayetywinwe ngokuqinileyo ngoMaleko oLulekileyo. Yayinengqiqo yoshishino ukuba iinkonzo zabelana kunye noqhagamshelwano oluninzi. Inkonzo nganye kunye ne-plugin esetyenziselwa ukuya kwii-10 okanye ngaphezulu kweendibano eziqhelekileyo, kuxhomekeke kubukhulu bazo kunye nesazela sabaphuhlisi.

Sibe nethamsanqa lokuba namathala eencwadi asisiseko anokusetyenziswa ngokwahlukeneyo.

Ngamanye amaxesha kuye kwakho imeko xa ezinye izinto eziqhelekileyo zingekho kweli nqanaba, kodwa zingamathala eencwadi. Oku kwasonjululwa ngokuthi uthiywe ngokutsha.

Eyona nkxalabo inkulu yayiziimeko ezisikelwe umda. Kwenzekile ukuba iimeko ze-3-4 zixutywe kwindibano enye eqhelekileyo kwaye zisebenzise omnye nomnye ngaphakathi kwemisebenzi efanayo yoshishino. Kwakuyimfuneko ukuqonda ukuba oku kunokwahlulwa phi kwaye kugudiswe yeyiphi imida, kunye nento emayenziwe ngokulandelayo ngokwenza imephu yolu lwahlulo kwiindibano zekhowudi yomthombo.

Siye saqulunqa imithetho emininzi yenkqubo yokwahlula ikhowudi.

Eyokuqala: Sasingasafuni ukwabelana ngengqiqo yezoshishino phakathi kweenkonzo, imisebenzi kunye neeplagi. Besifuna ukwenza ingqiqo yeshishini izimele ngaphakathi kwee-microservices. Ii-Microservices, kwelinye icala, zicingelwa ngokufanelekileyo njengeenkonzo ezikhoyo ngokuzimeleyo. Ndiyakholelwa ukuba le ndlela yinkcitho, kwaye kunzima ukuyifumana, kuba, umzekelo, iinkonzo kwi-C # ziya kuthi kuyo nayiphi na imeko idibaniswe yilayibrari eqhelekileyo. Inkqubo yethu ibhalwe kwi-C#; asikasebenzisi obunye ubuchwephesha. Ngoko ke, sagqiba kwelokuba singakwazi ukusebenzisa iindibano eziqhelekileyo zobugcisa. Into ephambili kukuba aziqulathanga naziphi na iziqwenga zeengcinga zeshishini. Ukuba unesisongelo esiluncedo ngaphezulu kweORM oyisebenzisayo, ngoko ukuyikhuphela ukusuka kwinkonzo ukuya kwinkonzo kubiza kakhulu.

Iqela lethu lithanda uyilo oluqhutywa yi-domain, ngoko ke uyilo lwetswele lwalusilungele. Isiseko seenkonzo zethu akusiyo i-data access layer, kodwa indibano ene-domain logic, equlethe ingqiqo yezoshishino kuphela kwaye ingenalo unxibelelwano kunye neziseko. Ngexesha elifanayo, sinokuzimela ngokuzimeleyo i-domain assembly ukuxazulula iingxaki ezinxulumene nezicwangciso.

Kweli nqanaba siye sadibana nengxaki yethu yokuqala enkulu. Inkonzo kwafuneka ibhekiselele kwindibano yesizinda esinye, sifuna ukwenza i-logic izimele, kwaye umgaqo we-DRY wasithintela kakhulu apha. Abaphuhlisi bafuna ukuphinda basebenzise iiklasi ezisuka kwiindibano ezingabamelwane ukunqanda ukuphindaphinda, kwaye ngenxa yoko, iindawo zaqala ukudityaniswa kwakhona. Sihlalutye iziphumo kwaye sagqiba ekubeni mhlawumbi ingxaki ikwakummandla wesixhobo sokugcina ikhowudi yomthombo. Sasinovimba omkhulu oqulethe yonke ikhowudi yomthombo. Isisombululo salo msebenzi wonke sasinzima kakhulu ukudibanisa kumatshini wasekuhlaleni. Ke ngoko, izisombululo ezincinci ezahlukileyo zenzelwe iinxalenye zeprojekthi, kwaye akukho namnye owalela ukongeza indibano eqhelekileyo okanye yesizinda kubo kwaye baphinde bayisebenzise. Isixhobo kuphela esingasivumelanga ukuba senze oku kuphononongo lwekhowudi. Kodwa ngamanye amaxesha nayo yasilela.

Emva koko saqala ukufudukela kwimodeli eneendawo zokugcina ezahlukeneyo. Ingqiqo yeShishini ayisaqhubeki ukusuka kwinkonzo ukuya kwinkonzo, imimandla iye yazimele ngokwenene. Iimeko ezisikelwe umda zixhaswa ngokucacileyo ngakumbi. Siwasebenzisa njani kwakhona amathala eencwadi asisiseko? Sazahlula kwindawo yokugcina eyahlukileyo, emva koko sizifaka kwiiphakheji ze-Nuget, esizifaka kwi-Artifactory. Ngalo naluphi na utshintsho, ukudibanisa kunye nokupapashwa kwenzeka ngokuzenzekelayo.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Iinkonzo zethu zaqala ukubhekisa iipakethe zeziseko ezingundoqo zangaphakathi ngendlela efanayo neyangaphandle. Sikhuphela iilayibrari zangaphandle kwi-Nuget. Ukusebenza kunye ne-Artifactory, apho sibeke khona ezi phakheji, sasebenzisa abaphathi beephakheji ezimbini. Kwiindawo ezincinci zokugcina sasebenzisa i-Nuget. Kwiindawo zokugcina ezineenkonzo ezininzi, sisebenzise i-Paket, ebonelela ngakumbi ngokuhambelana kweemodyuli.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ngaloo ndlela, ngokusebenza kwikhowudi yomthombo, ukutshintsha kancinci i-architecture kunye nokwahlula iindawo zokugcina, senza iinkonzo zethu zizimele ngakumbi.

Iingxaki zeziseko zophuhliso


Uninzi lwezinto eziphantsi zokufudukela kwiinkonzo ezincinci zinxulumene neziseko zophuhliso. Uya kufuna ukusasazwa okuzenzekelayo, uya kufuna amathala eencwadi amatsha ukuqhuba iziseko zophuhliso.

Ufakelo lwezandla kwiindawo

Ekuqaleni, safakela isisombululo seendawo ngokusingqongileyo ngesandla. Ukuzenzekelayo le nkqubo, senze umbhobho we-CI / CD. Sikhethe inkqubo yonikezelo oluqhubekayo ngenxa yokuba ukuthunyelwa ngokuqhubekayo akukamkelekanga kuthi ngokwembono yeenkqubo zoshishino. Ngoko ke, ukuthumela ukusebenza kuqhutyelwa ngokusebenzisa iqhosha, kunye nokuvavanya - ngokuzenzekelayo.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Sisebenzisa i-Atlassian, i-Bitbucket yokugcina ikhowudi yomthombo kunye ne-Bamboo yokwakha. Sithanda ukubhala imibhalo yokwakha kwiCake kuba iyafana neC #. Iiphakheji ezisele zilungile ziza kwi-Artifactory, kwaye i-Ansible ifika ngokuzenzekelayo kwiiseva zovavanyo, emva koko zinokuvavanywa ngokukhawuleza.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ukwahlula ukugawulwa kwemithi


Ngesinye isikhathi, enye yeengcamango ze-monolith yayikubonelela ngokugawulwa kwemithi ekwabelwana ngayo. Kwakhona kwakufuneka siqonde into emasiyenze ngeelog nganye ezikwiidiski. Iilogi zethu zibhalwe kwiifayile ezibhaliweyo. Sagqiba ekubeni sisebenzise istaki esiqhelekileyo se-ELK. Asizange sibhalele i-ELK ngokuthe ngqo ngababoneleli, kodwa sagqiba ekubeni siza kuguqula iilogi zetekisi kwaye sibhale i-ID yokulandela umkhondo kubo njengesazisi, songeza igama lenkonzo, ukuze ezi zigodo zihlanjululwe kamva.

Utshintsho ukusuka kwi-monolith ukuya kwi-microservices: imbali kunye nokusebenza

Ukusebenzisa iFayilebeat, sifumana ithuba lokuqokelela iilogi zethu kwiiseva, emva koko siziguqule, sisebenzise i-Kibana ukwakha imibuzo kwi-UI kwaye sibone indlela umnxeba ohambe ngayo phakathi kweenkonzo. I-ID yokulandelela inceda kakhulu ngale nto.

Uvavanyo kunye nokulungiswa kweenkonzo ezinxulumeneyo


Ekuqaleni, asizange siyiqonde ngokupheleleyo indlela yokucoca iinkonzo eziphuhliswayo. Yonke into yayilula nge-monolith; sasiyiqhuba kumatshini wasekhaya. Ekuqaleni bazama ukwenza okufanayo nge-microservices, kodwa ngamanye amaxesha ukuqalisa ngokupheleleyo i-microservice enye kufuneka uqalise ezinye ezininzi, kwaye oku akuncedi. Siye saqaphela ukuba kufuneka sifudukele kwimodeli apho sishiya kumatshini wendawo kuphela inkonzo okanye iinkonzo esifuna ukuzilungisa. Iinkonzo ezishiyekileyo zisetyenziswa kwiiseva ezihambelana noqwalaselo kunye nemveliso. Emva kokulungiswa kweempazamo, ngexesha lokuvavanya, kumsebenzi ngamnye, kuphela iinkonzo ezitshintshileyo zinikezelwa kumncedisi wokuvavanya. Ngaloo ndlela, isisombululo sivavanywa ngendlela eya kubonakala ngayo kwimveliso kwixesha elizayo.

Kukho iiseva eziqhuba kuphela iinguqulelo zemveliso yeenkonzo. Ezi seva ziyafuneka kwimeko yeziganeko, ukujonga ukuhanjiswa ngaphambi kokuthunyelwa kunye noqeqesho lwangaphakathi.

Songeze inkqubo yovavanyo oluzenzekelayo usebenzisa ithala leencwadi elidumileyo leSpecflow. Iimvavanyo ziqhuba ngokuzenzekelayo zisebenzisa i-NUnit ngoko nangoko emva kokuthunyelwa kwi-Ansible. Ukuba i-coverage yomsebenzi izenzekela ngokupheleleyo, ngoko akukho mfuneko yovavanyo lwezandla. Nangona ngamanye amaxesha uvavanyo olongezelelweyo lwezandla lusafuneka. Sisebenzisa iithegi kwiJira ukumisela ukuba loluphi uvavanyo ekufuneka silwenze kumcimbi othile.

Ukongeza, imfuno yovavanyo lomthwalo inyukile; ngaphambili ibiqhutywa kuphela kwiimeko ezinqabileyo. Sisebenzisa i-JMeter ukuqhuba iimvavanyo, i-InfluxDB ukuzigcina, kunye neGrafana ukwakha iigrafu zenkqubo.

Siphumelele ntoni?


Okokuqala, siye sayilahla ingcamango "yokukhululwa". Zimkile iinyanga ezimbini ezikhutshiweyo xa le colossus yafakwa kwindawo yemveliso, iphazamisa okwethutyana iinkqubo zoshishino. Ngoku sihambisa iinkonzo ngokomndilili rhoqo ngeentsuku ezi-1,5, sizibeka ngokwamaqela kuba ziqala ukusebenza emva kokuvunywa.

Akukho zintsilelo ezibulalayo kwinkqubo yethu. Ukuba sikhulula i-microservice nge-bug, ngoko ukusebenza okuhambelana nayo kuya kwaphulwa, kwaye zonke ezinye izinto zokusebenza aziyi kuchaphazeleka. Oku kuphucula kakhulu amava omsebenzisi.

Singakwazi ukulawula ipateni yokuthunyelwa. Unokukhetha amaqela eenkonzo ngokwahlukileyo kwesinye isisombululo, ukuba kuyimfuneko.

Ukongeza, siyinciphise kakhulu ingxaki ngomgca omkhulu wokuphucula. Ngoku sinamaqela emveliso ahlukeneyo asebenza nezinye iinkonzo ngokuzimeleyo. Inkqubo yeSkram sele ilungile apha. Iqela elithile linokuba noMnini weMveliso owahlukileyo olinika imisebenzi.

Isishwankathelo

  • Iinkonzo ezincinci zeMicroservices zilungele ukubola kweenkqubo ezinzima. Kwinkqubo, siqala ukuqonda into ekhoyo kwinkqubo yethu, yeyiphi imeko elinganiselweyo ekhoyo, apho imida yabo ilele. Oku kukuvumela ukuba usasaze ngokuchanekileyo ukuphuculwa phakathi kweemodyuli kunye nokuthintela ukudideka kwekhowudi.
  • Iinkonzo ezincinci zibonelela ngeenzuzo zombutho. Zihlala zithethwa kuphela njengezakhiwo, kodwa nayiphi na i-architecture iyadingeka ukuxazulula iimfuno zoshishino, kwaye kungekhona ngokwayo. Ke ngoko, sinokuthi ii-microservices zilungele ukusombulula iingxaki kumaqela amancinci, njengoko iScrum ithandwa kakhulu ngoku.
  • Ukwahlukana yinkqubo ephindaphindwayo. Awunakuthatha isicelo kwaye ukwahlule ngokulula kwiinkonzo ezincinci. Imveliso ebangelwayo ayinakwenzeka ukuba isebenze. Xa unikezela ngee-microservices, kunenzuzo ukuphinda ubhale ilifa elikhoyo, oko kukuthi, ukulijika libe yikhowudi esiyithandayo kwaye ihlangabezana kangcono neemfuno zeshishini malunga nokusebenza kunye nesantya.

    Isilumkiso esincinci: Iindleko zokufudukela kwiinkonzo ezincinci zibaluleke kakhulu. Kuthathe ixesha elide ukusombulula ingxaki yeziseko zophuhliso kuphela. Ke ukuba unesicelo esincinci esingafunekiyo ukukala ngokuthe ngqo, ngaphandle kokuba unenani elikhulu labathengi abakhuphisanayo neqela lakho lokuhoya kunye nexesha, ke ii-microservices zisenokungabi yile nto uyidingayo namhlanje. Ibiza kakhulu. Ukuba uqala inkqubo kunye ne-microservices, ngoko iindleko ziya kuqala zibe phezulu kunokuba uqale iprojekthi efanayo kunye nophuhliso lwe-monolith.

    I-PS Ibali elinovakalelo olungakumbi (kwaye ngokungathi nguwe buqu) - ngokutsho unxibelelwano.
    Nalu uguqulelo olupheleleyo lwengxelo.

umthombo: www.habr.com

Yongeza izimvo