Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

N'isiokwu a, m ga-ekwu maka otu ọrụ m na-arụ ọrụ si gbanwee site na nnukwu monolith ka ọ bụrụ usoro nke microservices.

Ọrụ ahụ malitere akụkọ ihe mere eme ya ogologo oge gara aga, na mmalite nke 2000. Edere nsụgharị mbụ na Visual Basic 6. Ka oge na-aga, ọ bịara doo anya na mmepe n'asụsụ a ga-esi ike ịkwado n'ọdịnihu, ebe ọ bụ na IDE. na asụsụ n'onwe ya etochaghị nke ọma. Na njedebe nke afọ 2000, e kpebiri ịgbanwe gaa na C # na-ekwe nkwa. Edere ụdị ọhụrụ ahụ na ngbanwe nke ochie, jiri nwayọọ nwayọọ na-edepụta koodu na .NET. Azụ azụ na C # lekwasịrị anya na mbụ na nhazi ụlọ ọrụ, mana n'oge mmepe, a na-eji ọba akwụkwọ nkịtị nwere mgbagha, wee malite ọrụ n'otu usoro. Nsonaazụ bụ ngwa anyị kpọrọ “monolith ọrụ.”

Otu n'ime uru ole na ole dị na nchikota a bụ ike ọrụ ịkpọ ibe ya site na API mpụga. Enwere ihe doro anya ihe achọrọ maka mgbanwe gaa na ọrụ ziri ezi, na n'ọdịniihu, ụlọ ọrụ microservice.

Anyị malitere ọrụ anyị na ire ere gburugburu 2015. Anyị erutebeghị ọnọdụ dị mma - a ka nwere akụkụ nke nnukwu ọrụ a na-apụghị ịkpọ monoliths, mana ha adịghịkwa ka microservices. Ka o sina dị, ọganihu dị ịrịba ama.
M ga-ekwu maka ya n'isiokwu.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ihe

Architecture na nsogbu nke ihe ngwọta dị


Na mbido, ihe owuwu ahụ dị ka nke a: UI bụ ngwa dị iche, edere akụkụ monolithic na Visual Basic 6, ngwa NET bụ otu ọrụ metụtara ya na-arụ ọrụ na nnukwu nchekwa data.

Ọdịmma nke ngwọta gara aga

Otu ebe ọdịda
Anyị nwere otu isi ihe ọdịda: ngwa NET na-agba ọsọ n'otu usoro. Ọ bụrụ na modul ọ bụla dara, ngwa ahụ niile dara, a ga-amalitekwa ya. Ebe ọ bụ na anyị na-akpaghị aka ọtụtụ usoro maka ndị ọrụ dị iche iche, n'ihi ọdịda nke otu n'ime ha, onye ọ bụla enweghị ike ịrụ ọrụ ruo oge ụfọdụ. Na n'ihe banyere njehie software, ọbụna nkwado ndabere na mpaghara enyeghị aka.

Ahịrị nke mmezi
Nke a ndọghachi azụ bụ kama nhazi. Ngwa anyị nwere ọtụtụ ndị ahịa, na ha niile chọrọ imeziwanye ya ozugbo enwere ike. Na mbụ, ọ gaghị ekwe omume ime nke a n'otu aka ahụ, ndị ahịa niile guzoro n'ahịrị. Usoro a adịghị mma maka azụmahịa n'ihi na ha aghaghị igosi na ọrụ ha bara uru. Na ndị otu mmepe wepụtara oge ịhazi kwụ n'ahịrị a. Nke a were ọtụtụ oge na mbọ, na ngwaahịa n'ikpeazụ enweghị ike ịgbanwe ngwa ngwa dị ka ha ga-amasị.

Iji akụrụngwa eme ihe nke ọma
Mgbe ị na-elekọta ọrụ n'otu usoro, anyị na-edepụtaghachi nhazi ahụ kpamkpam site na sava gaa na nkesa. Anyị chọrọ idowe ọrụ ndị kacha ibu dị iche iche ka ha ghara ịla n'iyi ma nweta njikwa mgbanwe karịa n'atụmatụ ibunye anyị.

Ọ siri ike itinye teknụzụ ọgbara ọhụrụ
Nsogbu maara nke ọma na ndị mmepe niile: enwere ọchịchọ ịmebata teknụzụ ọgbara ọhụrụ n'ime ọrụ ahụ, mana ọ nweghị ohere. Site na nnukwu ngwọta monolithic, mmelite ọ bụla nke ọbá akwụkwọ dị ugbu a, ọ bụghị ịkọwa mgbanwe gaa na nke ọhụrụ, na-atụgharị ka ọ bụrụ ọrụ na-adịghị mkpa. Ọ na-ewe ogologo oge iji gosi onye ndu otu na nke a ga-eweta ọtụtụ ego karịa irighiri akwara.

Ihe isi ike iwepụta mgbanwe
Nke a bụ nsogbu kacha njọ - anyị na-ewepụta mwepụta kwa ọnwa abụọ.
Ntọhapụ ọ bụla ghọrọ ezigbo ọdachi maka ụlọ akụ, n'agbanyeghị ule na mbọ nke ndị mmepe. Azụmahịa ahụ ghọtara na na mmalite nke izu ụfọdụ ọrụ ya agaghị arụ ọrụ. Na ndị mmepe ghọtara na otu izu nke ihe omume dị njọ na-echere ha.
Onye ọ bụla nwere ọchịchọ ịgbanwe ọnọdụ ahụ.

