Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Sehloohong sena, ke tla bua ka hore na morero oo ke sebetsang ho oona o fetohile joang ho tloha monolith e kholo ho ea ho sete sa microservices.

Morero ona o qalile nalane ea ona khale haholo, qalong ea 2000. Liphetolelo tsa pele li ngotsoe ka Visual Basic 6. Ha nako e ntse e ea, ho ile ha hlaka hore tsoelo-pele ea puo ena e tla ba thata ho e tšehetsa nakong e tlang, kaha IDE le puo ka boeona ha e ea ntlafatsoa hantle. Qetellong ea lilemo tsa bo-2000, ho ile ha etsoa qeto ea ho fetohela ho C # e tšepisang haholoanyane. Phetolelo e ncha e ngotsoe ka mokhoa o ts'oanang le ho ntlafatsoa ha ea khale, butle-butle khoutu e eketsehileng e ngotsoe ho .NET. Backend ho C # qalong e ne e tsepamisitsoe ho meralo ea litšebeletso, empa nakong ea nts'etsopele, lilaebrari tse tloaelehileng tse nang le logic li ile tsa sebelisoa, 'me litšebeletso li ile tsa qalisoa ka mokhoa o le mong. Sephetho e bile ts'ebeliso eo re e bitsitseng "monolith ea litšebeletso."

E 'ngoe ea melemo e seng mekae ea motsoako ona e ne e le bokhoni ba litšebeletso tsa ho letsetsana ka API ea kantle. Ho ne ho e-na le litlhokahalo tse hlakileng tsa phetoho ho ea tšebeletsong e nepahetseng haholoanyane, 'me nakong e tlang, meralo ea microservice.

Re ile ra qala mosebetsi oa rona oa ho senya ho tloha ka 2015. Ha re e-so fihle boemong bo nepahetseng - ho ntse ho e-na le likarolo tsa morero o moholo o ke keng oa bitsoa monoliths, empa ha li shebahale joaloka li-microservices. Leha ho le joalo, tsoelo-pele e bohlokoa.
Ke tla bua ka eona sehloohong.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Tse ka hare

Mehaho le mathata a tharollo e teng


Qalong, mohaho o ne o shebahala tjena: UI ke kopo e arohaneng, karolo ea monolithic e ngotsoe ho Visual Basic 6, kopo ea .NET ke sehlopha sa litšebeletso tse amanang le tsona tse sebetsang ka database e batlang e le khōlō.

Mefokolo ea tharollo e fetileng

Ntlha e le 'ngoe ea ho hloleha
Re bile le ntlha e le 'ngoe ea ho hloleha: kopo ea .NET e ile ea sebetsa ka mokhoa o le mong. Haeba mojule leha e le ofe o hlolehile, kopo eohle e ile ea hlōleha 'me ea tlameha ho qalisoa bocha. Kaha re iketsetsa palo e kholo ea lits'ebetso bakeng sa basebelisi ba fapaneng, ka lebaka la ho hloleha ho e 'ngoe ea bona, e mong le e mong o ne a sa khone ho sebetsa ka nako e itseng. Mme haeba ho na le phoso ea software, esita le backup ha ea ka ea thusa.

Letoto la lintlafatso
Bothata bona ke ba tlhophiso. Kopo ea rona e na le bareki ba bangata, 'me kaofela ba batla ho e ntlafatsa kapele kamoo ho ka khonehang. Pele, ho ne ho sa khonehe ho etsa sena ka mokhoa o ts'oanang, mme bareki bohle ba ne ba eme moleng. Ts'ebetso ena e ne e le mpe bakeng sa likhoebo hobane ba ne ba tlameha ho paka hore mosebetsi oa bona o bohlokoa. 'Me sehlopha sa nts'etsopele se qetile nako se hlophisa letoto lena. Sena se ile sa nka nako e ngata le boiteko, 'me sehlahisoa se ne se ke ke sa fetoha kapele kamoo ba ka ratang kateng.

Tšebeliso e nepahetseng ea lisebelisoa
Ha re fana ka lits'ebeletso ka ts'ebetso e le 'ngoe, re ne re lula re qopitsa tlhophiso ka botlalo ho tloha ho seva ho ea ho seva. Re ne re batla ho beha litšebeletso tse ngata haholo ka thoko hore re se ke ra senya lisebelisoa le ho fumana taolo e feto-fetohang holim'a leano la rona la thomello.

Ho thata ho sebelisa theknoloji ea sejoale-joale
Bothata bo tloaelehileng ho bohle ba ntlafatsang: ho na le takatso ea ho kenyelletsa theknoloji ea morao-rao morerong, empa ha ho na monyetla. Ka tharollo e kholo ea monolithic, ntjhafatso efe kapa efe ea laeborari ea hajoale, re sa bue ka phetoho ho e ncha, e fetoha mosebetsi o seng bobebe. Ho nka nako e telele ho pakela moetapele oa sehlopha hore sena se tla tlisa li-bonase tse ngata ho feta methapo e senyehileng.

