Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

I lenei tusiga, o le a ou talanoa pe faʻafefea ona suia le poloketi o loʻo ou galue ai mai se monolith tele i se seti o microservices.

O le poloketi na amata lona talafaasolopito i se taimi ua leva, i le amataga o le 2000. O uluai lomiga na tusia i le Visual Basic 6. I le aluga o taimi, na manino ai o le atinaʻe i lenei gagana o le a faigata ona lagolagoina i le lumanaʻi, talu mai le IDE ma o le gagana lava ia e le lelei ona atiina ae. I le faaiuga o le 2000s, na tonu ai e sui i le C # sili atu le manuia. O le lomiga fou na tusia tutusa ma le toe iloiloga o le tuai, faasolosolo malie le tele ma sili atu code na tusia i le .NET. Backend i le C # na muai taulaʻi i se fausaga o auaunaga, ae i le taimi o le atinaʻe, sa faʻaaogaina faletusi masani ma faʻamatalaga, ma faʻalauiloa auaunaga i se faiga e tasi. O le taunuuga o se talosaga na matou taʻua o le "monolith auaunaga."

O se tasi o nai faʻamanuiaga o lenei tuʻufaʻatasiga o le mafai lea o auaunaga e valaʻau le tasi i le isi e ala i se API fafo. Sa i ai tulaga manino muamua mo le suiga i se auaunaga sili atu saʻo, ma i le lumanaʻi, faʻataʻitaʻiga microservice.

Na amata la matou galuega ile pala ile 2015. Matou te leʻi oʻo i se tulaga lelei - o loʻo i ai pea vaega o se galuega tele e faigata ona taʻua o monoliths, ae e le foliga mai foi o microservices. Ae ui i lea, e taua le alualu i luma.
O le a ou talanoa i ai i le tusiga.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Mataupu

Fa'ata'ita'iga ma fa'afitauli o le fofo o lo'o iai


I le taimi muamua, o le fausaga o foliga e pei o lenei: o le UI o se talosaga ese, o le vaega monolithic o loʻo tusia i le Visual Basic 6, o le .NET application o se seti o auaunaga fesoʻotaʻi o loʻo galulue faʻatasi ma se faʻamaumauga tele tele.

Le lelei o le fofo muamua

Tulaga tasi o le toilalo
E tasi lava le mea na matou toilalo ai: o le .NET talosaga na tamoe i se faiga e tasi. Afai ua le manuia se module, ua le manuia le talosaga atoa ma ua tatau ona toe amata. Talu ai matou te faʻaaogaina se numera tele o faiga mo tagata faʻaoga eseese, ona o le toilalo i se tasi oi latou, e le mafai e tagata uma ona galulue mo sina taimi. Ma i le tulaga o se mea sese polokalama, e oo lava i le faaleoleo e leʻi fesoasoani.

Tulaga o fa'aleleia
O lenei fa'aletonu e fai lava si fa'alapotopotoga. O la matou talosaga e tele tagata faʻatau, ma latou te mananaʻo uma e faʻaleleia i se taimi vave e mafai ai. I le taimi muamua, e le mafai ona faia lenei mea i le tutusa, ma o tagata faʻatau uma na tutu i laina. O lenei faiga e le lelei mo pisinisi ona e tatau ona latou faʻamaonia e taua a latou galuega. Ma na faʻaalu e le au atinaʻe le taimi e faʻatulagaina ai lenei laina. O lenei mea na alu ai le tele o le taimi ma taumafaiga, ma o le oloa na iu lava ina le mafai ona suia vave e pei ona latou mananao ai.

Le fa'aogaina o punaoa
Pe a faʻafeiloaʻi auaunaga i se faʻagasologa e tasi, matou te kopiina atoatoa le faʻatulagaina mai le server i le server. Na matou manana'o e tu'u eseese 'au'aunaga e sili ona mamafa le uta ina ia 'aua ne'i fa'amaumauina puna'oa ma maua ai le fa'atonuga sili atu ona fetu'una'i i luga o la matou polokalame fa'atino.

Faigata le fa'atinoina o tekonolosi fa'aonaponei
O se faʻafitauli masani i tagata atinaʻe uma: o loʻo i ai se manaʻoga e faʻalauiloa tekinolosi faʻaonaponei i totonu o le poloketi, ae leai se avanoa. Faatasi ai ma se vaifofo tele monolithic, soʻo se faʻafouga o le faletusi o loʻo i ai nei, ae le o le taʻua o le suiga i se mea fou, e liua i se galuega e le taua. E umi se taimi e fa'amaonia ai i le ta'ita'i o le 'au e sili atu ponesi nai lo neura maumau.

Faigata fai suiga
Ole fa'afitauli sili lea ona tuga - sa matou fa'amatu'u fa'asalalauga ta'i lua masina.
O faʻasalalauga taʻitasi na liua i se faʻalavelave moni mo le faletupe, e ui lava i suʻega ma taumafaiga a le au atinaʻe. Na malamalama le pisinisi o le amataga o le vaiaso e le aoga nisi o ana galuega. Ma na malamalama le au atinaʻe o le vaiaso o faʻalavelave matuia o loʻo faʻatali mo i latou.
Sa i ai i tagata uma se manao e sui le tulaga.