Atụmanya sitere na microservices


Mwepụta nke components mgbe njikere. Nnyefe ihe ndị dị na ya mgbe ọ dị njikere site na imebi ihe ngwọta na ikewapụ usoro dị iche iche.

Otu obere ngwaahịa. Nke a dị mkpa n'ihi na otu nnukwu ìgwè na-arụ ọrụ na monolith ochie siri ike ijikwa. A manyere ndị otu dị otú ahụ ịrụ ọrụ dịka usoro siri ike si dị, ma ha chọrọ inwekwu ihe okike na nnwere onwe. Naanị obere ìgwè nwere ike imeli nke a.

Mwepu nke ọrụ na usoro dị iche iche. Dị ka o kwesịrị, achọrọ m ikewapụ ya na arịa, mana ọnụ ọgụgụ buru ibu nke ọrụ edere na NET Framework na-agba naanị na Windows. Ọrụ dabere na .NET Core na-apụta ugbu a, mana enwere ole na ole n'ime ha.

Mgbanwe mgbanwe. Ọ ga-amasị anyị ijikọ ọrụ dịka anyị siri chọọ ya, ọ bụghịkwa ka koodu ahụ si amanye ya.

Iji teknụzụ ọhụrụ. Nke a na-amasị onye mmemme ọ bụla.

Nsogbu mgbanwe


N'ezie, ọ bụrụ na ọ dị mfe imebi monolith n'ime microservices, ọ gaghị adị mkpa ikwu banyere ya na nnọkọ ma dee akụkọ. Enwere ọtụtụ ọnyà na usoro a, m ga-akọwa nke bụ isi nke gbochiri anyị.

Nsogbu mbụ ahụkarị maka ọtụtụ monoliths: ịdị n'otu nke mgbagha azụmahịa. Mgbe anyị na-ede monolith, anyị chọrọ iji klaasị anyị mee ihe ka anyị wee ghara ide koodu na-adịghị mkpa. Na mgbe ị na-akwaga na microservices, nke a na-aghọ nsogbu: koodu niile na-ejikọta ya nke ọma, ọ na-esiri ike ikewapụ ọrụ ahụ.

N'oge mmalite nke ọrụ, ebe nchekwa ahụ nwere ihe karịrị ọrụ 500 na ihe karịrị 700 puku ahịrị koodu. Nke a bụ nnọọ nnukwu mkpebi na nsogbu nke abụọ. Ọ gaghị ekwe omume naanị iwere ya kewaa ya na obere ọrụ.

Nsogbu nke atọ - enweghi akụrụngwa dị mkpa. N'ezie, anyị ji aka na-edegharị koodu isi na sava ahụ.

Otu esi esi na monolith gaa na microservices


Na-enye Microservices

Mbụ, anyị kpebiri ozugbo n'onwe anyị na nkewa nke microservices bụ usoro ugboro ugboro. A na-achọrọ anyị mgbe niile ịzụlite nsogbu azụmahịa n'otu aka ahụ. Otu anyị ga-esi mejuputa nke a na teknụzụ abụrụlarị nsogbu anyị. Ya mere, anyị na-akwado maka usoro ihe omume. Ọ gaghị arụ ọrụ n'ụzọ ọ bụla ọzọ ma ọ bụrụ na ị nwere nnukwu ngwa na ọ dịbeghị njikere na mbụ ka edegharịa ya.

Kedu ụzọ anyị na-eji kewapụ microservices?

Ụzọ mbụ - bugharịa modul dị ka ọrụ. N'akụkụ a, anyị nwere chioma: enweelarị ọrụ edebanyere aha na-arụ ọrụ site na iji usoro WCF. E kewara ha gaa ná mgbakọ dị iche iche. Anyị na-ebufe ha iche iche, na-agbakwunye obere ihe nrụpụta n'ime ụlọ ọ bụla. Edere ya site na iji ọmarịcha ọba akwụkwọ Topshelf, nke na-enye gị ohere ịme ngwa ahụ ma dịka ọrụ ma dịka njikwa. Nke a dị mma maka nbipu ebe ọ bụ na ọ dịghị ọrụ ọzọ achọrọ na ngwọta.

Ejikọtara ọrụ ndị a dị ka echiche azụmahịa si dị, ebe ọ bụ na ha na-eji mgbakọ nkịtị ma rụọ ọrụ na nchekwa data nkịtị. Enweghị ike ịkpọ ha microservices n'ụdị ha dị ọcha. Agbanyeghị, anyị nwere ike ịnye ọrụ ndị a iche iche, na usoro dị iche iche. Naanị nke a mere ka o kwe omume ibelata mmetụta ha n'ebe ibe ha nọ, na-ebelata nsogbu ahụ na mmepe yiri ya na otu ebe ọdịda.

Mgbakọ na onye ọbịa bụ naanị otu ahịrị koodu na klaasị mmemme. Anyị na Topshelf zoro ọrụ na klas inyeaka.

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

       }
    }
}