Bothata ba ho fana ka liphetoho
Bona e ne e le bothata bo boholo ka ho fetisisa - re ne re lokolla litokollo ka mor'a likhoeli tse ling le tse ling tse peli.
Tokollo e 'ngoe le e' ngoe e ile ea fetoha koluoa ​​​​ea 'nete bakeng sa banka, ho sa tsotellehe liteko le boiteko ba bahlahisi. Khoebo e ne e utloisisa hore qalong ea beke ts'ebetso e 'ngoe ea eona e ke ke ea sebetsa. 'Me bahlahisi ba ile ba utloisisa hore beke ea liketsahalo tse tebileng li ba emetse.
E mong le e mong o ne a e-na le takatso ea ho fetola boemo.

Litebello ho tsoa ho microservices


Khatiso ea likarolo ha e se e loketse. Phano ea likarolo ha e se e loketse ka ho senya tharollo le ho arola mekhoa e fapaneng.

Lihlopha tse nyenyane tsa lihlahisoa. Sena ke sa bohlokoa hobane sehlopha se seholo se sebetsang monolith ea khale se ne se le thata ho se laola. Sehlopha se joalo se ile sa qobelloa ho sebetsa ho latela ts'ebetso e thata, empa se ne se batla boqapi bo eketsehileng le boipuso. Ke lihlopha tse nyane feela tse neng li ka khona ho etsa sena.

Ho aroloa ha litšebeletso ka mekhoa e fapaneng. Ka tsela e loketseng, ke ne ke batla ho e arola ka har'a lijana, empa palo e kholo ea litšebeletso tse ngotsoeng ho NET Framework li sebetsa feela Windows. Litšebeletso tse thehiloeng ho .NET Core lia hlaha, empa ho na le tse seng kae tsa tsona.

Ho feto-fetoha ha phepelo. Re ka rata ho kopanya litšebeletso ka tsela eo re li hlokang ka eona, eseng ka tsela eo khoutu e e qobellang ka eona.

Tšebeliso ea theknoloji e ncha. Sena se thahasellisa ho moetsi ofe kapa ofe oa lenaneo.

Mathata a phetoho


Ha e le hantle, haeba ho ne ho le bonolo ho senya monolith ka li-microservices, ho ne ho ke ke ha e-ba le tlhokahalo ea ho bua ka eona likopanong le ho ngola lihlooho. Ho na le maraba a mangata ts'ebetsong ena; Ke tla hlalosa tse kholo tse ileng tsa re sitisa.

Bothata ba pele e tloaelehileng bakeng sa li-monoliths tse ngata: ho lumellana ha mohopolo oa khoebo. Ha re ngola monolith, re batla ho sebelisa litlelase tsa rona hape e le hore re se ke ra ngola khoutu e sa hlokahaleng. 'Me ha u fallela ho microservices, sena se fetoha bothata: khoutu eohle e kopantsoe ka thata,' me ho thata ho arola litšebeletso.

Nakong ea ha mosebetsi o qala, polokelo e ne e e-na le merero e fetang 500 le mela e fetang likete tse 700 tsa khoutu. Ena ke qeto e kholo haholo le bothata ba bobeli. Ho ne ho sa khonehe ho e nka feela le ho e arola ka li-microservices.

Bothata ba boraro - khaello ea lisebelisoa tse hlokahalang. Ha e le hantle, re ne re kopitsa khoutu ea mohloli ka letsoho ho li-server.

Mokhoa oa ho tloha monolith ho ea ho microservices


Ho fana ka li-Microservices

Taba ea pele, re ile ra ikemisetsa hang-hang hore karohano ea li-microservices ke ts'ebetso e pheta-phetoang. Kamehla re ne re hlokoa ho hlahisa mathata a khoebo ka ho bapisa. Taba ena re tla e kenya tšebetsong joang ka botekgeniki e se e ntse e le bothata ba rona. Ka hona, re ile ra itokisetsa mokhoa oa ho pheta-pheta. E ke ke ea sebetsa ka tsela e 'ngoe haeba u na le sesebelisoa se seholo' me ha se e-so lokele ho ngoloa bocha.

Re sebelisa mekhoa efe ho arola li-microservices?

Tsela ea pele — tsamaisa limmojule tse teng joalo ka litšebeletso. Tabeng ena, re bile lehlohonolo: ho ne ho se ho ntse ho e-na le litšebeletso tse ngolisitsoeng tse sebetsang ho sebelisa protocol ea WCF. Ba ile ba aroloa ka likopano tse arohaneng. Re ile ra li beha ka thoko, ra eketsa sebui se senyenyane mohahong o mong le o mong. E ngotsoe ho sebelisoa laeborari e ntle ea Topshelf, e u lumellang ho tsamaisa ts'ebeliso joalo ka ts'ebeletso le joalo ka console. Sena se loketse bakeng sa debugging kaha ha ho na merero e eketsehileng e hlokahalang tharollong.

Litšebeletso li ne li kopantsoe ho latela mohopolo oa khoebo, kaha li ne li sebelisa likopano tse tloaelehileng 'me li sebetsa ka database e tloaelehileng. Li ne li ke ke tsa bitsoa li-microservices ka mokhoa oa tsona o hloekileng. Leha ho le joalo, re ka fana ka litšebeletso tsena ka thoko, ka mekhoa e fapaneng. Sena se le seng se entse hore ho khonehe ho fokotsa tšusumetso ea bona ho e mong, ho fokotsa bothata ka tsoelo-pele e tšoanang le ntlha e le 'ngoe ea ho hlōleha.