Fa'amoemoega mai microservices


Tuuina atu o vaega pe a sauni. Tuuina atu o vaega pe a sauni e ala i le pala o le fofo ma tuueseese faiga eseese.

'au oloa laiti. E taua lenei mea ona o se 'au tele o loʻo galulue i le monolith tuai sa faigata ona faʻatautaia. O se 'au fa'apea na fa'amalosia e galulue e tusa ai ma se faiga sa'o, ae na latou manana'o atili i le sogasoga ma le tuto'atasi. Na'o 'au laiti na mafai ona gafatia lenei mea.

Tu'uesea o 'au'aunaga i fa'agasologa 'ese'ese. O le mea lelei, na ou manaʻo e faʻaesea i totonu o koneteina, ae o se numera tele o auaunaga o loʻo tusia i le .NET Framework e faʻatautaia naʻo Windows. 'Au'aunaga fa'avae i luga ole .NET Core o lo'o fa'aalia nei, ae o lo'o to'aitiiti lava.

Fa'atonu fetuutuunai. Matou te mananaʻo e tuʻufaʻatasia auaunaga i le auala matou te manaʻomia ai, ae le o le auala e faʻamalosia ai e le tulafono.

Fa'aaogaina o tekonolosi fou. E manaia lenei mea i soʻo se tagata fai polokalame.

Fa'afitauli tau suiga


Ioe, afai e faigofie ona malepe se monolith i microservices, e leai se manaʻoga e talanoa i ai i konafesi ma tusi tala. E tele mailei i lenei faagasologa; O le a ou faamatalaina mea autu na taofia ai i matou.

O le faʻafitauli muamua masani mo le tele o monoliths: felagolagomai o manatu pisinisi. A matou tusia se monolith, matou te mananaʻo e toe faʻaaoga a matou vasega ina ia aua neʻi tusia se code le manaʻomia. Ma pe a siitia i microservices, e avea lenei mea ma faʻafitauli: o tulafono uma e faʻapipiʻi faʻapipiʻi, ma e faigata ona tuʻueseese auaunaga.

I le taimi o le amataga o le galuega, o le fale teu oloa e sili atu i le 500 galuega faatino ma sili atu i le 700 laina o tulafono laiti. Ose filifiliga tele lea ma faafitauli lona lua. Sa le mafai ona na o le ave ma vaevae i microservices.

Faafitauli lona tolu - leai ni atina'e talafeagai. O le mea moni, sa matou kopiina ma le lima le code source i le 'au'aunaga.

Faʻafefea ona alu ese mai le monolith i microservices


Tuuina atu Microservices

Muamua, na vave ona matou fuafuaina mo i matou lava o le tuueseeseina o microservices o se faiga faʻasolosolo. Sa mana'omia i matou i taimi uma e atia'e fa'afitauli fa'apisinisi fa'atasi. E fa'afefea ona tatou fa'atinoina lea tulaga fa'atekinisi ua uma ona tatou fa'afitauli. O le mea lea, na matou saunia mo se faʻagasologa faʻasolosolo. E le aoga i se isi lava auala pe a iai sau talosaga tele ma e le'i sauni muamua e toe tusia.

O a metotia tatou te fa'aogaina e fa'aesea ai microservices?

Le ala muamua — fesiitai modules o iai nei e fai ma tautua. I lenei tulaga, sa matou laki: ua uma ona resitalaina auaunaga sa galulue i le faʻaogaina o le WCF protocol. Sa tuueseeseina i latou i ni faapotopotoga eseese. Na matou faʻapipiʻi eseese, faʻaopoopo se tamaʻi faʻamalo i fale taʻitasi. Na tusia e faʻaaoga ai le faletusi matagofie Topshelf, lea e mafai ai ona e faʻatautaia le talosaga e le gata o se tautua ma o se faʻamafanafanaga. E faigofie lenei mea mo le faʻapipiʻiina talu ai e leai ni galuega faʻaopoopo e manaʻomia ile fofo.

O 'auʻaunaga na fesoʻotaʻi e tusa ai ma faʻamatalaga pisinisi, talu ai na latou faʻaogaina faʻapotopotoga masani ma galulue faʻatasi ma se faʻamaumauga masani. E le mafai ona taʻua i latou o microservices i lo latou tulaga mama. Ae ui i lea, e mafai ona matou tuʻuina atu nei auʻaunaga eseese, i faiga eseese. O le mea lava lea na mafai ai ona faʻaitiitia a latou faatosinaga i le tasi ma le isi, faʻaitiitia le faʻafitauli i le atinaʻe tutusa ma se tasi o le toilalo.

Fonotaga ma le talimalo e na o le tasi le laina o code i le vasega Polokalama. Sa matou nanaina galuega ma Topshelf i se vasega ausilali.

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

       }
    }
}

O le auala lona lua e faʻasoa ai microservices o le: faia i latou e foia ai faafitauli fou. Afai i le taimi lava e tasi e le tupu le monolith, ua uma ona lelei, o lona uiga o loʻo tatou agai i le itu saʻo. Ina ia foia faafitauli fou, sa matou taumafai e faia ni auaunaga eseese. Afai ei ai se avanoa faapena, ona matou faia lea o nisi auaunaga "canonical" e pulea atoatoa a latou lava faʻataʻitaʻiga faʻamaumauga, o se faʻamaumauga tuʻufaʻatasia.