Ụzọ nke abụọ iji kenye microservices bụ: mepụta ha iji dozie nsogbu ọhụrụ. Ọ bụrụ n'otu oge ahụ monolith adịghị eto, nke a adịlarị mma, nke pụtara na anyị na-aga n'ụzọ ziri ezi. Iji dozie nsogbu ọhụrụ, anyị gbalịrị ịmepụta ọrụ dị iche iche. Ọ bụrụ na enwere ohere dị otú ahụ, mgbe ahụ, anyị mepụtara ọrụ "canonical" ndị ọzọ na-ejikwa ụdị data nke ha kpamkpam, nchekwa data dị iche.

Anyị, dị ka ọtụtụ, malitere site na nyocha na ọrụ ikike. Ha zuru oke maka nke a. Ha nwere onwe ha, dịka iwu, ha nwere ụdị data dị iche iche. Ha onwe ha adịghị emekọrịta ihe na monolith, naanị ọ na-atụgharị na ha iji dozie nsogbu ụfọdụ. N'iji ọrụ ndị a, ị nwere ike ịmalite mgbanwe gaa na ụlọ ọhụrụ, mebie akụrụngwa na ha, gbalịa ụzọ ụfọdụ metụtara ụlọ akwụkwọ netwọk, wdg. Anyị enweghị otu ọ bụla na nzukọ anyị nke na-enweghị ike ịmepụta ọrụ nyocha.

Ụzọ nke atọ iji nyefee microservicesNke anyị na-eji bụ ntakịrị kpọmkwem nye anyị. Nke a bụ mwepụ nke mgbagha azụmahịa na oyi akwa UI. Ngwa UI bụ isi anyị bụ desktọpụ; ya, dị ka azụ azụ, edere ya na C #. Ndị mmepe ahụ mehiere oge ụfọdụ wee bufee akụkụ nke mgbagha na UI nke kwesịrị ịdị adị na azụ azụ wee jirikwa ya ọzọ.

Ọ bụrụ na ị lelee ezigbo ihe atụ site na koodu nke akụkụ UI, ị nwere ike ịhụ na ọtụtụ n'ime ngwọta a nwere ezigbo echiche azụmahịa nke bara uru na usoro ndị ọzọ, ọ bụghị naanị maka ịmepụta ụdị UI.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ezigbo mgbagha UI dị naanị na ahịrị abụọ ikpeazụ. Anyị bufere ya na ihe nkesa ka enwere ike iji ya mee ihe ọzọ, si otú ahụ belata UI wee nweta nhazi ụlọ ziri ezi.

Ụzọ nke anọ na nke kachasị mkpa iji kewapụ microservices, nke na-eme ka o kwe omume ibelata monolith, bụ iwepụ ọrụ ndị dị na nhazi. Mgbe anyị wepụrụ modul ndị dị ugbu a, ọ bụghị mgbe niile ka ndị mmepe na-enwe mmasị na ya, na usoro azụmahịa nwere ike bụrụ ihe mgbe ochie ebe ọ bụ na e kere ọrụ ahụ. Na refactoring, anyị nwere ike ịkwado usoro azụmahịa ọhụrụ n'ihi na azụmahịa chọrọ na-agbanwe mgbe niile. Anyị nwere ike melite koodu isi mmalite, wepụ ntụpọ ndị ama ama, wee mepụta ụdị data ka mma. Enwere ọtụtụ uru na-enweta.

Ikewapụ ọrụ na nhazi bụ ihe jikọrọ ya na echiche nke ọnọdụ nwere oke. Nke a bụ echiche sitere na ngalaba achụpụrụ imewe. Ọ pụtara akụkụ nke ụdị ngalaba nke akọwapụtara usoro niile nke otu asụsụ n'ụzọ pụrụ iche. Ka anyị leba anya n'ihe gbasara mkpuchi na ụgwọ dịka ọmụmaatụ. Anyị nwere ngwa monolithic, anyị kwesịrị ịrụ ọrụ na akaụntụ ahụ na mkpuchi. Anyị na-atụ anya ka onye nrụpụta ahụ chọta klas Akaụntụ dị na mgbakọ ọzọ, depụta ya na klaasị Inshọransị, anyị ga-enwe koodu ọrụ. A ga-asọpụrụ ụkpụrụ DRY, a ga-arụ ọrụ ahụ ngwa ngwa site na iji koodu dị ugbu a.

N'ihi ya, ọ na-apụta na a na-ejikọta ọnọdụ nke akaụntụ na mkpuchi. Ka ihe ọhụrụ chọrọ pụta, njikọ a ga-egbochi mmepe, na-abawanye mgbagwoju anya nke mgbagwoju anya azụmahịa. Iji dozie nsogbu a, ịkwesịrị ịchọta oke n'etiti ọnọdụ dị na koodu ma wepụ mmebi ha. Dịka ọmụmaatụ, na ọnọdụ mkpuchi, ọ ga-ekwe omume na nọmba akaụntụ Central Bank nke 20-XNUMX na ụbọchị e meghere akaụntụ ahụ ga-ezuru.

Iji kewaa ọnọdụ ndị a nwere oke na ibe ha wee malite usoro nkewapụ microservices na ngwọta monolithic, anyị jiri ụzọ dị ka ịmepụta API mpụga n'ime ngwa ahụ. Ọ bụrụ na anyị maara na ụfọdụ modul kwesịrị ịghọ microservice, n'ụzọ ụfọdụ gbanwee n'ime usoro ahụ, mgbe ahụ anyị mere oku ozugbo na mgbagha nke bụ nke ọzọ nwere oke site na oku mpụga. Dịka ọmụmaatụ, site na REST ma ọ bụ WCF.