Kopano le moamoheli ke mola o le mong feela oa khoutu sehlopheng sa Lenaneo. Re ile ra pata mosebetsi le Topshelf sehlopheng se thusang.

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

       }
    }
}

Mokhoa oa bobeli oa ho fana ka li-microservices ke: li bope ho rarolla mathata a macha. Haeba ka nako e ts'oanang monolith e sa hōle, sena se se se ntse se le setle haholo, se bolelang hore re tsamaea ka tsela e nepahetseng. Ho rarolla mathata a macha, re lekile ho theha litšebeletso tse fapaneng. Haeba ho ne ho e-na le monyetla o joalo, joale re thehile litšebeletso tse ling tsa "canonical" tse laolang ka ho feletseng mohlala oa tsona oa data, database e arohaneng.

Le rona joalo ka ba bangata, re qalile ka lits'ebeletso tsa netefatso le tumello. Ba phethahetse bakeng sa sena. Ba ikemetse, e le molao, ba na le mohlala o fapaneng oa data. Ka bobona ha ba sebelisane le monolith, feela e retelehela ho bona ho rarolla mathata a mang. U sebelisa lits'ebeletso tsena, u ka qala phetoho ea ho ea moahong o mocha, oa hlakola meaho ea ona, leka mekhoa e meng e amanang le lilaebrari tsa marang-rang, joalo-joalo. Ha re na lihlopha mokhatlong oa rona tse sa khoneng ho theha litšebeletso tsa netefatso.

Tsela ea boraro ea ho fana ka li-microservicesEo re e sebelisang e batla e tobile ho rona. Hona ke ho tlosoa ha mohopolo oa khoebo ho tloha karolong ea UI. Sesebelisoa sa rona sa mantlha sa UI ke komporo; eona, joalo ka mokokotlo, e ngotsoe ho C #. Baetsi ba nako le nako ba ne ba etsa liphoso 'me ba fetisetsa likarolo tsa mohopolo ho UI tse ka beng li bile teng ka morao 'me tsa sebelisoa hape.

Haeba u sheba mohlala oa sebele ho tsoa ho khoutu ea karolo ea UI, u ka bona hore boholo ba tharollo ena e na le logic ea sebele ea khoebo e thusang lits'ebetsong tse ling, eseng feela bakeng sa ho haha ​​​​foromo ea UI.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Maikutlo a 'nete a UI a teng feela meleng e' maloa ea ho qetela. Re e fetiselitse ho seva hore e tle e sebelisoe hape, kahoo ra fokotsa UI le ho fumana meralo e nepahetseng.

Mokhoa oa bone le oa bohlokoa ka ho fetisisa oa ho arola li-microservices, e leng se etsang hore ho khonehe ho fokotsa monolith, ke ho tlosoa ha litšebeletso tse teng ka ho sebetsa. Ha re ntša li-module tse seng li ntse li le teng, sephetho ha se kamehla se ratoang ke bahlahisi, mme ts'ebetso ea khoebo e kanna ea se e siiloe ke nako ho tloha ha ts'ebetso e etsoa. Ka refactoring, re ka ts'ehetsa ts'ebetso e ncha ea khoebo hobane litlhoko tsa khoebo li lula li fetoha. Re ka ntlafatsa khoutu ea mohloli, ra tlosa liphoso tse tsebahalang, 'me ra theha mofuta o betere oa data. Ho na le melemo e mengata e hlahang.

Ho arola litšebeletso ho tloha ts'ebetsong ho hokahane ka mokhoa o ke keng oa lekanngoa le khopolo ea moelelo oa moeli. Ena ke mohopolo o tsoang ho Domain Driven Design. E bolela karolo ea mohlala oa domain moo mantsoe ohle a puo e le 'ngoe a hlalosoang ka mokhoa o ikhethileng. Ha re shebeng moelelo oa taba ea inshorense le likoloto e le mohlala. Re na le kopo ea monolithic, 'me re hloka ho sebetsa le akhaonto ka inshorense. Re lebelletse hore mohlahlami a fumane sehlopha se seng se le teng sa Account kopanong e 'ngoe, a se bue ka sehlopha sa Inshorense, 'me re tla ba le khoutu ea ho sebetsa. Molao-motheo oa DRY o tla hlomphuoa, mosebetsi o tla etsoa ka potlako ka ho sebelisa khoutu e teng.

Ka lebaka leo, hoa etsahala hore maemo a li-account le inshorense a hokahane. Ha litlhoko tse ncha li hlaha, ho kopanya hona ho tla kena-kenana le tsoelo-pele, ho eketsa ho rarahana ha mohopolo oa khoebo o seng o ntse o le thata. Ho rarolla bothata bona, o hloka ho fumana meeli lipakeng tsa maemo a khoutu mme o tlose litlolo tsa bona. Mohlala, maemong a inshorense, ho ka etsahala hore nomoro ea ak'haonte ea Banka e Bohareng ea linomoro tse 20 le letsatsi leo ak'haonte e butsoeng ka lona e tla lekana.