O matou, pei o le to'atele, na amata i le fa'amaoni ma auaunaga fa'atagaina. E lelei atoatoa mo lenei mea. Latou te tutoʻatasi, e pei o se tulafono, e iai a latou faʻataʻitaʻiga faʻamatalaga eseese. Latou te le fegalegaleai ma le monolith, ae liliu atu ia i latou e foia nisi o faafitauli. I le faʻaaogaina o nei 'auʻaunaga, e mafai ona e amataina le suiga i se fausaga fou, faʻapipiʻi mea tetele i luga oi latou, faʻataʻitaʻi nisi auala e fesoʻotaʻi ma faletusi fesoʻotaʻiga, ma isi. E leai ni a matou 'au i totonu o la matou faʻalapotopotoga e le mafai ona fatuina se auaunaga faʻamaonia.

Le auala lona tolu e faʻasoa ai microservicesO le mea matou te faʻaaogaina e fai si faʻapitoa ia i matou. Ole 'ave'esea lea ole manatu fa'apisinisi mai le UI layer. O la matou talosaga autu UI o le komepiuta; e pei o le pito i tua, o loʻo tusia i le C #. O le au atiaʻe na faia i lea taimi ma lea taimi ni mea sese ma faʻafeiloaʻi vaega o le mafaufau i le UI lea sa tatau ona i ai i tua ma toe faʻaaogaina.

Afai e te vaʻavaʻai i se faʻataʻitaʻiga moni mai le code o le vaega UI, e mafai ona e vaʻaia o le tele o lenei fofo o loʻo i ai faʻamatalaga moni pisinisi e aoga i isi faiga, ae le naʻo le fausiaina o le UI fomu.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le manatu moni UI o loʻo i ai iina i laina mulimuli e lua. Na matou tuʻuina atu i le 'auʻaunaga ina ia mafai ona toe faʻaaogaina, faʻaitiitia ai le UI ma ausia le fausaga saʻo.

Le auala lona fa ma sili ona taua e fa'aesea microservices, lea e mafai ai ona faʻaitiitia le monolith, o le aveesea lea o auaunaga o loʻo i ai nei ma le gaioiga. Pe a tatou ave ese modules o loʻo i ai nei, o le taunuuga e le o taimi uma e fiafia i ai le au atiaʻe, ma o le pisinisi pisinisi atonu ua tuai talu ona faia le galuega. Faatasi ai ma le refactoring, e mafai ona matou lagolagoina se faiga pisinisi fou ona o manaoga pisinisi o loʻo suia pea. E mafai ona matou faʻaleleia le faʻailoga puna, aveese faʻaletonu ua iloa, ma faia se faʻataʻitaʻiga sili atu o faʻamaumauga. E tele fa'amanuiaga e maua mai.

O le tuueseeseina o au'aunaga mai le fa'agaioiga e feso'ota'i ma'ese'ese i le manatu o le fa'aupuga fa'atapula'aina. Ole manatu lea mai le Domain Driven Design. O lona uiga o se vaega o le fa'ata'ita'iga fa'ata'ita'iga o lo'o fa'amatalaina tulaga ese ai fa'amatalaga uma o se gagana e tasi. Se'i o tatou va'ava'ai i le tulaga o inisiua ma pili e fai ma fa'ata'ita'iga. E i ai a matou talosaga monolithic, ma e manaʻomia ona matou galulue ma le teugatupe i inisiua. Matou te fa'amoemoe e su'e e le tagata atia'e se vasega Fa'amatalaga o lo'o iai i se isi fa'apotopotoga, fa'asino mai le vasega Inisiua, ma o le ai ai la matou code galue. Ole mataupu ole DRY ole a fa'aaloalogia, ole galuega ole a fai vave ile fa'aogaina ole code o iai.

O le iʻuga, e aliali mai o loʻo fesoʻotaʻi faʻamatalaga o teugatupe ma inisiua. A'o tula'i mai mana'oga fou, o le so'otaga lea o le a fa'alavelave i le atina'e, fa'ateleina ai le lavelave o le fa'atatauina o pisinisi ua lavelave. Ina ia foia lenei faʻafitauli, e tatau ona e suʻeina tuaoi i le va o faʻasalalauga i le tulafono ma aveese a latou soliga. Mo se faʻataʻitaʻiga, i le tulaga o inisiua, e mafai lava ona lava le numera 20-numera Faletupe Tutotonu ma le aso na tatalaina ai le teugatupe.

Ina ia tuueseese nei tulaga faʻatapulaʻaina mai le tasi ma le isi ma amata le faʻagasologa o le vavaeeseina o microservices mai se vaifofo monolithic, sa matou faʻaogaina se auala e pei o le fatuina o API i fafo i totonu o le talosaga. Afai matou te iloa o nisi module e tatau ona avea ma microservice, i se auala e suia i totonu o le faagasologa, ona matou faia loa lea o telefoni i le faʻamatalaga e patino i se isi faʻatapulaʻa faʻamatalaga e ala i telefoni i fafo. Mo se faʻataʻitaʻiga, e ala i le REST poʻo le WCF.