Anyị kpebisiri ike na anyị agaghị ezere koodu nke ga-achọ azụmahịa ekesa. N'ọnọdụ anyị, ọ bịara dị mfe ịgbaso iwu a. Anyị ahụbeghị ọnọdụ ebe a chọrọ n'ezie azụmahịa nkesa nkesa - njedebe ikpeazụ n'etiti modul zuru oke.

Ka anyị lee otu ihe atụ a kapịrị ọnụ. Anyị nwere echiche nke onye na-agụ egwú - pipeline na-arụ ọrụ nke "ngwa" ahụ. Ọ na-emepụta onye ahịa, akaụntụ na kaadị akụ n'aka nke ya. Ọ bụrụ na emepụtara onye ahịa na akaụntụ nke ọma, mana imepụta kaadị ahụ ada ada, ngwa ahụ anaghị aga n'ọkwa “na-aga nke ọma” ma nọgide na ọkwa “kaadị emebeghị”. N'ọdịnihu, ọrụ ndabere ga-eburu ya wee mechaa ya. Usoro a nọ n'ọnọdụ enweghị nkwekọrịta ruo oge ụfọdụ, mana anyị na-enwe afọ ojuju na nke a.

Ọ bụrụ na ọnọdụ bilitere mgbe ọ dị mkpa ka ị na-echekwa akụkụ nke data ahụ mgbe niile, anyị ga-agarịrị maka ịkwado ọrụ ahụ iji hazie ya n'otu usoro.

Ka anyị leba anya n'ihe atụ nke ikenye microservice. Kedu ka ị ga-esi weta ya na mmepụta nke ọma? N'ihe atụ a, anyị nwere akụkụ dị iche iche nke usoro ahụ - modul ọrụ ụgwọ ọrụ, otu n'ime akụkụ koodu nke anyị ga-achọ ime microservice.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Nke mbụ, anyị na-emepụta microservice site na idegharị koodu ahụ. Anyị na-emeziwanye akụkụ ụfọdụ ndị anyị na-enwechaghị obi ụtọ. Anyị na-emejuputa azụmahịa ọhụrụ chọrọ n'aka ndị ahịa. Anyị na-agbakwunye ọnụ ụzọ API na njikọ dị n'etiti UI na azụ azụ, nke ga-enye mbugharị oku.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ọzọ, anyị na-ahapụ nhazi a ka ọ rụọ ọrụ, mana na steeti pilot. Ọtụtụ n'ime ndị ọrụ anyị ka na-arụ ọrụ na usoro azụmahịa ochie. Maka ndị ọrụ ọhụrụ, anyị na-emepụta ụdị ngwa monolithic ọhụrụ na-enweghịzi usoro a. N'ezie, anyị nwere ngwakọta nke monolith na microservice na-arụ ọrụ dị ka onye na-anya ụgbọelu.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Site na onye na-anya ụgbọ elu na-aga nke ọma, anyị ghọtara na nhazi ọhụrụ a na-arụ ọrụ n'ezie, anyị nwere ike wepụ monolith ochie na nha anya ma hapụ nhazi ọhụrụ n'ọnọdụ nke ngwọta ochie.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Na mkpokọta, anyị na-eji ihe fọrọ nke nta ka ọ bụrụ ụzọ niile dị adị maka ikewa koodu isi iyi nke monolith. Ha niile na-enye anyị ohere ibelata akụkụ nke ngwa ma tụgharịa ha na ọba akwụkwọ ọhụrụ, na-eme koodu isi mmalite ka mma.

Na-arụ ọrụ na nchekwa data


Enwere ike kewaa nchekwa data dị njọ karịa koodu isi mmalite, ebe ọ bụ na o nwere ọ bụghị naanị atụmatụ dị ugbu a, kamakwa chịkọbara data akụkọ ihe mere eme.

Ebe nchekwa data anyị, dị ka ọtụtụ ndị ọzọ, nwere ihe ndọghachi azụ ọzọ dị mkpa - nnukwu nha ya. Emebere nchekwa data a dabere na mgbagha azụmahịa dị mgbagwoju anya nke monolith, yana mmekọrịta chịkọbara n'etiti tebụl nke ọnọdụ dị iche iche nwere oke.