Ho arola maemo ana a moeli ho e mong le ho qala ts'ebetso ea ho arola li-microservices ho tharollo ea monolithic, re sebelisitse mokhoa o kang oa ho theha li-API tsa ka ntle ka hare ho kopo. Haeba re ne re tseba hore module e 'ngoe e lokela ho fetoha microservice, ka tsela e itseng e fetotsoe ka har'a ts'ebetso, joale hang-hang re ile ra letsetsa mohopolo oa moelelo o mong o lekanyelitsoeng ka mehala ea kantle. Ka mohlala, ka REST kapa WCF.

Re ile ra etsa qeto e tiileng ea hore re ke ke ra qoba khoutu e tla hloka litšebelisano tse ajoang. Tabeng ea rona, ho ile ha bonahala ho le bonolo haholo ho latela molao ona. Ha re e-so kopane le maemo ao ho 'ona ho hlokahalang litšebelisano tse thata - ho lumellana ha ho qetela pakeng tsa li-module ho lekane.

A re hlahlobeng mohlala o itseng. Re na le mohopolo oa 'mino oa liletsa - phaephe e sebetsanang le mokhatlo oa "application". O theha moreki, ak'haonte le karete ea banka ka ho latellana. Haeba moreki le ak'haonte li entsoe ka katleho, empa tlhahiso ea karete e hloleha, kopo ha e fetele boemong ba "katleho" mme e lula e le "karete e sa bōptjoang". Nakong e tlang, mesebetsi e ka morao e tla e nka ebe e e qeta. Tsamaiso e bile boemong ba ho se lumellane ka nako e itseng, empa ka kakaretso re khotsofetse ke sena.

Haeba boemo bo hlaha ha ho hlokahala ho boloka karolo ea data ka linako tsohle, ho ka etsahala hore re ee ho kopanyelletsa tšebeletso e le hore re e sebetse ka mokhoa o le mong.

Ha re shebeng mohlala oa ho abela microservice. U ka e tlisa joang tlhahisong e batlang e bolokehile? Mohlala ona, re na le karolo e arohaneng ea tsamaiso - mojule oa tšebeletso ea moputso, e 'ngoe ea likarolo tsa khoutu tseo re ka ratang ho li etsa microservice.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Pele ho tsohle, re theha microservice ka ho ngola khoutu hape. Re ntse re ntlafatsa likarolo tse ling tseo re neng re sa li thabele. Re kenya tšebetsong litlhoko tse ncha tsa khoebo ho tsoa ho moreki. Re eketsa API Gateway ho hokahanya pakeng tsa UI le backend, e tla fana ka phetisetso ea mohala.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ka mor'a moo, re lokolla tlhophiso ena hore e sebetse, empa e le boemong ba sefofane. Boholo ba basebelisi ba rona ba ntse ba sebetsa ka mekhoa ea khale ea khoebo. Bakeng sa basebelisi ba bacha, re hlahisa mofuta o mocha oa ts'ebeliso ea monolithic e seng e se na mokhoa ona. Ha e le hantle, re na le motsoako oa monolith le microservice e sebetsang e le mofofisi.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ka mofofisi ea atlehileng, rea utloisisa hore tlhophiso e ncha e hlile e sebetsa, re ka tlosa monolith ea khale ho tloha ho equation mme ra siea tlhophiso e ncha sebakeng sa tharollo ea khale.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ka kakaretso, re sebelisa hoo e batlang e le mekhoa eohle e teng bakeng sa ho arola khoutu ea mohloli oa monolith. Kaofela ha tsona li re lumella ho fokotsa boholo ba likarolo tsa ts'ebeliso le ho li fetolela lilaebraring tse ncha, ho etsa khoutu e ntle ea mohloli.

Ho sebetsa le database


Database e ka aroloa hampe ho feta khoutu ea mohloli, kaha ha e na feela schema ea hona joale, empa e boetse e bokelletse data ea histori.

Database ea rona, joalo ka tse ling tse ngata, e ne e e-na le tšitiso e 'ngoe ea bohlokoa - boholo ba eona bo boholo. Sebaka sena sa polokelo ea boitsebiso se entsoe ho latela mokhoa o rarahaneng oa khoebo oa monolith, le likamano tse bokelletsoeng pakeng tsa litafole tsa maemo a fapaneng a moeli.

Tabeng ea rona, ho phahamisa mathata ohle (database e kholo, likhokahano tse ngata, ka linako tse ling meeli e sa hlakang pakeng tsa litafole), ho ile ha hlaha bothata bo hlahang mererong e mengata e meholo: tšebeliso ea template e arolelanoang ea database. Lintlha li nkiloe litafoleng ka pono, ka ho pheta-pheta, 'me tsa romelloa lits'ebetsong tse ling moo phetiso ena e neng e hlokahala. Ka lebaka leo, ha rea ​​ka ra khona ho tsamaisa litafole ho schema e arohaneng hobane li ne li sebelisoa ka mafolofolo.