Na matou filifili ma le mausali matou te le aloese mai tulafono laiti e manaʻomia ai fefaʻatauaiga tufatufaina. I la matou tulaga, na foliga mai e faigofie tele le mulimuli i lenei tulafono. Matou te leʻi oʻo lava i tulaga e manaʻomia ai fefaʻatauaiga faʻasalalau faʻasalalau - o le faʻamautu mulimuli i le va o modules ua lava.

Seʻi o tatou vaavaai i se faataʻitaʻiga patino. O loʻo ia i matou le manatu o se tagata faʻapipiʻi - o se paipa e faʻatautaia le vaega o le "faʻaoga". Na te fatuina se tagata o tausia, se teugatupe ma se kata faletupe i le faasologa. Afai o le kalani ma le tala e faia ma le manuia, ae le mafai ona faia le kata, o le talosaga e le alu i le tulaga "manuia" ma tumau i le tulaga "card le fatuina". I le lumanaʻi, o le gaioiga i tua o le a pikiina ma faʻauma. O le faiga ua leva ona i ai i se tulaga le tumau, ae e masani lava ona faamalieina i tatou i lenei mea.

Afai e tulaʻi mai se tulaga pe a manaʻomia le faʻasaoina i taimi uma o se vaega o faʻamaumauga, e foliga mai o le a matou o atu mo le faʻamalosia o le auaunaga ina ia mafai ai ona faʻagasolo i se tasi faiga.

Se'i o tatou va'ai i se fa'ata'ita'iga o le fa'asoaina o se microservice. E mafai faapefea ona e aumaia i le gaosiga ma le saogalemu? I lenei faʻataʻitaʻiga, o loʻo i ai se matou vaega eseʻese o le faiga - o se vaega o auaunaga totogi, o se tasi o vaega faʻailoga matou te manaʻo e fai microservice.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Muamua, matou te fatuina se microservice e ala i le toe tusia o le code. O loʻo matou faʻaleleia nisi vaega matou te leʻi fiafia i ai. Matou te faʻatinoina manaoga pisinisi fou mai le tagata faʻatau. Matou te faʻaopoopoina se API Gateway i le fesoʻotaʻiga i le va o le UI ma le pito i tua, lea o le a tuʻuina atu ai le telefoni.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le isi, matou te tuʻuina atu lenei faʻatulagaga i le gaioiga, ae i se tulaga pailate. O le tele o matou tagata fa'aoga o lo'o galulue pea i faiga pisinisi tuai. Mo tagata fou, o loʻo matou atiaʻe se faʻamatalaga fou o le monolithic application e le o toe iai lenei faiga. O le mea moni, o loʻo i ai a matou tuʻufaʻatasiga o se monolith ma se microservice o loʻo galue o se pailate.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Faatasi ai ma se pailate manuia, matou te malamalama o le faatulagaga fou e moni lava e aoga, e mafai ona matou aveese le monolith tuai mai le faʻataʻitaʻiga ma tuʻu le faatulagaga fou i le nofoaga o le fofo tuai.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

I le aofaʻi, matou te faʻaogaina toetoe lava o auala uma o loʻo i ai mo le vaeluaina o le source code o se monolith. O ia mea uma e mafai ai ona matou faʻaititia le tele o vaega o le talosaga ma faʻaliliu i latou i faletusi fou, ma faʻaleleia atili ai le code source.

Galulue faʻatasi ma faʻamaumauga


O le database e mafai ona vaevaeina e sili atu le leaga nai lo le source code, talu ai o loʻo i ai e le gata o le faʻasologa o loʻo iai nei, ae faʻaputuina faʻamaumauga faʻasolopito.

O la matou fa'amaumauga, pei o le tele o isi, sa i ai se isi fa'aletonu taua - o lona telē tele. O lenei fa'amaumauga na mamanuina e tusa ai ma le lavelave pisinisi fa'atatau o se monolith, ma mafutaga fa'aputuina i le va o laulau o fa'alapotopotoga fa'atapula'aina eseese.

I la matou tulaga, i luga o faʻafitauli uma (faʻamaumauga tele, tele fesoʻotaʻiga, o nisi taimi e le manino tuaoi i le va o laulau), o se faʻafitauli na tulaʻi mai i le tele o galuega tetele: o le faʻaogaina o le faʻataʻitaʻiga faʻasalalauga faʻasoa. O fa'amaumauga na maua mai laulau e ala i le va'aiga, e ala i le toe faia, ma lafo i isi faiga e mana'omia ai lenei fa'asologa. O le mea na tupu, e le mafai ona matou fa'anofoina laulau i se isi fa'ata'ita'iga ona o lo'o fa'aaogaina malosi.

O le vaevaega lava e tasi i faʻatapulaʻaina tulaga i totonu o le tulafono e fesoasoani ia i tatou i le teteʻa. E masani ona tuʻuina mai ia i matou se manatu lelei pe faʻafefea ona matou talepeina faʻamaumauga i le tulaga o faʻamaumauga. Matou te malamalama po'o fea laulau e fa'atatau i le isi fa'asinomaga fa'atapula'aina ae o le fea o le isi.

Na matou faʻaogaina auala e lua o le lalolagi o le vaeluaga o faʻamaumauga: vaeluaga o laulau o loʻo iai ma vaeluaga ma le gaioiga.

