Kulesi sihloko, ngizokhuluma ngokuthi iphrojekthi engisebenza kuyo iguqulwe kanjani isuka ku-monolith enkulu yaba isethi yama-microservices.
Le phrojekthi yaqala umlando wayo kudala impela, ekuqaleni kuka-2000. Izinguqulo zokuqala zabhalwa nge-Visual Basic 6. Ngokuhamba kwesikhathi, kwacaca ukuthi ukuthuthukiswa kwalolu limi kuzoba nzima ukusekela esikhathini esizayo, kusukela i-IDE kanti nolimi ngokwalo aluthuthukisiwe kahle. Ekupheleni kweminyaka yawo-2000, kwanqunywa ukuthi kushintshelwe ku-C# ethembisa kakhulu. Inguqulo entsha yabhalwa ngokuhambisana nokubuyekezwa kwendala, kancane kancane yabhalwa ikhodi eyengeziwe ku-.NET. I-backend ku-C# ekuqaleni yayigxile ekwakhiweni kwesevisi, kodwa ngesikhathi sokuthuthukiswa, kwasetshenziswa imitapo yolwazi evamile enengqondo, futhi izinsizakalo zethulwa ngenqubo eyodwa. Umphumela waba uhlelo esilubize ngokuthi βisevisi ye-monolith.β
Enye yezinzuzo ezimbalwa zale nhlanganisela kwaba ikhono lezinsizakalo ukubizana nge-API yangaphandle. Kube nezimfuneko ezicacile zokushintshela kusevisi elungile, futhi ngokuzayo, i-microservice architecture.
Saqala umsebenzi wethu wokubola cishe ngo-2015. Asikafinyeleli esimweni esifanele - kusenezingxenye zephrojekthi enkulu engakwazi ukubizwa ngokuthi i-monoliths, kodwa ayibukeki njengama-microservices. Noma kunjalo, intuthuko ibalulekile.
Ngizokhuluma ngakho esihlokweni.
Okuqukethwe
Izakhiwo kanye nezinkinga zesixazululo esikhona Okulindelekile kusuka kuma-microservices Izinkinga zoshintsho -
Ungasuka kanjani ku-monolith uye kuma-microservices Ukusebenza nge-database Ukusebenza ngekhodi yomthombo Izinkinga zengqalasizinda
Izakhiwo kanye nezinkinga zesixazululo esikhona
Ekuqaleni, i-architecture yayibukeka kanje: i-UI iyisicelo esihlukile, ingxenye ye-monolithic ibhalwe ku-Visual Basic 6, uhlelo lokusebenza lwe-NET luyisethi yamasevisi ahlobene asebenza nge-database enkulu kakhulu.
Ukungalungi kwesixazululo sangaphambilini
Iphuzu elilodwa lokwehluleka
Sibe nephuzu elilodwa lokwehluleka: uhlelo lokusebenza lwe-NET lusebenze ngenqubo eyodwa. Uma noma iyiphi imojuli yehlulekile, lonke uhlelo lokusebenza lwehlulekile futhi kudingeke ukuthi luqalwe kabusha. Njengoba senza inani elikhulu lezinqubo ngokuzenzakalelayo kubasebenzisi abahlukene, ngenxa yokwehluleka kokukodwa kwabo, wonke umuntu akakwazanga ukusebenza isikhathi esithile. Futhi uma kwenzeka iphutha lesofthiwe, ngisho nekhophi yasenqolobaneni ayizange isize.
Umugqa wokuthuthukiswa
Lesi sici sihambisana nenhlangano. Uhlelo lwethu lokusebenza linamakhasimende amaningi, futhi wonke afuna ukulithuthukisa ngokushesha okukhulu. Ngaphambili, kwakungenakwenzeka ukwenza lokhu ngokuhambisana, futhi wonke amakhasimende ayema ββemgqeni. Le nqubo yayingeyinhle emabhizinisini ngoba bekufanele bakhombise ukuthi umsebenzi wabo ubalulekile. Futhi ithimba labathuthukisi lichithe isikhathi lihlela lo mugqa. Lokhu kuthathe isikhathi esiningi nomzamo, futhi umkhiqizo ekugcineni awukwazanga ukushintsha ngokushesha ngendlela abebengathanda ngayo.
Ukusetshenziswa kwezinsiza ngokufanele
Lapho ibamba izinsizakalo ngenqubo eyodwa, sasihlala sikopisha ngokuphelele ukucushwa kusuka kuseva kuya kuseva. Besifuna ukubeka izinsiza ezilayishwe kakhulu ngokwehlukana ukuze singamoshi izinsiza futhi sithole ukulawula okuvumelana nezimo kuhlelo lwethu lokuthunyelwa.
Kunzima ukusebenzisa ubuchwepheshe besimanje
Inkinga eyaziwa kubo bonke abathuthukisi: kunesifiso sokwethula ubuchwepheshe besimanje kuphrojekthi, kodwa alikho ithuba. Ngesixazululo esikhulu se-monolithic, noma yikuphi ukubuyekezwa komtapo wolwazi wamanje, ingasaphathwa eyokushintshela kwentsha, iphenduka ibe umsebenzi ongewona omncane. Kuthatha isikhathi eside ukufakazela kumholi weqembu ukuthi lokhu kuzoletha amabhonasi amaningi kunemizwa emoshiwe.
Ubunzima bokukhipha izinguquko
Lokhu bekuyinkinga enkulu kakhulu - besikhipha ukukhishwa njalo ezinyangeni ezimbili.
Ukukhishwa ngakunye kuphenduke inhlekelele yangempela ebhange, naphezu kokuhlolwa nemizamo yonjiniyela. Ibhizinisi beliqonda ukuthi ekuqaleni kwesonto ukusebenza kwalo bekungeke kusebenze. Futhi abathuthukisi baqonda ukuthi isonto lezehlakalo ezimbi zazibalindile.
Wonke umuntu wayenesifiso sokushintsha isimo.
Okulindelekile kusuka kuma-microservices
Ukukhishwa kwezingxenye uma isilungile. Ukulethwa kwezingxenye uma usulungile ngokubola isixazululo nokuhlukanisa izinqubo ezahlukene.
Amaqembu emikhiqizo emincane. Lokhu kubalulekile ngoba iqembu elikhulu elisebenza ku-monolith endala bekunzima ukuliphatha. Iqembu elinjalo laphoqeleka ukuba lisebenze ngokuvumelana nenqubo eqinile, kodwa lalifuna ubuciko obuningi nokuzimela. Amaqembu amancane kuphela abekwazi ukukukhokhela lokhu.
Ukuhlukaniswa kwezinsizakalo ngezinqubo ezihlukene. Ngokufanelekile, bengifuna ukukuhlukanisa ezitsheni, kodwa inombolo enkulu yezinsizakalo ezibhalwe ku-.NET Framework isebenza kuphela ku-Windows. Amasevisi asekelwe ku-NET Core ayavela manje, kodwa asekhona ambalwa.
Ukuvumelana nezimo. Singathanda ukuhlanganisa izinsiza ngendlela esizidinga ngayo, hhayi ngendlela ikhodi ephoqa ngayo.
Ukusetshenziswa kobuchwepheshe obusha. Lokhu kuyathakazelisa kunoma yimuphi umhleli.
Izinkinga zoshintsho
Yiqiniso, uma bekulula ukuphula i-monolith ibe yi-microservices, bekungeke kube nesidingo sokukhuluma ngakho ezingqungqutheleni nokubhala izihloko. Ziningi izingibe kule nqubo; ngizochaza ezinkulu ezisikhinyabeze.
Inkinga yokuqala okujwayelekile kuma-monoliths amaningi: ukuhambisana komqondo webhizinisi. Uma sibhala i-monolith, sifuna ukuphinda sisebenzise amakilasi ethu ukuze singabhali ikhodi engadingekile. Futhi lapho uthuthela kuma-microservices, lokhu kuba yinkinga: yonke ikhodi ihlanganiswe ngokuqinile, futhi kunzima ukuhlukanisa izinsizakalo.
Ngesikhathi sokuqala komsebenzi, inqolobane yayinamaphrojekthi angaphezu kuka-500 kanye nemigqa yekhodi engaphezu kwezinkulungwane ze-700. Lesi yisinqumo esikhulu futhi inkinga yesibili. Kwakungenakwenzeka ukuvele uyithathe futhi uyihlukanise ibe ngama-microservices.
Inkinga yesithathu - ukuntuleka kwengqalasizinda edingekayo. Eqinisweni, besikopisha mathupha ikhodi yomthombo kumaseva.
Ungasuka kanjani ku-monolith uye kuma-microservices
Ukuhlinzeka ngama-Microservices
Okokuqala, sazinqumela ngokushesha ukuthi ukuhlukaniswa kwama-microservices kuyinqubo ephindaphindayo. Kwakudingeka njalo ukuthi sithuthukise izinkinga zebhizinisi ngokuhambisana. Ukuthi sizokusebenzisa kanjani lokhu ngokobuchwepheshe kakade inkinga yethu. Ngakho-ke, silungiselele inqubo ephindaphindayo. Ngeke isebenze nganoma iyiphi enye indlela uma unohlelo lokusebenza olukhulu futhi ingakalungeli ukubhalwa kabusha.
Yiziphi izindlela esizisebenzisayo ukuze sihlukanise ama-microservices?
Izinsizakalo zazixhunywe ngokomqondo webhizinisi, njengoba zisebenzisa imihlangano evamile futhi zisebenza nge-database evamile. Babengeke neze babizwe ngama-microservices ngendlela yabo emsulwa. Nokho, singahlinzeka ngalawa masevisi ngokwehlukana, ngezinqubo ezahlukene. Lokhu kukodwa kwenza kube nokwenzeka ukunciphisa ithonya labo komunye nomunye, ukunciphisa inkinga ngokuthuthukiswa okufanayo kanye nephuzu elilodwa lokuhluleka.
Ukuhlanganisa nomsingathi kuwumugqa owodwa nje wekhodi ekilasini Lohlelo. Safihla umsebenzi noTopshelf ekilasini elisizayo.
namespace RBA.Services.Accounts.Host
{
internal class Program
{
private static void Main(string[] args)
{
HostRunner<Accounts>.Run("RBA.Services.Accounts.Host");
}
}
}
Thina, njengabaningi, siqale ngezinsizakalo zokuqinisekisa nokugunyaza. Baphelele kulokhu. Zizimele, njengomthetho, zinemodeli yedatha ehlukile. Bona ngokwabo abahlanganyeli ne-monolith, kuphela iphendukela kubo ukuxazulula izinkinga ezithile. Usebenzisa lezi zinsizakalo, ungaqala ukushintshela ekwakhiweni okusha, ulungise ingqalasizinda ekuzo, uzame ezinye izindlela ezihlobene nemitapo yolwazi yenethiwekhi, njll. Asinawo amaqembu enhlanganweni yethu angakwazanga ukudala isevisi yokuqinisekisa.
Uma ubheka isibonelo sangempela kusuka kukhodi yengxenye ye-UI, ungabona ukuthi iningi lalesi sixazululo liqukethe ingqondo yebhizinisi langempela eliwusizo kwezinye izinqubo, hhayi nje ekwakheni ifomu le-UI.
I-logic ye-UI yangempela itholakala kuphela emigqeni embalwa yokugcina. Siyidlulisele kuseva ukuze iphinde isetshenziswe, ngaleyo ndlela sinciphise i-UI futhi sizuze izakhiwo ezifanele.
Ukwehlukanisa izinsizakalo ekucutshungulweni kuxhunywe ngokungenakuhlukaniswa nomqondo womongo ohlanganisiwe. Lona umqondo ovela ku-Domain Driven Design. Kusho isigaba semodeli yesizinda lapho yonke imigomo yolimi olulodwa ichazwa ngendlela ehlukile. Ake sibheke umongo womshwalense kanye nezikweletu njengesibonelo. Sinesicelo se-monolithic, futhi sidinga ukusebenza ne-akhawunti kumshwalense. Silindele ukuthi unjiniyela athole ikilasi le-Akhawunti ekhona komunye umhlangano, alibhekise ekilasini Lomshwalense, futhi sizoba nekhodi yokusebenza. Isimiso se-DRY sizohlonishwa, umsebenzi uzokwenziwa ngokushesha ngokusebenzisa ikhodi ekhona.
Ngenxa yalokho, kuvela ukuthi izimo zama-akhawunti nomshuwalense zixhunyiwe. Njengoba izidingo ezintsha zivela, lokhu kuhlanganisa kuzophazamisa intuthuko, kwandise inkimbinkimbi yengqondo yebhizinisi eseyivele iyinkimbinkimbi. Ukuze uxazulule le nkinga, udinga ukuthola imingcele phakathi kwezingqikithi kukhodi futhi ususe ukuphulwa kwazo. Isibonelo, kumshwalense, kungenzeka ukuthi inombolo ye-akhawunti yeBhange Elikhulu enezinombolo ezingu-20 kanye nosuku i-akhawunti eyavulwa ngalo kuyokwanela.
Ukuze sihlukanise lezi zimo ezinqunyelwe komunye nomunye futhi siqale inqubo yokuhlukanisa ama-microservices kusixazululo se-monolithic, sisebenzise indlela efana nokudala ama-API angaphandle ngaphakathi kohlelo lokusebenza. Ukube besazi ukuthi imojuli ethile kufanele ibe isevisi encane, ngandlela thize ilungiswe ngaphakathi kwenqubo, khona-ke ngokushesha sashaya izingcingo kumqondo ongeyomunye umongo okhawulelwe ngamakholi angaphandle. Isibonelo, nge-REST noma i-WCF.
Sinqume ngokuqinile ukuthi ngeke siyigweme ikhodi ezodinga ukuthengiselana okusabalalisiwe. Esimweni sethu, kwaba lula kakhulu ukulandela lo mthetho. Asikahlangani nezimo lapho ukuthengiswa okuqinile okusabalalisiwe kudingekile ngempela - ukuvumelana kokugcina phakathi kwamamojula kwanele.
Ake sibheke isibonelo esithile. Sinomqondo we-orchestrator - ipayipi ecubungula ibhizinisi "lohlelo lokusebenza". Udala iklayenti, i-akhawunti kanye nekhadi lasebhange ngokulandelana. Uma iklayenti ne-akhawunti zidalwe ngempumelelo, kodwa ukudalwa kwekhadi kwehluleka, uhlelo lokusebenza aluhambisi esimweni "sokuphumelela" futhi luhlala kusimo "sekhadi elingadalwanga". Ngokuzayo, umsebenzi ongemuva uzowulanda bese uwuqeda. Uhlelo lube sesimweni sokungahambisani isikhathi eside, kodwa ngokuvamile sanelisekile ngalokhu.
Uma kuvela isimo lapho kudingeka ukuthi kugcinwe ingxenye yedatha ngokungashintshi, cishe sizoya ekuhlanganisweni kwesevisi ukuze siyicubungule ngenqubo eyodwa.
Ake sibheke isibonelo sokwaba i-microservice. Ungayiletha kanjani ekukhiqizeni ngokuphephile uma kuqhathaniswa? Kulesi sibonelo, sinengxenye ehlukile yesistimu - imojula yesevisi yokukhokha, enye yezingxenye zekhodi esingathanda ukwenza i-microservice.
Okokuqala, sakha i-microservice ngokubhala kabusha ikhodi. Senza ngcono izici ezithile ebesingajabule ngazo. Senza izimfuneko zebhizinisi ezintsha ezivela kukhasimende. Sengeza i-API Gateway ekuxhumaneni phakathi kwe-UI ne-backend, ezohlinzeka ngokudluliswa kwekholi.
Okulandelayo, sikhulula lokhu kulungiselelwa ukuthi kusebenze, kodwa esimweni sokuhlola. Iningi labasebenzisi bethu basasebenza nezinqubo zebhizinisi ezindala. Kubasebenzisi abasha, sakha inguqulo entsha yohlelo lokusebenza lwe-monolithic engasaqukethe le nqubo. Empeleni, sinenhlanganisela ye-monolith kanye ne-microservice esebenza njengomshayeli wendiza.
Ngomshayeli wendiza ophumelelayo, siyaqonda ukuthi ukucushwa okusha kuyasebenza ngempela, singasusa i-monolith endala ku-equation futhi sishiye ukucushwa okusha esikhundleni sesixazululo esidala.
Sekukonke, sisebenzisa cishe zonke izindlela ezikhona zokuhlukanisa ikhodi yomthombo ye-monolith. Zonke zisivumela ukuthi sehlise usayizi wezingxenye zohlelo lokusebenza futhi sizihumushele kumalabhulali amasha, senze ikhodi yomthombo engcono.
Ukusebenza nge-database
I-database ingahlukaniswa ibe yimbi kunekhodi yomthombo, njengoba iqukethe hhayi kuphela i-schema yamanje, kodwa futhi idatha yomlando eqoqwe.
I-database yethu, njengabanye abaningi, yayinesinye isici esibalulekile - usayizi wayo omkhulu. Lesi sizindalwazi saklanywa ngokuya ngengqondo yebhizinisi eyinkimbinkimbi ye-monolith, kanye nobudlelwano obuqoqwe phakathi kwamathebula ezimo ezihlukahlukene ezinemingcele.
Esimweni sethu, phezulu kuzo zonke izinkinga (idatha enkulu, ukuxhumana okuningi, ngezinye izikhathi imingcele engacacile phakathi kwamatafula), kwavela inkinga eyenzeka kumaphrojekthi amaningi amakhulu: ukusetshenziswa kwethempulethi yedatha eyabelwe. Idatha ithathwe kumathebula ngokubuka, ngokuphindaphinda, futhi yathunyelwa kwamanye amasistimu lapho lokhu kuphindaphinda kwakudingeka khona. Ngenxa yalokho, asikwazanga ukususa amathebula ku-schema esihlukile ngoba asetshenziswe ngokuqhubekayo.
Ukuhlukaniswa okufanayo kuzimo ezilinganiselwe kukhodi kusisiza ekuhlukaniseni. Imvamisa isinika umbono omuhle wokuthi siyidiliza kanjani idatha ezingeni lesizindalwazi. Siyaqonda ukuthi yimaphi amathebula ayingxenye yengqikithi eyodwa eboshelwe nokuthi yiliphi kwelinye.
Sisebenzise izindlela ezimbili zomhlaba jikelele zokuhlukanisa isizindalwazi: ukwahlukanisa amatafula akhona kanye nokuhlukanisa ngokucubungula.
Ukuhlukanisa amathebula akhona kuyindlela enhle ongayisebenzisa uma isakhiwo sedatha sisihle, sihlangabezana nezidingo zebhizinisi, futhi wonke umuntu ujabulile ngaso. Kulokhu, singahlukanisa amathebula akhona abe yi-schema ehlukile.
Umnyango onokucutshungulwa uyadingeka lapho imodeli yebhizinisi isishintshe kakhulu, futhi amatafula engasasanelisi nhlobo.
Ake sicabange ukuthi sinesixazululo lapho amamojula amabili e-monolith asebenzisana nesizindalwazi esisodwa. Kudingeka siqinisekise ukuthi imojuli eyodwa kuphela esebenzisana nesigaba samathebula ahlukanisiwe, futhi enye iqala ukuxhumana nayo nge-API. Okokuqala, kwanele ukuthi ukuqoshwa kuphela kwenziwa nge-API. Lesi yisimo esidingekayo ukuze sikhulume ngokuzimela kwama-microservices. Ukufunda ukuxhumana kungahlala inqobo nje uma kungekho nkinga enkulu.
Isinyathelo esilandelayo ukuthi singahlukanisa ingxenye yekhodi esebenza ngamatafula ahlukanisiwe, noma ngaphandle kokucubungula, sibe yi-microservice ehlukile futhi siyiqhube ngenqubo ehlukile, isitsha. Lena kuzoba isevisi ehlukile enoxhumo kusizindalwazi se-monolith kanye nalawo mathebula angahlobene ngqo nayo. I-monolith isasebenzisana ukuze ifundwe nengxenye ekhiphekayo.
Kamuva sizosusa lokhu kuxhumana, okungukuthi, ukufunda idatha kusuka kuhlelo lokusebenza lwe-monolithic kusuka kumathebula ahlukanisiwe nakho kuzodluliselwa ku-API.
Okulandelayo, sizokhetha ku-database evamile amatafula lapho kuphela i-microservice entsha esebenza khona. Singahambisa amathebula ku-schema esihlukile noma ngisho siwayise kusizindalwazi esihlukile somzimba. Kusenokuxhumana kokufunda phakathi kwe-microservice kanye nedathabheyisi ye-monolith, kepha akukho okufanele ukhathazeke ngakho, kulokhu kucushwa kungaphila isikhathi eside impela.
Isinyathelo sokugcina ukususa ngokuphelele konke ukuxhumana. Kulokhu, kungase kudingeke ukuthi sithuthe idatha kusuka kusizindalwazi esiyinhloko. Kwesinye isikhathi sifuna ukuphinda sisebenzise idatha ethile noma uhla lwemibhalo oluphindaphindwe kusuka kumasistimu angaphandle kuzigcinilwazi ezimbalwa. Lokhu kwenzeka kithi ngezikhathi ezithile.
Ukuze lolu hlelo lusebenze, cishe sizodinga isikhathi soshintsho.
Kukhona-ke izindlela ezimbili ezingenzeka.
Okokuqala: siphinda yonke idatha kusizindalwazi esisha nesidala. Kulokhu, sinokuphindaphindeka kwedatha futhi izinkinga zokuvumelanisa zingavela. Kodwa singathatha amaklayenti amabili ahlukene. Enye izosebenza nenguqulo entsha, enye nendala.
Owesibili: sihlukanisa idatha ngokuya ngemibandela ethile yebhizinisi. Isibonelo, sibe nemikhiqizo engu-5 ohlelweni egcinwe kusizindalwazi esidala. Sibeka owesithupha emsebenzini webhizinisi elisha kusigcinalwazi esisha. Kodwa sizodinga Isango Le-API elizovumelanisa le datha futhi libonise iklayenti ukuthi lizothola kuphi futhi ini.
Zombili izindlela ziyasebenza, khetha kuye ngesimo.
Ngemuva kokuthi siqinisekile ukuthi yonke into iyasebenza, ingxenye ye-monolith esebenza nezakhiwo ezindala ze-database ingakhutshazwa.
Isinyathelo sokugcina ukususa izakhiwo zedatha endala.
Ukufingqa, singasho ukuthi sinezinkinga nge-database: kunzima ukusebenza nayo uma kuqhathaniswa nekhodi yomthombo, kunzima kakhulu ukwabelana, kodwa kungenziwa futhi kufanele kwenziwe. Sithole izindlela ezisivumela ukuthi senze lokhu ngokuphepha, kodwa kuselula ukwenza amaphutha ngedatha kunekhodi yomthombo.
Ukusebenza ngekhodi yomthombo
Yile ndlela umdwebo wekhodi yomthombo owawubukeka ngayo lapho siqala ukuhlaziya iphrojekthi ye-monolithic.
Ingase ihlukaniswe ngokwezigaba ezintathu. Lolu ungqimba lwamamojula aqalisiwe, ama-plugin, izinsizakalo kanye nemisebenzi yomuntu ngamunye. Eqinisweni, lawa kwakungamaphuzu okungena ngaphakathi kwesisombululo se-monolithic. Wonke ayevalwe ngokuqinile nge-Common layer. Ibinomqondo webhizinisi ukuthi izinsiza zabelane ngayo kanye nokuxhumana okuningi. Isevisi ngayinye ne-plugin kusetshenziswa ama-assemblies avamile afika kwangu-10 noma ngaphezulu, kuye ngosayizi wawo nonembeza wonjiniyela.
Sibe nenhlanhla yokuba nemitapo yolwazi yengqalasizinda engasetshenziswa ngokuhlukana.
Kwesinye isikhathi kwakuvela isimo lapho ezinye izinto ezijwayelekile zingezona ezalolu ungqimba, kodwa kwakuyimitapo yolwazi yengqalasizinda. Lokhu kwaxazululwa ngokuqamba kabusha.
Ukukhathazeka okukhulu kwakuwukuqukethwe okulinganiselwe. Kwenzeka ukuthi izingqikithi ze-3-4 zixutshwe emhlanganweni owodwa ojwayelekile futhi zisetshenziswe komunye nomunye ngaphakathi kwemisebenzi efanayo yebhizinisi. Bekudingeka ukuqonda ukuthi lokhu kungahlukaniswa kuphi futhi kuhambisane nemiphi imingcele, nokuthi yini okufanele yenziwe ngokulandelayo ngokwenza lokhu kuhlukaniswa kube amaqoqo ekhodi yomthombo.
Senze imithetho eminingana yenqubo yokuhlukanisa amakhodi.
Okokuqala: Sasingasafuni ukwabelana ngengqondo yebhizinisi phakathi kwamasevisi, imisebenzi nama-plugin. Besifuna ukwenza ingqondo yebhizinisi izimele ngaphakathi kwama-microservices. I-Microservices, ngakolunye uhlangothi, icatshangwa kahle njengezinsizakalo ezikhona ngokuzimela ngokuphelele. Ngikholelwa ukuthi le ndlela iwukumosha ngandlela thize, futhi kunzima ukuyifinyelela, ngoba, ngokwesibonelo, izinsizakalo ku-C# noma kunjalo zizoxhunywa umtapo wezincwadi ojwayelekile. Isistimu yethu ibhalwe ngo-C#; asikasebenzisi obunye ubuchwepheshe. Ngakho-ke, sanquma ukuthi singakwazi ukusebenzisa imihlangano evamile yobuchwepheshe. Into esemqoka ukuthi aziqukethe izingcezu ze-logic yebhizinisi. Uma une- wrapper elula phezu kwe-ORM oyisebenzisayo, ukuyikopisha kusuka kusevisi kuya kusevisi kubiza kakhulu.
Ithimba lethu lithanda umklamo oqhutshwa yisizinda, ngakho ukwakheka kuka-anyanisi bekusifaneleka kakhulu. Isisekelo samasevisi ethu akusona isendlalelo sokufinyelela idatha, kodwa inhlanganisela enengqondo yesizinda, equkethe ingqondo yebhizinisi kuphela futhi engenakho ukuxhumana nengqalasizinda. Ngesikhathi esifanayo, singakwazi ukuguqula ngokuzimela umhlangano wesizinda ukuze sixazulule izinkinga ezihlobene nezinhlaka.
Kulesi sigaba sihlangabezane nenkinga yethu yokuqala enkulu. Insizakalo bekufanele ibhekisele kumhlangano wesizinda esisodwa, besifuna ukwenza umqondo uzimele, futhi isimiso se-DRY sisiphazamise kakhulu lapha. Onjiniyela babefuna ukusebenzisa kabusha amakilasi avela emihlanganweni engomakhelwane ukuze bagweme ukuphindaphinda, futhi ngenxa yalokho, izizinda zaqala ukuxhunywa ndawonye futhi. Sihlaziye imiphumela futhi sanquma ukuthi mhlawumbe inkinga isendaweni yedivayisi yokugcina ikhodi yomthombo. Besinenqolobane enkulu equkethe yonke ikhodi yomthombo. Isixazululo sawo wonke umsebenzi kwakunzima kakhulu ukuhlanganisa emshinini wendawo. Ngakho-ke, izixazululo ezincane ezihlukene zenzelwe izingxenye zephrojekthi, futhi akekho owanqabela ukungeza umhlangano othile ovamile noma wesizinda kuzo nokuzisebenzisa kabusha. Ithuluzi kuphela elingazange lisivumele ukuthi senze lokhu ukubuyekezwa kwekhodi. Kodwa ngezinye izikhathi nayo yahluleka.
Sabe sesiqala ukuthuthela kumodeli enezindawo zokugcina ezihlukene. Ingqondo yebhizinisi ayisagelezi isuka kusevisi iye kusevisi, izizinda sezizimele ngempela. Izimo ezihlanganisiwe zisekelwa ngokucacile. Siyisebenzisa kanjani kabusha imitapo yolwazi yengqalasizinda? Sazihlukanisa zibe yindawo yokugcina ehlukile, bese sizifaka kumaphakheji we-Nuget, esiwafaka ku-Artifactory. Nganoma yiluphi ushintsho, ukuhlanganisa nokushicilela kwenzeka ngokuzenzakalelayo.
Izinsizakalo zethu ziqale ukubhekisela kumaphakheji wengqalasizinda yangaphakathi ngendlela efanayo neyangaphandle. Silanda imitapo yolwazi yangaphandle kwa-Nuget. Ukuze sisebenze ne-Artifactory, lapho sibeka khona la maphakheji, sasebenzisa abaphathi bephakheji ababili. Ezinqolobaneni ezincane sasisebenzisa futhi i-Nuget. Ezinqolobaneni ezinezinsizakalo eziningi, sisebenzise i-Paket, ehlinzeka ngokungaguquguquki okwengeziwe phakathi kwamamojula.
Ngakho-ke, ngokusebenza ngekhodi yomthombo, ukushintsha kancane ukwakheka nokuhlukanisa amaqoqo, senza izinsiza zethu zizimele.
Izinkinga zengqalasizinda
Iningi lezinkinga zokuthuthela kuma-microservices zihlobene nengqalasizinda. Uzodinga ukuthunyelwa okuzenzakalelayo, uzodinga imitapo yolwazi emisha ukuze usebenzise ingqalasizinda.
Ekuqaleni, safaka isixazululo sezindawo mathupha. Ukwenza le nqubo ngokuzenzakalelayo, sidale ipayipi le-CI/CD. Sikhethe inqubo yokulethwa eqhubekayo ngoba ukuthunyelwa okuqhubekayo akukakamukeleki kithi ngokombono wezinqubo zebhizinisi. Ngakho-ke, ukuthumela ukusebenza kwenziwa kusetshenziswa inkinobho, futhi ngokuhlolwa - ngokuzenzakalelayo.
Sisebenzisa i-Atlassian, i-Bitbucket ukuze sigcine ikhodi yomthombo kanye ne-Bamboo ekwakheni. Sithanda ukubhala i-build scripts ku-Cake ngoba iyafana ne-C#. Amaphakheji enziwe ngomumo eza ku-Artifactory, futhi i-Ansible ifika ngokuzenzakalelayo kumaseva okuhlola, ngemva kwalokho ingahlolwa ngokushesha.
Ukugawula okuhlukile
Ngesinye isikhathi, omunye wemibono ye-monolith kwakuwukuhlinzeka ngokugawula okuhlanganyelwe. Besidinga futhi ukuqonda ukuthi yini okufanele siyenze ngamalogi angawodwana akumadiski. Amalogi ethu abhalelwe amafayela ombhalo. Sinqume ukusebenzisa isitaki esijwayelekile se-ELK. Asizange sibhalele i-ELK ngokuqondile ngabahlinzeki, kodwa sinqume ukuthi sizoshintsha amalogi ombhalo futhi sibhale i-ID yokulandela umkhondo kuwo njengesihlonzi, sengeze igama lesevisi, ukuze lawa malogi ahlukaniswe kamuva.
Sisebenzisa i-Filebeat, sithola ithuba lokuqoqa amalogi ethu kumaseva, bese siwaguqula, sisebenzise i-Kibana ukwakha imibuzo ku-UI futhi sibone ukuthi ikholi ihambe kanjani phakathi kwezinsizakalo. I-Trace ID isiza kakhulu ngalokhu.
Ukuhlola nokulungisa amaphutha ahlobene namasevisi
Ekuqaleni, asizange siqonde ngokugcwele ukuthi singasusa kanjani iphutha kumasevisi athuthukiswayo. Yonke into yayilula nge-monolith; sasiyiqhuba ngomshini wendawo. Ekuqaleni bazama ukwenza okufanayo nge-microservices, kodwa ngezinye izikhathi ukuze uqalise ngokugcwele i-microservice eyodwa udinga ukwethula ezinye eziningana, futhi lokhu akulungile. Sibone ukuthi sidinga ukuthuthela kumodeli lapho sishiya emshinini wendawo kuphela isevisi noma amasevisi esifuna ukuwasusa. Amasevisi asele asetshenziswa eziphakelini ezifana nokucushwa nge-prod. Ngemva kokulungisa iphutha, ngesikhathi sokuhlolwa, kumsebenzi ngamunye, izinsizakalo ezishintshiwe kuphela ezikhishwa kuseva yokuhlola. Ngakho-ke, isisombululo sihlolwa ngendlela esizovela ngayo ekukhiqizeni esikhathini esizayo.
Kunamaseva asebenzisa kuphela izinguqulo zokukhiqiza zamasevisi. Lawa maseva ayadingeka uma kwenzeka kuba nezigameko, ukuhlola ukulethwa ngaphambi kokuthunyelwa kanye nokuqeqeshwa kwangaphakathi.
Sengeze inqubo yokuhlola ezenzakalelayo sisebenzisa ilabhulali ye-Specflow edumile. Ukuhlola kuqala ngokuzenzakalela kusetshenziswa i-NUnit ngokushesha ngemva kokuthunyelwa ku-Ansible. Uma ukumbozwa komsebenzi kuzenzakalela ngokugcwele, asikho isidingo sokuhlola okwenziwa ngesandla. Nakuba ngezinye izikhathi ukuhlolwa okwengeziwe okungeziwe kusadingeka. Sisebenzisa omaka ku-Jira ukuze sinqume ukuthi iziphi izivivinyo okufanele zisebenze ngenkinga ethile.
Ukwengeza, isidingo sokuhlolwa komthwalo sinyukile; ngaphambilini bekwenziwa ezimweni ezingavamile kuphela. Sisebenzisa i-JMeter ukwenza izivivinyo, i-InfluxDB ukuze sizigcine, kanye ne-Grafana ukuze sakhe amagrafu enqubo.
Yini esiyizuzile?
Okokuqala, sisuse umqondo "wokukhululwa". Sekuphelile ukukhishwa okunyantisayo kwezinyanga ezimbili lapho le colossus isetshenziswa endaweni yokukhiqiza, ephazamisa izinqubo zebhizinisi okwesikhashana. Manje sisebenzisa amasevisi ngokwesilinganiso njalo ezinsukwini ezingu-1,5, siwahlanganisa ngoba aqala ukusebenza ngemva kokugunyazwa.
Akukho ukwehluleka okubulalayo ohlelweni lwethu. Uma sikhipha isevisi encane enesiphazamisi, khona-ke ukusebenza okuhlotshaniswa nayo kuzophulwa, futhi yonke eminye imisebenzi ngeke ithinteke. Lokhu kuthuthukisa kakhulu ukuzizwisa komsebenzisi.
Singakwazi ukulawula iphethini yokusebenzisa. Ungakhetha amaqembu ezinsizakalo ngokwehlukana naso sonke isixazululo, uma kunesidingo.
Ngaphezu kwalokho, siyinciphise kakhulu inkinga ngomugqa omkhulu wokuthuthukiswa. Manje sesinamaqembu emikhiqizo ahlukene asebenza namanye amasevisi ngokuzimela. Inqubo ye-Scrum isivele ilingana kahle lapha. Ithimba elithile lingase libe nomnikazi womkhiqizo ohlukile olinikeza imisebenzi.
Isifingqo
- Ama-Microservices afaneleka kahle ukubola kwezinhlelo eziyinkimbinkimbi. Ngenqubo, siqala ukuqonda ukuthi yini ohlelweni lwethu, yiziphi izimo ezilinganiselwe ezikhona, lapho imingcele yabo ilele. Lokhu kukuvumela ukuthi usabalalise kahle ukuthuthukiswa phakathi kwamamojula futhi uvimbele ukudideka kwekhodi.
- Ama-Microservices ahlinzeka ngezinzuzo zenhlangano. Zivame ukukhulunywa ngazo kuphela njengezakhiwo, kodwa noma yikuphi ukwakheka kuyadingeka ukuxazulula izidingo zebhizinisi, hhayi ngokwazo. Ngakho-ke, singasho ukuthi ama-microservices afaneleka kahle ekuxazululeni izinkinga emaqenjini amancane, njengoba iScrum isithandwa kakhulu manje.
- Ukwehlukana kuyinqubo ephindaphindayo. Awukwazi ukuthatha uhlelo lokusebenza futhi umane uluhlukanise lube ngama-microservices. Umkhiqizo owumphumela awunakwenzeka ukuthi usebenze. Lapho unikezela ngezinsizakalo ezincane, kuyazuzisa ukubhala kabusha ifa elikhona, okungukuthi, ukuliguqula libe ikhodi esiyithandayo nesihlangabezana kangcono nezidingo zebhizinisi ngokuya ngokusebenza nesivinini.
Isixwayiso esincane: Izindleko zokuthuthela kuma-microservices zibaluleke kakhulu. Kuthathe isikhathi eside ukuxazulula inkinga yengqalasizinda iyodwa. Ngakho-ke uma unohlelo lokusebenza oluncane olungadingi ukukala okuthile, ngaphandle uma unenani elikhulu lamakhasimende aqhudelana nokunaka kweqembu lakho nesikhathi, khona-ke ama-microservices angase angabi yilokho okudingayo namuhla. Kuyabiza impela. Uma uqala inqubo ngama-microservices, izindleko zizoba ngaphezulu uma uqala iphrojekthi efanayo ngokuthuthukiswa kwe-monolith.
PS Indaba ethinta inhliziyo (futhi sengathi ingeyakho) - ngokusho
isixhumanisi .
Nansi inguqulo ephelele yombiko.
Source: www.habr.com