Karohano e tšoanang ea maemo a lekanyelitsoeng khoutu e re thusa ka karohano. Hangata e re fa mohopolo o motle oa hore na re senya data joang boemong ba database. Re utloisisa hore na ke litafole life tseo e leng tsa moelelo o le mong, le tsa tse ling.

Re sebelisitse mekhoa e 'meli ea lefats'e ea ho arola li-database: ho arola litafole tse teng le ho arola ka ho sebetsa.

Ho arola litafole tse teng ke mokhoa o motle oa ho o sebelisa haeba sebopeho sa data se le setle, se fihlela litlhoko tsa khoebo, 'me bohle ba se thabela. Tabeng ena, re ka arola litafole tse teng ka schema e arohaneng.

Lefapha le nang le ts'ebetso lea hlokahala ha mokhoa oa khoebo o fetohile haholo, 'me litafole ha li sa re khotsofatsa ho hang.

Ho arola litafole tse teng. Re lokela ho etsa qeto ea hore na re tla arola eng. Ntle le tsebo ena, ha ho letho le tla sebetsa, 'me mona ho arohana ha maemo a lekanyelitsoeng ka khoutu ho tla re thusa. E le molao, haeba u ka utloisisa meeli ea maemo ho khoutu ea mohloli, hoa hlaka hore na ke litafole life tse lokelang ho kenngoa lethathamong la lefapha.

Ha re nahane hore re na le tharollo eo ho eona li-module tse peli tsa monolith li kopanang le database e le 'ngoe. Re hloka ho etsa bonnete ba hore module e le 'ngoe feela e sebelisana le karolo ea litafole tse arohaneng,' me e 'ngoe e qala ho sebelisana le eona ka API. Ho qala, ho lekane hore ho rekota feela ho etsoa ka API. Ena ke boemo bo hlokahalang hore re bue ka boikemelo ba li-microservices. Likhokahano tsa ho bala li ka lula ha feela ho se na bothata bo boholo.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Mohato o latelang ke hore re ka arola karolo ea khoutu e sebetsang le litafole tse arohaneng, ka kapa ntle le ts'ebetso, ho ba microservice e arohaneng le ho e tsamaisa ka mokhoa o fapaneng, setshelo. Ena e tla ba ts'ebeletso e arohaneng e nang le khokahano ho database ea monolith le litafole tse sa amaneng ka kotloloho le eona. Monolith e ntse e sebelisana bakeng sa ho bala le karolo e senyehang.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Hamorao re tla tlosa khokahanyo ena, ke hore, ho bala lintlha tse tsoang ho kopo ea monolithic ho tloha litafoleng tse arohaneng le tsona li tla fetisetsoa ho API.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ka mor'a moo, re tla khetha ho tswa ho database ka kakaretso litafole tseo ho tsona feela microservice e ncha e sebetsang. Re ka fetisetsa litafole ho schema e arohaneng kapa esita le ho database e arohaneng ea 'mele. Ho ntse ho na le khokahano ea ho bala lipakeng tsa microservice le database ea monolith, empa ha ho na letho leo u ka tšoenyehang ka lona, ​​tlhophisong ena e ka phela nako e telele haholo.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Mohato oa ho qetela ke ho tlosa likhokahano tsohle ka botlalo. Tabeng ena, ho ka 'na ha hlokahala hore re fallise data ho tswa ho database e kholo. Ka linako tse ling re batla ho sebelisa hape lintlha kapa li-directory tse phetoang ho tsoa lits'ebetsong tsa kantle ho database tse 'maloa. Sena se etsahala ho rona nako le nako.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Lefapha la ts'ebetso. Mokhoa ona o tšoana haholo le oa pele, feela ka tatellano e fapaneng. Hang-hang re fana ka database e ncha le microservice e ncha e sebetsanang le monolith ka API. Empa ka nako e ts'oanang, ho ntse ho e-na le lethathamo la litafole tsa database tseo re batlang ho li hlakola nakong e tlang. Ha re sa e hloka; re e nketse sebaka sa mofuta o mocha.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

E le hore morero ona o sebetse, re tla hloka nako ea phetoho.

Joale ho na le mekhoa e 'meli e ka khonehang.

Ea pele: re qopitsa lintlha tsohle ho database tse ncha le tsa khale. Tabeng ena, re na le ho fokotseha ha data mme ho ka hlaha mathata a ho hokahanya. Empa re ka nka bareki ba babeli ba fapaneng. E 'ngoe e tla sebetsa le mofuta o mocha, e mong o tla sebetsa le ea khale.

Ea bobeli: re arola data ho latela mekhoa e meng ea khoebo. Ka mohlala, re ne re e-na le lihlahisoa tse 5 tsamaisong e neng e bolokiloe polokelong ea khale. Re beha ea botšelela ka har'a mosebetsi o mocha oa khoebo ho database e ncha. Empa re tla hloka API Gateway e tla hokahanya data ena le ho bonts'a moreki hore na o tsoa hokae le hore na o tsoa hokae.

Mekhoa ena ka bobeli e sebetsa, khetha ho latela maemo.