O le vavae ese o laulau o loʻo i ai nei o se auala lelei e faʻaoga pe a lelei le faʻatulagaina o faʻamaumauga, fetaui ma manaʻoga pisinisi, ma e fiafia tagata uma i ai. I lenei tulaga, e mafai ona tatou tu'u'ese'ese laulau o lo'o i ai i se fa'asologa ese'ese.

E manaʻomia se matagaluega ma faʻagaioiga pe a suia tele le faʻataʻitaʻiga pisinisi, ma e le o toe faʻamalieina i matou i laulau.

Vaevae laulau o iai. E tatau ona tatou fuafuaina mea o le a tatou tuueseeseina. A aunoa ma lenei malamalama, e leai se mea e aoga, ma o iinei o le tuueseeseina o tulaga faʻatapulaʻaina i totonu o le tulafono o le a fesoasoani ia i tatou. I le avea ai o se tulafono, afai e mafai ona e malamalama i tuaoi o faʻamatalaga i totonu o le code source, e manino lava po o fea laulau e tatau ona aofia i le lisi mo le matagaluega.

Se'i fa'apea o lo'o i ai sau fofo lea e fegalegaleai ai lua monolith modules ma le database e tasi. E manaʻomia ona tatou faʻamautinoa e naʻo le tasi le module e fegalegaleai ma le vaega o laulau eseese, ae o le isi e amata ona fegalegaleai ma le API. I le amataga, ua lava naʻo le pueina e faia e ala i le API. Ole tulaga talafeagai lea mo tatou e talanoa ai ile tutoatasi ole microservices. Faitau feso'ota'iga e mafai ona tumau pe a leai se fa'afitauli tele.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le isi laasaga o le mafai lea ona tatou vavaeeseina le vaega o le code e galue ma laulau vavae, faʻatasi ma le leai o se gaioiga, i totonu o se microservice ese ma faʻatautaia i se isi faiga, se pusa. O le a avea lea ma se 'au'aunaga tu'ufa'atasi ma se feso'ota'iga i le monolith database ma na laulau e le feso'ota'i sa'o i ai. E fegalegaleai pea le monolith mo le faitau ma le vaega e mafai ona aveese.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Mulimuli ane o le a matou aveese lenei fesoʻotaʻiga, o lona uiga, o le faitauina o faʻamatalaga mai se talosaga monolithic mai laulau vavaeese o le a faʻafeiloaʻi foi i le API.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le isi, matou te filifilia mai le faʻamaumauga lautele laulau e naʻo le microservice fou e galue ai. E mafai ona matou fa'anofoina laulau i se fa'asologa ese po'o se isi fa'amaumauga fa'aletino. O loʻo i ai pea se fesoʻotaʻiga faitau i le va o le microservice ma le monolith database, ae leai se mea e popole ai, i lenei faʻatulagaga e mafai ona ola mo se taimi umi.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le laasaga mulimuli o le aveese atoa uma o fesoʻotaʻiga. I lenei tulaga, atonu tatou te manaʻomia le faimalaga mai faʻamatalaga mai le faʻamaumauga autu. O nisi taimi matou te manana'o e toe fa'aoga nisi fa'amaumauga po'o fa'atonuga na toe fa'afo'i mai faiga i fafo i le tele o fa'amaumauga. E tupu lenei mea ia i tatou i lea taimi ma lea taimi.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Matagaluega fa'agaioiga. O lenei metotia e talitutusa lava ma le muamua, naʻo le faʻasologa faʻasolosolo. Matou te tuʻuina vave se database fou ma se microservice fou e fegalegaleai ma le monolith e ala i se API. Ae i le taimi lava e tasi, o loʻo i ai pea se seti o laulau faʻamaumauga matou te manaʻo e tapeina i le lumanaʻi. Matou te le toe manaʻomia; matou suia i le faʻataʻitaʻiga fou.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Ina ia aoga lenei polokalame, e foliga mai o le a tatou manaʻomia se vaitaimi o suiga.

Ona lua lea o auala e mafai ai.

Muamua: matou te fa'aluaina fa'amaumauga uma i fa'amaumauga fou ma tuai. I lenei tulaga, o loʻo i ai a matou faʻamatalaga faʻamatalaga ma faʻafitauli faʻatasi e ono tulaʻi mai. Ae e mafai ona matou aveina ni tagata eseese se lua. O le a galue le tasi i le lomiga fou, o le isi ma le mea tuai.

Le lua: matou te vaevaeina faʻamaumauga e tusa ai ma nisi tulaga faʻapisinisi. Mo se faʻataʻitaʻiga, e 5 a matou oloa i totonu o le polokalama na teuina i totonu o le database tuai. Matou te tuʻuina le lona ono i totonu o le galuega pisinisi fou i se faʻamaumauga fou. Ae o le a matou manaʻomia se API Gateway e faʻamaopoopoina nei faʻamatalaga ma faʻaalia i le kalani le mea ma le mea e maua mai ai.

O auala uma e lua e aoga, filifili e faʻatatau i le tulaga.

A maeʻa ona matou mautinoa o loʻo galue mea uma, o le vaega o le monolith o loʻo galue ma fausaga tuai faʻamaumauga e mafai ona faʻagata.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le laasaga mulimuli o le aveese lea o faʻamaumauga tuai.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