N'ọnọdụ anyị, n'elu nsogbu niile (nnukwu nchekwa data, ọtụtụ njikọ, mgbe ụfọdụ na-edoghị ókè n'etiti tebụl), nsogbu bilitere na-eme n'ọtụtụ nnukwu oru ngo: ojiji nke na-akọrọ database template. E wepụrụ data site na tebụl site na nlele, site na ntugharị, ma bupu ya na sistemụ ndị ọzọ ebe achọrọ mmegharị a. N'ihi ya, anyị enweghị ike ibugharị tebụl ndị ahụ n'ime atụmatụ dị iche n'ihi na ejiri ya rụọ ọrụ nke ọma.

Otu nkewa ahụ n'ime oke ọnọdụ dị na koodu ahụ na-enyere anyị aka na nkewa. Ọ na-enyekarị anyị ezigbo echiche nke otu anyị si emebi data na ọkwa nchekwa data. Anyị na-aghọta nke tebụl dị n'otu ọnọdụ nwere oke na nke ọzọ.

Anyị na-eji ụzọ abụọ zuru ụwa ọnụ nke nchekwa data nkewa: nkewa nke tebụl dị na nkebi na nhazi.

Ịkewapụ tebụl ndị dị ugbu a bụ ụzọ dị mma iji mee ihe ma ọ bụrụ na nhazi data dị mma, na-emezu ihe ndị ahịa chọrọ, na onye ọ bụla nwere obi ụtọ na ya. N'okwu a, anyị nwere ike kewaa tebụl ndị dị adị n'ime atụmatụ dị iche.

Ngalaba nwere nhazi dị mkpa mgbe ụdị azụmahịa gbanwere nke ukwuu, na tebụl anaghịkwa emeju anyị afọ ma ọlị.

Na-ekewa tebụl ndị dị adị. Anyị kwesịrị ikpebi ihe anyị ga-ekewa. Na-enweghị ihe ọmụma a, ọ dịghị ihe ga-arụ ọrụ, na ebe a nkewa nke bounded ọnọdụ na koodu ga-enyere anyị aka. Dị ka a na-achị, ọ bụrụ na ị nwere ike ịghọta ókèala nke ọnọdụ na koodu isi mmalite, ọ ga-edo anya nke tebụl kwesịrị ịgụnye na ndepụta maka ngalaba ahụ.

Ka anyị were ya na anyị nwere ngwọta nke modul monolith abụọ na-ejikọta na otu nchekwa data. Anyị kwesịrị ijide n'aka na ọ bụ naanị otu modul na-emekọrịta ihe na ngalaba nke tebụl ndị dịpụrụ adịpụ, nke ọzọ na-amalite imekọrịta ya site na API. Iji malite, o zuru ezu na naanị ndekọ ka a na-eme site na API. Nke a bụ ọnọdụ dị mkpa maka anyị ikwu maka nnwere onwe nke microservices. Njikọ ịgụ akwụkwọ nwere ike ịdịgide ma ọ bụrụhaala na enweghị nnukwu nsogbu.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Nzọụkwụ ọzọ bụ na anyị nwere ike ikewapụ ngalaba nke koodu na-arụ ọrụ na tebụl ndị kewapụrụ iche, na ma ọ bụ na-enweghị nhazi, n'ime microservice dị iche iche ma na-agba ọsọ na usoro dị iche iche, akpa. Nke a ga-abụ ọrụ dị iche na njikọ na nchekwa data monolith na tebụl ndị na-adịghị emetụta ya ozugbo. The monolith ka na-emekọ ihe maka ịgụ ihe na akụkụ nke nwere ike ịpụpụ.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

E mesịa, anyị ga-ewepụ njikọ a, ya bụ, ịgụ data sitere na ngwa monolithic site na tebụl ndị kewara ekewa ga-ebufekwa na API.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Na-esote, anyị ga-ahọrọ na nchekwa data izugbe tebụl nke naanị microservice ọhụrụ na-arụ ọrụ. Anyị nwere ike ibugharị tebụl ahụ gaa na atụmatụ dị iche ma ọ bụ ọbụna na nchekwa data anụ ahụ dị iche. A ka nwere njikọ ọgụgụ n'etiti microservice na nchekwa data monolith, mana ọ nweghị ihe na-echegbu onwe ya, na nhazi a ọ nwere ike ịdị ndụ ruo ogologo oge.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Nzọụkwụ ikpeazụ bụ iwepụ njikọ niile kpamkpam. N'okwu a, anyị nwere ike ịkwaga data sitere na nchekwa data bụ isi. Mgbe ụfọdụ, anyị chọrọ iji ụfọdụ data ma ọ bụ akwụkwọ ndekọ aha emegharịrị site na sistemụ mpụga n'ọtụtụ ọdụ data. Nke a na-eme anyị kwa mgbe.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ngalaba nhazi. Usoro a yiri nke mbụ, naanị n'usoro n'usoro. Anyị na-ekenye ozugbo nchekwa data ọhụrụ yana microservice ọhụrụ na-emekọrịta ihe na monolith site na API. Mana n'otu oge ahụ, a ka nwere tebụl nchekwa data anyị chọrọ ihichapụ n'ọdịnihu. Anyị achọkwaghị ya; anyị dochiri ya na ụdị ọhụrụ ahụ.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ka atụmatụ a wee rụọ ọrụ, anyị ga-achọ oge mgbanwe.

Enwere ụzọ abụọ enwere ike ịbịaru nso.

Nke mbụ: anyị na-emegharị data niile na ọdụ data ọhụrụ na nke ochie. N'okwu a, anyị nwere mweghachi data na nsogbu mmekọrịta nwere ike ibili. Mana anyị nwere ike were ndị ahịa abụọ dị iche iche. Otu ga-arụ ọrụ na ụdị ọhụrụ, nke ọzọ na nke ochie.

Nke abụọ: anyị na-ekewa data dịka ụfọdụ njirisi azụmahịa si dị. Dịka ọmụmaatụ, anyị nwere ngwaahịa 5 na usoro nke echekwara na nchekwa data ochie. Anyị na-etinye nke isii n'ime ọrụ azụmahịa ọhụrụ na nchekwa data ọhụrụ. Mana anyị ga-achọ ọnụ ụzọ API nke ga-emekọrịta data a wee gosi onye ahịa ebe na ihe ọ ga-enweta.

Ụzọ abụọ ahụ na-arụ ọrụ, họrọ dabere na ọnọdụ ahụ.

Mgbe anyị ji n'aka na ihe niile na-arụ ọrụ, akụkụ nke monolith nke na-arụ ọrụ na usoro nchekwa data ochie nwere ike gbanyụọ.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Nzọụkwụ ikpeazụ bụ iwepu ihe owuwu data ochie.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Iji chịkọta, anyị nwere ike ịsị na anyị nwere nsogbu na nchekwa data: ọ na-esiri ike ịrụ ọrụ na ya ma e jiri ya tụnyere koodu isi iyi, ọ na-esiri ike ịkekọrịta, ma ọ nwere ike ime ya. Anyị achọtala ụzọ ụfọdụ na-enye anyị ohere ime nke a n'enweghị nsogbu, mana ọ ka dị mfe iji data mehie karịa iji koodu isi mmalite.

Na-arụ ọrụ na koodu isi mmalite


Nke a bụ ihe eserese koodu isi iyi mgbe anyị malitere nyocha ọrụ monolithic.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Enwere ike kewaa ya n'ụdị atọ. Nke a bụ oyi akwa nke modul, plugins, ọrụ na ihe omume onye ọ bụla. N'ezie, ndị a bụ ebe ntinye n'ime ngwọta monolithic. Ejiri akwa oyi akwa mechie ha niile. Ọ nwere mgbagha azụmahịa nke ọrụ ndị ahụ kesara yana ọtụtụ njikọ. Ọrụ ọ bụla na ngwa mgbakwunye na-eji ruo mgbakọ 10 ma ọ bụ karịa, dabere na nha ha na akọ na uche nke ndị mmepe.

Anyị nwere chi ọma inwe ọba akwụkwọ akụrụngwa nke enwere ike iji iche.

Mgbe ụfọdụ, ọnọdụ na-ebilite mgbe ụfọdụ ihe a na-ahụkarị na-abụghị nke oyi akwa a, kama ọ bụ ọba akwụkwọ akụrụngwa. A doziri nke a site n'ịgbanwe aha.

Ihe kacha echegbu bụ ọnọdụ ndị nwere oke. O mere na 3-4 gbara gburugburu na-agwakọta n'otu mgbakọ na-emekarị ma jiri ibe ha mee ihe n'ime otu ọrụ azụmahịa. Ọ dị mkpa ịghọta ebe enwere ike kewaa nke a yana oke oke, yana ihe a ga-eme na-esote nkewa nkewa a n'ime mgbakọ koodu isi mmalite.

Anyị ewepụtala ọtụtụ iwu maka usoro nkewa koodu.

Nke mbụ: Anyị achọkwaghị ịkekọrịta mgbagha azụmahịa n'etiti ọrụ, mmemme na plugins. Anyị chọrọ ime ka mgbagha azụmaahịa kwụụrụ onwe ya n'ime obere ọrụ. Microservices, n'aka nke ọzọ, a na-eche na ọ bụ ọrụ dị adị kpamkpam. Ekwenyere m na usoro a dị ntakịrị ihe na-abaghị uru, ọ na-esikwa ike inweta, n'ihi na, dịka ọmụmaatụ, ọrụ na C # ga-ejikọta ya na ọbá akwụkwọ ọkọlọtọ. Edere usoro anyị na C #; anyị ejibeghị teknụzụ ndị ọzọ. Ya mere, anyị kpebiri na anyị ga-enwe ike iji mgbakọ teknụzụ nkịtị. Ihe bụ isi bụ na ha enweghị akụkụ ọ bụla nke mgbagha azụmahịa. Ọ bụrụ na ị nwere ihe mkpuchi dị mma n'elu ORM ị na-eji, mgbe ahụ iṅomi ya site na ọrụ gaa na ọrụ dị oke ọnụ.

Ndị otu anyị bụ ndị na-akwado imewe ngalaba, yabụ nrụpụta yabasị dabara anyị mma. Ndabere nke ọrụ anyị abụghị oyi akwa ohere data, mana mgbakọ nwere mgbagha ngalaba, nke nwere naanị mgbagha azụmahịa na enweghị njikọ na akụrụngwa. N'otu oge ahụ, anyị nwere ike gbanwee ngalaba ngalaba iji dozie nsogbu ndị metụtara frameworks.

N'oge a anyị zutere nnukwu nsogbu mbụ anyị. Ọrụ ahụ kwesịrị ịtụ aka na otu mgbakọ ngalaba, anyị chọrọ ime ka echiche ahụ nweere onwe ya, ụkpụrụ DRY na-egbochi anyị nke ukwuu ebe a. Ndị mmepe ahụ chọrọ iji klaasị sitere na ọgbakọ ndị agbata obi wee zere mịgharị, n'ihi ya, ngalaba malitere ijikọ ọnụ ọzọ. Anyị nyochara nsonaazụ ya wee kpebie na ikekwe nsogbu ahụ dịkwa na mpaghara ngwaọrụ nchekwa koodu isi. Anyị nwere nnukwu ebe nchekwa nwere koodu isi mmalite niile. Ngwọta maka ọrụ ahụ dum siri ike ịgbakọta na igwe mpaghara. Ya mere, e kere obere ihe ngwọta dị iche iche maka akụkụ nke ọrụ ahụ, ọ dịghịkwa onye machibidoro ịgbakwunye ụfọdụ mkpokọta ma ọ bụ mgbakọ ngalaba na ha ma jiri ha mee ihe. Naanị ngwa nke na-ekweghị ka anyị mee nke a bụ nyocha koodu. Ma mgbe ụfọdụ ọ na-adakwa.

Mgbe ahụ, anyị malitere ịkwaga na ihe nlereanya nwere ebe nchekwa dị iche iche. Echiche azụmaahịa anaghịzi esi na ọrụ gaa na ọrụ, ngalaba abụrụla ndị nweere onwe ha n'ezie. A na-akwado ọnọdụ ndị nwere oke n'ụzọ doro anya. Kedu ka anyị ga-esi jiri ụlọ akwụkwọ ọbá akwụkwọ arụ ọrụ ọzọ? Anyị kewapụrụ ha n'ime ebe nchekwa dị iche, wee tinye ha na ngwugwu Nuget, nke anyị na-etinye na Artifatory. Na mgbanwe ọ bụla, mgbakọ na mbipụta na-apụta na-akpaghị aka.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ọrụ anyị malitere ịkọwa ngwungwu akụrụngwa dị n'ime n'otu ụzọ ahụ dị na mpụga. Anyị na-ebudata ọba akwụkwọ dị na mpụga Nuget. Iji rụọ ọrụ na Artifatory, ebe anyị na-etinye ngwugwu ndị a, anyị na-eji njikwa ngwugwu abụọ. N'obere ebe nchekwa anyị jikwa Nuget. N'ime ebe nchekwa nwere ọtụtụ ọrụ, anyị na-eji Paket, nke na-enye ngbanwe ụdị n'etiti modul.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ya mere, site n'ịrụ ọrụ na koodu isi mmalite, na-agbanwe ntakịrị ihe owuwu na ikewapụta ebe nchekwa, anyị na-eme ka ọrụ anyị nwee onwe ya.

Nsogbu akụrụngwa


Ọtụtụ n'ime ọdịda dị na ịkwaga microservices bụ akụrụngwa metụtara. Ị ga-achọ mbugharị akpaaka, ị ga-achọ ọba akwụkwọ ọhụrụ iji rụọ akụrụngwa.

Ntinye aka na gburugburu

Na mbido, anyị ejiri aka tinye ihe ngwọta maka gburugburu. Iji megharịa usoro a, anyị mepụtara pipeline CI/CD. Anyị họọrọ usoro nnyefe na-aga n'ihu n'ihi na ntinye aka na-aga n'ihu adịghị anabata anyị site n'echiche nke usoro azụmahịa. Ya mere, a na-eme izipu maka ịrụ ọrụ site na iji bọtịnụ, na maka ule - na-akpaghị aka.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Anyị na-eji Atlassian, Bitbucket maka nchekwa koodu isi iyi yana achara maka iwu ụlọ. Ọ na-amasị anyị ịde ederede ewu na achicha n'ihi na ọ bụ otu C #. Ngwunye ejikere na-abịa na Artifatory, na Ansible na-abanye na sava ule na-akpaghị aka, mgbe nke ahụ gasịrị enwere ike ịnwale ha ozugbo.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Ịkụ osisi iche


N'otu oge, otu n'ime echiche nke monolith bụ inye osisi osisi. Anyị kwesịkwara ịghọta ihe a ga-eji akwụkwọ ndekọ aha ndị dị na diski ahụ eme. Edere ndekọ anyị na faịlụ ederede. Anyị kpebiri iji ọkọlọtọ ELK. Anyị edegaraghị ELK ozugbo site n'aka ndị na-eweta ya, mana anyị kpebiri na anyị ga-emecha ndekọ ederede wee dee ID trace n'ime ha dị ka njirimara, na-agbakwunye aha ọrụ ahụ, ka e wee tụgharịa ndekọ ndị a ma emechaa.

Ntughari site na monolith gaa na microservices: akụkọ ihe mere eme na omume

Iji Filebeat, anyị na-enweta ohere ịnakọta ndekọ anyị site na sava, wee gbanwee ha, jiri Kibana wuo ajụjụ na UI wee hụ ka oku si gaa n'etiti ọrụ. NJ trace na-enyere aka nke ukwuu na nke a.

Nnwale na ihichapụ ọrụ metụtara


Na mbụ, anyị aghọtachaghị otu esi ehichapụ ọrụ ndị a na-emepụta. Ihe niile dị mfe na monolith; anyị na-agba ya na igwe mpaghara. Na mbụ, ha gbalịrị ime otu ihe ahụ na microservices, ma mgbe ụfọdụ iji malite otu microservice, ịkwesịrị ịmalite ọtụtụ ndị ọzọ, nke a adịghịkwa mma. Anyị ghọtara na anyị kwesịrị ịkwaga na ihe nlereanya ebe anyị na-ahapụ na igwe mpaghara naanị ọrụ ma ọ bụ ọrụ anyị chọrọ imezi. A na-eji ọrụ ndị fọdụrụ site na sava ndị dabara na nhazi ya na prod. Mgbe emezigharị, n'oge ule, maka ọrụ ọ bụla, ọ bụ naanị ọrụ gbanwere na-enye na ihe nkesa ule. Ya mere, a na-anwale ngwọta n'ụdị nke ọ ga-apụta na mmepụta n'ọdịnihu.

Enwere sava na-arụ naanị ụdị ọrụ mmepụta. Sava ndị a dị mkpa ma ọ bụrụ na ihe merenụ, iji lelee nnyefe tupu ebuga na maka ọzụzụ n'ime.

Anyị agbakwunyela usoro nnwale akpaghị aka site na iji ọba akwụkwọ Specflow ama ama. Nnwale na-agba ọsọ na-akpaghị aka site na iji NUnit ozugbo ebufere ya site na ike. Ọ bụrụ na mkpuchi ọrụ ahụ zuru oke, mgbe ahụ ọ dịghị mkpa maka nyocha akwụkwọ ntuziaka. Ọ bụ ezie na mgbe ụfọdụ a ka na-achọkwu nyocha akwụkwọ ntuziaka. Anyị na-eji mkpado dị na Jira iji chọpụta ule anyị ga-agba maka otu mbipụta.

Na mgbakwunye, mkpa nnwale ibu abawanyela; na mbụ, a na-eme ya naanị n'ọnọdụ ndị a na-adịghị ahụkebe. Anyị na-eji JMeter mee ule, InfluxDB iji chekwaa ha, yana Grafana iji wuo eserese usoro.

Kedu ihe anyị rụzuru?


Nke mbụ, anyị wepụrụ echiche nke "nhapụ". Mwepụta dị egwu nke ọnwa abụọ agaala mgbe ebufere colossus a na gburugburu ebe nrụpụta, na-akpaghasị usoro azụmaahịa nwa oge. Ugbu a, anyị na-ebuga ọrụ na nkezi kwa ụbọchị 1,5, na-achịkọta ha n'ihi na ha na-arụ ọrụ mgbe nkwenye gasịrị.

Enweghị ọdịda na-egbu egbu na sistemụ anyị. Ọ bụrụ na anyị hapụ microservice na ahụhụ, mgbe ahụ, ọrụ ndị metụtara ya ga-agbaji, na ọrụ ndị ọzọ niile agaghị emetụta ya. Nke a na-eme ka ahụmịhe onye ọrụ dịkwuo mma.

Anyị nwere ike ijikwa ụkpụrụ ntinye. Ị nwere ike ịhọrọ otu ọrụ dị iche iche na ngwọta ndị ọzọ, ma ọ bụrụ na ọ dị mkpa.

Na mgbakwunye, anyị ejirila nnukwu kwụ n'ahịrị nke ndozi belata nsogbu ahụ nke ukwuu. Ugbu a anyị nwere otu ngwaahịa dị iche iche na-arụ ọrụ na ụfọdụ ọrụ n'adabereghị. Usoro Scrum adịlarị mma dabara ebe a. Otu otu akọwapụtara nwere ike ịnwe onye nwe ngwaahịa dị iche nke na-ekenye ya ọrụ.

Nchịkọta

  • Microservices dabara nke ọma maka imebi sistemu dị mgbagwoju anya. N'ime usoro a, anyị na-amalite ịghọta ihe dị na usoro anyị, ihe ndị nwere njedebe dị na ya, ebe oke ha dị. Nke a na-enye gị ohere ikesa mmezi nke ọma n'etiti modul ma gbochie mgbagwoju anya koodu.
  • Microservices na-enye uru nhazi. A na-ekwukarị ha naanị dị ka ihe owuwu ụlọ, mana ihe owuwu ọ bụla dị mkpa iji dozie mkpa azụmahịa, ọ bụghị n'onwe ya. Ya mere, anyị nwere ike ịsị na microservices dị mma maka idozi nsogbu na obere ìgwè, n'ihi na Scrum na-ewu ewu ugbu a.
  • Nkewa bụ usoro ntughari. Ị nweghị ike iwere ngwa wee kewaa ya ka ọ bụrụ ọrụ microservices. Ngwaahịa a ga-esi na ya pụta agaghị arụ ọrụ. Mgbe ị na-enye microservices, ọ bara uru idegharị ihe nketa dị ugbu a, ya bụ, gbanwee ya ka ọ bụrụ koodu na-amasị anyị ma na-egbo mkpa azụmahịa nke ọma n'ihe gbasara ọrụ na ọsọ.

    Obere nkọwa: Ọnụ ego ịkwaga na microservices dị ezigbo mkpa. O were ogologo oge iji dozie nsogbu akụrụngwa naanị. Ya mere, ọ bụrụ na ị nwere obere ngwa nke na-adịghị achọ nkọwa kpọmkwem, ọ gwụla ma ị nwere ọnụ ọgụgụ buru ibu nke ndị ahịa na-asọmpi maka nlebara anya na oge nke otu gị, mgbe ahụ microservices nwere ike ọ gaghị abụ ihe ị chọrọ taa. Ọ dị oke ọnụ. Ọ bụrụ na ịmalite usoro ahụ na microservices, mgbe ahụ ụgwọ ga-adị elu karịa ma ọ bụrụ na ịmalite otu ọrụ ahụ na mmepe nke monolith.

    P.S. Akụkọ mmetụta uche karịa (na dị ka ma ọ bụrụ na gị onwe gị) - dị ka njikọ.
    Nke a bụ nkọwa zuru ezu nke akụkọ ahụ.

isi: www.habr.com

Tinye a comment