Ka mor'a hore re kholisehe hore ntho e 'ngoe le e' ngoe e sebetsa, karolo ea monolith e sebetsang le mehaho ea khale ea database e ka holofala.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Mohato oa ho qetela ke ho tlosa mekhoa ea khale ea data.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ho akaretsa, re ka re re na le mathata le database: ho thata ho sebetsa le eona ha ho bapisoa le khoutu ea mohloli, ho thata ho arolelana, empa ho ka khoneha ebile ho lokela ho etsoa. Re fumane mekhoa e re lumellang ho etsa sena ka mokhoa o sireletsehileng, empa ho ntse ho le bonolo ho etsa liphoso ka data ho feta ka khoutu ea mohloli.

Ho sebetsa ka khoutu ea mohloli


Sena ke seo setšoantšo sa khoutu ea mohloli se neng se shebahala kateng ha re qala ho hlahloba morero oa monolithic.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

E ka aroloa hoo e batlang e le likarolo tse tharo. Ena ke lera la li-module tse qalileng, li-plugins, lits'ebeletso le mesebetsi ea motho ka mong. Ha e le hantle, tsena e ne e le lintlha tsa ho kena ka har'a tharollo ea monolithic. Kaofela ha tsona li ne li tiisitsoe ka thata ka Lesela le Tloaelehileng. E ne e na le mohopolo oa khoebo oo lits'ebeletso li neng li arolelana le likhokahano tse ngata. Ts'ebeletso e 'ngoe le e' ngoe le plugin e sebelisoa ho fihla ho likopano tse 10 kapa ho feta tse tloaelehileng, ho latela boholo ba tsona le letsoalo la bahlahisi.

Re bile lehlohonolo ho ba le lilaeborari tsa meralo ea motheo tse ka sebelisoang ka thoko.

Ka linako tse ling boemo bo ne bo hlaha ha lintho tse ling tse tloaelehileng e ne e se tsa lera lena, empa e ne e le lilaebrari tsa meaho. Sena se ile sa rarolloa ka ho reha bocha.

Taba e kholo ka ho fetisisa e ne e le maemo a sa tšoaneng. Ho ile ha etsahala hore maemo a 3-4 a kopane kopanong e le 'ngoe e tloaelehileng' me a sebelisane ka har'a mesebetsi e tšoanang ea khoebo. Ho ne ho hlokahala ho utloisisa hore na sena se ka aroloa hokae le hore na ke meeli efe, le hore na ho ka etsoa eng ka mor'a ho etsa 'mapa oa karohano ena hore e be likopano tsa khoutu ea mohloli.

Re thehile melao e mengata bakeng sa mokhoa oa ho arola khoutu.

Ea pele: Ha re sa batla ho arolelana logic ea khoebo pakeng tsa lits'ebeletso, mesebetsi le li-plugins. Re ne re batla ho etsa hore maano a khoebo a ikemele ka har'a li-microservices. Ka lehlakoreng le leng, li-Microservices li nkoa e le litšebeletso tse teng ka ho feletseng. Ke lumela hore mokhoa ona o batla o senya, 'me ho thata ho o finyella, hobane, ka mohlala, litšebeletso tsa C # li tla kopanngoa le laebrari e tloaelehileng. Sistimi ea rona e ngotsoe ho C #; ha re so sebelise mahlale a mang. Kahoo, re ile ra etsa qeto ea hore re ka khona ho sebelisa likopano tse tloaelehileng tsa theknoloji. Ntho e ka sehloohong ke hore ha li na likaroloana tsa mohopolo oa khoebo. Haeba u na le sephutheloana se bonolo holim'a ORM eo u e sebelisang, joale ho e kopitsa ho tloha tšebeletsong ho ea ho tšebeletso ho bitsa chelete e ngata haholo.

Sehlopha sa rona se rata moralo o khannoang ke domain, kahoo meaho ea onion e ne e re lekana hantle. Motheo oa lits'ebeletso tsa rona ha se lera la phihlello ea data, empa ke kopano e nang le domain logic, e nang le mohopolo oa khoebo feela mme e se nang likhokahano le lisebelisoa. Ka nako e ts'oanang, re ka ikemela ho fetola domain name ho rarolla mathata a amanang le meralo.

Mothating ona re ile ra kopana le bothata ba rōna ba pele bo tebileng. Ts'ebeletso e ne e tlameha ho bua ka kopano e le 'ngoe ea domain, re ne re batla ho etsa hore mohopolo o ikemele, mme molao-motheo oa DRY o ile oa re sitisa haholo mona. Bahlahisi ba ne ba batla ho sebelisa litlelase tse tsoang likopanong tsa boahelani ho qoba ho pheta-pheta, 'me ka lebaka leo, libaka li ile tsa qala ho hokahana hape. Re hlahlobile liphetho mme ra etsa qeto ea hore mohlomong bothata bo boetse bo le sebakeng sa sesebelisoa sa polokelo ea khoutu ea mohloli. Re ne re e-na le polokelo e kholo e nang le khoutu eohle ea mohloli. Tharollo bakeng sa morero oohle e ne e le thata haholo ho bokana ka mochine oa sebakeng seo. Ka hona, litharollo tse nyane tse arohaneng li entsoe bakeng sa likarolo tsa morero, 'me ha ho motho ea hanetseng ho eketsa kopano e itseng e tloaelehileng kapa ea domain ho tsona le ho li sebelisa hape. Sesebelisoa feela se neng se sa re lumelle ho etsa sena ke tlhahlobo ea khoutu. Empa ka linako tse ling le eona e ile ea hlōleha.