I le aotelega, e mafai ona tatou fai atu o loʻo i ai a tatou faʻafitauli i le faʻamaumauga: e faigata ona galulue faʻatasi ma faʻatusatusa i le code source, e sili atu le faigata ona faʻasoa, ae e mafai ma e tatau ona faia. Ua matou maua nisi o auala e mafai ai ona matou faia lenei mea ma le saogalemu, ae sili atu ona faigofie le faia o mea sese i faʻamatalaga nai lo le faʻailoga puna.

Galulue fa'atasi ma fa'ailoga puna


O le mea lea e foliga mai ai le faʻailoga faʻaupuga ina ua amata ona matou suʻesuʻeina le poloketi monolithic.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

E mafai ona vaevaeina i ni vaega se tolu. Ole vaega lea ole fa'alauiloa modules, plugins, auaunaga ma gaioiga ta'itasi. O le mea moni, o mea ia e ulufale i totonu o se vaifofo monolithic. O ia mea uma na fa'amaufa'ailogaina lelei i se mea fa'apitoa. Sa i ai le fa'atatau fa'apisinisi e fefa'asoaa'i auaunaga ma le tele o feso'ota'iga. O auaunaga taʻitasi ma faʻapipiʻi na faʻaaogaina i le 10 poʻo le sili atu o faʻapotopotoga masani, e faʻatatau i lo latou tele ma le lotofuatiaifo o tagata atiaʻe.

Sa matou laki i le i ai o faletusi tetele e mafai ona faʻaaogaina eseese.

O nisi taimi na tula'i mai ai se tulaga pe a o nisi mea masani e le'o iai i lenei vaega, ae o faletusi tetele. Na foia lea tulaga e ala i le toe faaigoa.

O le atugaluga pito sili ona taua o tulaga fa'atapula'aina. Na tupu e 3-4 faʻasalalauga na faʻafefiloi i le tasi faʻapotopotoga masani ma faʻaogaina e le tasi le isi i totonu o galuega faʻapisinisi tutusa. Sa tatau ona malamalama i le mea e mafai ona vaevaeina ai ma o a tuaoi, ma le mea e sosoo ai ma le faʻafanua o lenei vaeluaga i totonu o faʻalapotopotoga faʻapitoa.

Ua matou faia ni tulafono mo le faiga o le vaevaeina o tulafono.

Muamua: Matou te le toe manaʻo e faʻasoa faʻamatalaga pisinisi i le va o auaunaga, gaioiga ma plugins. Sa matou manana'o e tu'to'atasi manatu fa'apisinisi i totonu ole microservices. Microservices, i le isi itu, e sili ona manatu o ni auʻaunaga o loʻo i ai atoatoa tutoʻatasi. Ou te talitonu o lenei auala e fai si maumau, ma e faigata ona ausia, aua, mo se faʻataʻitaʻiga, o auaunaga i le C # o le a fesoʻotaʻi i soʻo se tulaga e se faletusi masani. O la matou faiga o loʻo tusia i le C #; matou te leʻi faʻaogaina isi tekinolosi. O le mea lea, na matou filifili ai e mafai ona matou gafatia le faʻaaogaina o fonotaga faʻapitoa masani. O le mea autu e latou te le o iai ni vaega o pisinisi pisinisi. Afai ei ai sau afifi faigofie i luga o le ORM o loʻo e faʻaaogaina, o le kopiina mai lea tautua i lea tautua e taugata tele.

O la matou 'au o se tagata fiafia i mamanu e fa'atonuina e le vaega, o lea na fetaui lelei ai le fausaga o aniani mo i matou. O le fa'avae oa matou 'au'aunaga e le'o le fa'aogaina o fa'amaumauga, ae o se fa'apotopotoga fa'atasi ai ma manatu fa'apitoa, lea e aofia ai na'o pisinisi ma e leai ni feso'ota'iga ma atina'e. I le taimi lava e tasi, e mafai ona tatou tutoʻatasi suia le faʻapotopotoga faʻalapotopotoga e foia faʻafitauli e fesoʻotaʻi ma auivi.

I lenei laʻasaga na matou feagai ma le matou faʻafitauli tuga muamua. O le 'au'aunaga e tatau ona fa'asino i le tasi fa'apotopotoga fa'alapotopotoga, matou te manana'o e tu'uto'atasi le manatu, ma o le fa'avae DRY na matua fa'alavelaveina ai i matou iinei. Na manana'o le au atia'e e toe fa'aoga vasega mai fa'apotopotoga tuaoi e 'alofia ai le toe fa'aluaina, ma o le i'uga, na amata toe feso'ota'i fa'atasi vaega. Na matou suʻesuʻeina iʻuga ma filifili ai atonu o le faʻafitauli o loʻo taoto foi i le vaega o le mea e teu ai code source. Sa i ai sa matou faleteuoloa tele o loʻo i ai faʻamaumauga uma. O le fofo mo le galuega atoa na matua faigata lava ona faʻapipiʻi i luga o se masini faʻapitonuʻu. O le mea lea, na faia ai ni fofo laiti eseese mo vaega o le poloketi, ma e leai se tasi na faʻasaina le faʻaopoopoina o se faʻapotopotoga masani poʻo le faʻalapotopotoga ia i latou ma toe faʻaaogaina. Na o le pau lava le meafaigaluega na le faʻatagaina ai i matou e faia lenei mea o le iloiloga o tulafono. Ae o nisi taimi e le manuia foi.

Ona amata lea ona matou siitia atu i se faʻataʻitaʻiga ma faleoloa eseese. E le o toe tafe mai le manatu o pisinisi mai lea auaunaga i lea auaunaga, ua tutoatasi moni lava vaega. E sili atu ona manino le lagolagoina o tala fa'atatau. E fa'afefea ona tatou toe fa'aogaina faletusi tetele? Na matou vavaeeseina i latou i se isi fale teu oloa, ona tuʻu lea i totonu o pusa Nuget, lea matou te tuʻuina i totonu o Artifactory. So'o se suiga, e otometi lava ona tupu le fa'apotopotoga ma le fa'asalalauga.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O a matou au'aunaga na amata ona fa'asino i totonu o atina'e atina'e i le auala lava e tasi e pei o fafo. Matou te sii maia faletusi fafo mai Nuget. Ina ia galulue faatasi ma Artifactory, i le mea na matou tuʻuina ai nei afifi, matou te faʻaaogaina ni pule o pusa e lua. I totonu o faleoloa laiti na matou faʻaaogaina foi Nuget. I faleoloa ma le tele o auaunaga, matou te faʻaaogaina Paket, lea e maua ai le tele o faʻasalalauga i le va o modules.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

O le mea lea, e ala i le galue i luga o le code source, suiga teisi le fausaga ma le vavaeeseina o fale teu oloa, matou te faia a matou auaunaga ia sili atu le tutoatasi.

Fa'afitauli o galuega tetele


Ole tele ole fa'aletonu ile si'i ile microservices e feso'ota'i ma atina'e. E te mana'omia le fa'apipi'iina otometi, e te mana'omia ni faletusi fou e fa'atino ai galuega tetele.

Fa'apipi'i tusilima i si'osi'omaga

I le taimi muamua, na matou faʻapipiʻiina le fofo mo siosiomaga ma le lima. Ina ia otometi lenei faiga, matou faia se paipa CI/CD. Na matou filifilia le fa'aauauina o le fa'auluina o le fa'agasologa ona o le fa'aauauina o le fa'atinoina e le'i taliaina mo i matou mai le va'aiga o faiga fa'apisinisi. O le mea lea, o le auina atu mo le taotoga e faʻaaogaina e faʻaaoga ai se faʻamau, ma mo suʻega - otometi.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Matou te faʻaaogaina Atlassian, Bitbucket mo le teuina o faʻamatalaga puna ma le Bamboo mo le fausiaina. Matou te fiafia e tusi fau tusitusiga ile Cake aua e tutusa ma C#. O afifi ua saunia e o'o mai i Artifactory, ma e otometi lava ona o'o atu le Ansible i su'ega su'ega, a mae'a ona mafai loa lea ona su'eina.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Tu'u ese'ese


I se tasi taimi, o se tasi o manatu o le monolith o le tuʻuina atu lea o faʻasalalauga faʻasoa. Sa tatau foi ona matou malamalama i le mea e fai i ogalaau taʻitasi o loʻo i luga o tisiki. Ua tusia a matou ogalaau i faila faila. Na matou filifili e faʻaaoga se faʻapipiʻi masani ELK. Matou te leʻi tusi saʻo atu i le ELK e ala i le auʻaunaga, ae na matou filifili o le a matou suia ia ogalaau o tusitusiga ma tusi le faʻailoga ID i totonu ia i latou e fai ma faʻamatalaga, faʻaopoopo le igoa o le tautua, ina ia mafai ona faʻasalalau nei ogalaau mulimuli ane.

Le suiga mai le monolith i microservices: talafaasolopito ma faiga masani

Faʻaaogaina Filebeat, matou te maua le avanoa e aoina ai a matou ogalaau mai 'auʻaunaga, ona suia lea, faʻaaoga Kibana e fausia ai fesili i le UI ma vaʻai pe na faapefea ona alu le valaau i le va o auaunaga. E fesoasoani tele le Trace ID i lenei mea.

Au'aunaga fa'atatau ile su'ega ma le fa'asa


I le taimi muamua, matou te leʻi malamalama atoatoa pe faʻafefea ona faʻapipiʻi auaunaga o loʻo atiaʻe. Sa faigofie mea uma i le monolith; sa matou faʻatautaia i luga o se masini faʻapitonuʻu. I le taimi muamua sa latou taumafai e fai le mea lava lea e tasi i microservices, ae o nisi taimi e faʻalauiloa atoatoa ai se tasi microservice e te manaʻomia e faʻalauiloa nisi, ma e le faigofie. Na matou iloa e tatau ona matou siitia atu i se faʻataʻitaʻiga lea matou te tuʻu ai i luga o le masini faʻapitonuʻu naʻo le tautua poʻo le tautua matou te manaʻo e faʻafefe. O lo'o totoe 'au'aunaga e fa'aogaina mai 'au'aunaga e fetaui ma le fa'atulagaina ma le prod. A maeʻa le faʻapipiʻiina, i le taimi o suʻega, mo galuega taʻitasi, naʻo le suiga o auaunaga e tuʻuina atu i le suʻega suʻega. O le mea lea, o le fofo e faʻataʻitaʻiina i le tulaga o le a faʻaalia i le gaosiga i le lumanaʻi.