Eaba re qala ho fallela moetsong o nang le li-repositories tse arohaneng. Maikutlo a khoebo ha a sa phalla ho tloha tšebeletsong ho ea ho tšebeletso, libaka li se li ikemetse. Maemo a lekanyelitsoeng a tšehetsoa ka mokhoa o hlakileng haholoanyane. Re sebelisa lilaebrari tsa meralo joang hape? Re li arola sebakeng sa polokelo e arohaneng, ebe re li kenya ka har'a liphutheloana tsa Nuget, tseo re li kentseng ho Artifactory. Ka phetoho efe kapa efe, kopano le phatlalatso li etsahala ka tsela e iketsang.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Litšebeletso tsa rona li ile tsa qala ho supa liphutheloana tsa meaho ea kahare ka tsela e ts'oanang le ea kantle. Re khoasolla lilaebrari tsa kantle ho Nuget. Ho sebetsa le Artifactory, moo re neng re beha liphutheloana tsena, re sebelisitse batsamaisi ba liphutheloana tse peli. Libakeng tse nyenyane tsa polokelo re ne re boetse re sebelisa Nuget. Libakeng tsa polokelo tse nang le lits'ebeletso tse ngata, re sebelisitse Paket, e fanang ka phetoho e eketsehileng lipakeng tsa li-module.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Kahoo, ka ho sebetsa ka khoutu ea mohloli, ho fetola hanyenyane mohaho le ho arola libaka tsa polokelo, re etsa hore litšebeletso tsa rona li ikemele haholoanyane.

Mathata a meralo


Boholo ba mathata a ho fallela ho li-microservices ke tse amanang le meaho. O tla hloka ho romelloa ka boiketsetso, o tla hloka lilaebrari tse ncha ho tsamaisa meaho.

Ho kenya letsoho ka letsoho libakeng

Qalong, re kentse tharollo bakeng sa tikoloho ka letsoho. Ho iketsetsa ts'ebetso ena, re thehile pipeline ea CI/CD. Re khethile mokhoa o tsoelang pele oa ho fana ka thepa hobane ho tsamaisoa ho tsoelang pele ha ho e-s'o amohelehe ho rona ho latela pono ea mekhoa ea khoebo. Ka hona, ho romela bakeng sa ts'ebetso ho etsoa ho sebelisoa konopo, le bakeng sa tlhahlobo - ka ho iketsa.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Re sebelisa Atlassian, Bitbucket bakeng sa polokelo ea khoutu ea mohloli le Bamboo bakeng sa ho haha. Re rata ho ngola li-scripts ho Cake hobane e tšoana le C #. Liphutheloana tse lokiselitsoeng li tla ho Artifactory, 'me Ansible e fihla ka bo eona ho li-server tsa liteko, ka mor'a moo li ka lekoa hang-hang.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Ho rema lifate tse arohaneng


Ka nako e 'ngoe, e' ngoe ea mehopolo ea monolith e ne e le ho fana ka lifate tse arolelanoang. Re ne re boetse re hloka ho utloisisa hore na re etse eng ka li-log tse ka har'a li-disk. Li-log tsa rona li ngoletsoe lifaele tsa mongolo. Re nkile qeto ea ho sebelisa stack e tloaelehileng ea ELK. Ha rea ​​ka ra ngolla ELK ka ho toba ka bafani, empa re ile ra etsa qeto ea hore re tla fetola lingoloa tsa mongolo ebe re ngola trace ID ho tsona e le sesupo, re eketsa lebitso la ts'ebeletso, e le hore li-log tsena li ka aroloa hamorao.

Phetoho ho tloha monolith ho ea ho microservices: nalane le boikoetliso

Re sebelisa Filebeat, re fumana monyetla oa ho bokella lits'oants'o tsa rona ho li-server, ebe re li fetola, sebelisa Kibana ho haha ​​​​lipotso ho UI le ho bona hore na pitso e tsamaile joang pakeng tsa litšebeletso. Trace ID e thusa haholo ka sena.

Litšebeletso tse amanang le liteko le ho lokisa liphoso


Qalong, re ne re sa utloisise ka botlalo mokhoa oa ho lokisa litšebeletso tse ntseng li ntlafatsoa. Ntho e ngoe le e ngoe e ne e le bonolo ka monolith; re ne re e tsamaisa ka mochini oa lehae. Qalong ba ile ba leka ho etsa se tšoanang ka li-microservices, empa ka linako tse ling ho qala microservice e le 'ngoe ka botlalo u hloka ho qala tse ling tse' maloa, 'me sena ha se bonolo. Re ile ra hlokomela hore re hloka ho fallela ho mohlala moo re tlohelang mochine oa lehae feela tšebeletso kapa litšebeletso tseo re batlang ho li lokisa. Litšebeletso tse setseng li sebelisoa ho tsoa ho li-server tse tsamaellanang le tlhophiso le prod. Ka mor'a ho lokisa liphoso, nakong ea teko, bakeng sa mosebetsi o mong le o mong, ke litšebeletso tse fetotsoeng feela tse fanoang ho seva sa teko. Ka hona, tharollo e lekoa ka mokhoa oo e tla hlaha ka eona tlhahiso nakong e tlang.

Ho na le li-server tse tsamaisang mefuta ea tlhahiso ea litšebeletso feela. Li-server tsena lia hlokahala haeba ho ka ba le liketsahalo, ho lekola ho tsamaisoa pele ho romelloa le bakeng sa koetliso ea kahare.

Re kentse mokhoa oa ho etsa liteko ka boiketsetso re sebelisa laeborari e tsebahalang ea Specflow. Liteko li sebetsa ka bohona li sebelisa NUnit hang kamora ho romelloa ho tsoa ho Ansible. Haeba ts'ebetso ea ts'ebetso e ikemela ka botlalo, ha ho hlokahale hore ho etsoe tlhahlobo ea matsoho. Le hoja ka linako tse ling ho ntse ho hlokahala tlhahlobo e eketsehileng ea matsoho. Re sebelisa li-tag ho Jira ho fumana hore na ke liteko life tse lokelang ho etsoa bakeng sa bothata bo itseng.

Ho feta moo, tlhoko ea tlhahlobo ea mojaro e eketsehile; pele e ne e etsoa feela maemong a sa tloaelehang. Re sebelisa JMeter ho etsa liteko, InfluxDB ho li boloka, le Grafana ho etsa li-graph graph.

Re fihletse eng?


Taba ea pele, re tlositse mohopolo oa "tokoloho". Litokollo tse nyarosang tsa likhoeli tse peli li felile ha colossus ena e ne e behiloe tikolohong ea tlhahiso, e sitisang mekhoa ea khoebo ka nakoana. Hona joale re sebelisa litšebeletso ka karolelano matsatsing a mang le a mang a 1,5, re li arola ka lihlopha hobane li qala ho sebetsa ka mor'a tumello.

Ha ho na liphoso tse bolaeang tsamaisong ea rona. Haeba re lokolla microservice ka kokoanyana, joale ts'ebetso e amanang le eona e tla robeha, 'me mesebetsi e meng eohle e ke ke ea ameha. Sena se ntlafatsa haholo boiphihlelo ba mosebelisi.

Re ka laola mokhoa oa ho romelloa. U ka khetha lihlopha tsa litšebeletso ka thoko ho tse ling tsa tharollo, haeba ho hlokahala.

Ho feta moo, re fokolitse bothata haholo ka mokoloko o moholo oa ntlafatso. Hona joale re na le lihlopha tse arohaneng tsa lihlahisoa tse sebetsang le tse ling tsa litšebeletso li ikemetseng. Ts'ebetso ea Scrum e se e ntse e lekana hantle mona. Sehlopha se ikhethileng se ka ba le Mong'a Sehlahisoa ea ka thoko ea se fang mesebetsi.

Kakaretso

  • Li-Microservices li loketse hantle bakeng sa ho bola litsamaiso tse rarahaneng. Ts'ebetsong, re qala ho utloisisa se leng tsamaisong ea rona, hore na ho na le maemo afe a fokolang, moo meeli ea bona e leng teng. Sena se o lumella ho aba lintlafatso ka nepo har'a li-module le ho thibela pherekano ea khoutu.
  • Microservices e fana ka melemo ea mokhatlo. Hangata ho buuoa ka tsona feela e le mehaho, empa mohaho leha e le ofe o hlokahalang ho rarolla litlhoko tsa khoebo, eseng ka boeona. Ka hona, re ka re li-microservices li loketse hantle ho rarolla mathata lihlopheng tse nyane, kaha Scrum e tumme haholo hona joale.
  • Karohano ke ts'ebetso e pheta-phetoang. U ke ke ua nka kopo ebe u e arola ka li-microservices. Sehlahisoa se hlahisoang ha se khonehe hore se sebetse. Ha u nehelana ka li-microservices, ho molemo ho ngola lefa le seng le ntse le le teng, ke hore, ho le fetola khoutu eo re e ratang le ho finyella litlhoko tsa khoebo hamolemo ho latela ts'ebetso le lebelo.

    Tlhahiso e nyane: Litsenyehelo tsa ho fallela ho microservices li bohlokoa haholo. Ho nkile nako e telele ho rarolla bothata ba meralo feela. Kahoo haeba o na le ts'ebeliso e nyane e sa hlokeng sekhahla se itseng, ntle le haeba o na le palo e kholo ea bareki ba qothisanang lehlokoa le sehlopha sa hau le nako, li-microservices e kanna ea se be seo u se hlokang kajeno. E turu haholo. Haeba u qala ts'ebetso ka li-microservices, joale litšenyehelo li tla ba tse phahameng ho feta ha u qala morero o tšoanang le nts'etsopele ea monolith.

    PS Pale ea maikutlo a mangata (le joalokaha eka ke bakeng sa hau ka boeena) - ho latela kgokahanyo.
    Tlaleho e felletseng ea tlaleho ke ena.

Source: www.habr.com

Eketsa ka tlhaloso