O lo'o iai 'au'aunaga e na'o le fa'atinoina o fa'asologa o auaunaga. O nei 'auʻaunaga e manaʻomia pe a faʻalavelave, e siaki le tuʻuina atu aʻo leʻi faʻapipiʻiina ma mo aʻoaʻoga i totonu.

Ua matou fa'aopoopoina se faiga fa'ata'ita'i fa'apitoa e fa'aaoga ai le faletusi lauiloa Specflow. O suʻega e otometi lava ona faʻaaoga le NUnit i le maeʻa ai o le faʻapipiʻiina mai le Ansible. Afai e otometi atoatoa le fa'asoaina o galuega, e leai se mana'oga mo su'ega tusi. E ui lava o nisi taimi e manaʻomia ai suʻega tusi lesona faaopoopo. Matou te fa'aogaina fa'ailoga i Jira e iloa ai po'o fea su'ega e fai mo se fa'afitauli fa'apitoa.

E le gata i lea, o le manaʻoga mo suʻega uta ua faʻateleina; muamua na faia naʻo ni mea seasea. Matou te faʻaogaina le JMeter e faʻataʻitaʻi ai suʻega, InfluxDB e teu ai, ma Grafana e fausia ai kalafi faʻasologa.

O le a se mea ua tatou ausia?


Muamua, na matou faʻaumatia le manatu o le "faʻasaʻoloto". Ua leai ni fa'asalalauga mata'utia e lua-masina ina ua fa'apipi'i le tele lea i totonu o se si'osi'omaga gaosiga, fa'alavelave le tumau fa'agaioiga pisinisi. Ole taimi nei ua matou fa'atinoina auaunaga ile averesi ile 1,5 aso, fa'avasegaina aua e fa'agaoioia pe a mae'a fa'amaonia.

E leai ni faaletonu mata'utia i la tatou faiga. Afai matou te faʻasaʻolotoina se microservice ma se bug, o le a malepe le gaioiga e fesoʻotaʻi ma ia, ma o isi galuega uma o le a le afaina. O lenei mea e matua faʻaleleia atili ai le faʻaogaina o tagata faʻaoga.

E mafai ona tatou pulea le mamanu faʻapipiʻi. E mafai ona e filifilia vaega o au'aunaga e ese mai le isi fofo, pe a mana'omia.

E le gata i lea, ua matou faʻaititia tele le faʻafitauli i se laina tele o faʻaleleia. Ua iai nei a matou 'au' oloa eseese e galulue fa'atasi ma nisi o 'au'aunaga. O le Scrum process ua uma ona fetaui lelei iinei. E iai se 'au fa'apitoa e iai se isi Pule o Oloa na te tu'uina atu galuega i ai.

Aotelega

  • Microservices e fetaui lelei mo faiga faʻalavelave faʻaleagaina. I le faagasologa, ua amata ona tatou malamalama i mea o loʻo i totonu o la tatou polokalama, o a mea faʻatapulaʻaina o loʻo i ai, o fea o loʻo taoto ai o latou tuaoi. Ole mea lea e mafai ai e oe ona fa'asoa sa'o fa'alelei i totonu o modules ma puipuia ai le fenumia'i o tulafono.
  • Microservices e maua ai faʻamanuiaga faʻalapotopotoga. E masani ona taʻua i latou o le tusiata, ae o soʻo se fausaga e manaʻomia e foia ai manaʻoga pisinisi, ae le o ia lava. O le mea lea, e mafai ona tatou fai atu o microservices e fetaui lelei mo le foia o faʻafitauli i 'au laiti, talu ai o Scrum e sili ona lauiloa i le taimi nei.
  • O le tuueseeseina o se faiga faifai pea. E le mafai ona e ave se talosaga ma na ona vaevae i microservices. O le mea e maua mai e foliga mai e le aoga. Pe a faʻapaʻia microservices, e aoga le toe tusia o le talatuu o loʻo i ai nei, o lona uiga, liliu i le code tatou te fiafia i ai ma sili atu ona fetaui ma manaʻoga pisinisi i tulaga o galuega ma le saoasaoa.

    O se faʻamatalaga itiiti: O tau o le siitia atu i microservices e matua taua tele. Na umi se taimi e foia ai na o ia le faafitauli o atinae tetele. Afai la e iai sau talosaga la'ititi e le mana'omia ai se fa'avasegaga fa'apitoa, se'i vagana ua tele au fa'atauga o lo'o tauva mo le fa'alogoina ma le taimi o lau 'au, o le microservices atonu e le o mea e te mana'omia i aso nei. E fai si taugata. Afai e te amataina le faʻagasologa i microservices, o le tau o le a muamua maualuga atu nai lo le amataina o le poloketi tutusa ma le atinaʻeina o se monolith.

    PS O se tala e sili atu ona lagona (ma e pei o oe lava ia) - e tusa ai ma fesoʻotaʻiga.
    O le fa'amatalaga atoa lea o le lipoti.

puna: www.habr.com

Faaopoopo i ai se faamatalaga