Fifindran'ny monolith mankany microservices: tantara sy fanao

Ato amin'ity lahatsoratra ity dia hiresaka momba ny fiovan'ny tetikasa iasako aho avy amin'ny monolith lehibe ho andiana microservice.

Ny tetikasa dia nanomboka ny tantarany efa ela be, tamin'ny fiandohan'ny taona 2000. Ny dikan-teny voalohany dia nosoratana tamin'ny Visual Basic 6. Rehefa nandeha ny fotoana, dia nanjary nazava fa ny fampandrosoana amin'ity fiteny ity dia ho sarotra ny hanohana amin'ny ho avy, satria ny IDE ary ny fiteny mihitsy no tsy mivoatra. Tamin'ny faran'ny taona 2000 dia nanapa-kevitra ny hifindra amin'ny C# mampanantena kokoa. Ny dikan-teny vaovao dia nosoratana nifanitsy tamin'ny fanavaozana ny taloha, nitombo tsikelikely ny kaody nosoratana tao amin'ny .NET. Ny backend ao amin'ny C # dia nifantoka tamin'ny maritrano serivisy tamin'ny voalohany, saingy nandritra ny fampandrosoana dia nampiasaina ny tranomboky mahazatra misy lojika, ary natomboka tao anatin'ny dingana iray ny serivisy. Ny vokatr'izany dia fampiharana iray antsoina hoe "monolith serivisy."

Ny iray amin'ireo tombony vitsivitsy amin'ity fitambarana ity dia ny fahafahan'ny serivisy mifampiantso amin'ny alΓ lan'ny API ivelany. Nisy fepetra mazava ho an'ny fifindrana mankany amin'ny serivisy marina kokoa, ary amin'ny ho avy, ny maritrano microservice.

Nanomboka ny taona 2015 teo ny asa famongorana. Mbola tsy tonga amin'ny fanjakana tsara indrindra isika - mbola misy ampahany amin'ny tetikasa lehibe iray izay tsy azo antsoina hoe monoliths, fa tsy toy ny microservices ihany koa. Na izany aza, zava-dehibe ny fandrosoana.
Hiresaka momba izany aho ao amin'ny lahatsoratra.

Fifindran'ny monolith mankany microservices: tantara sy fanao

afa-po

Architecture sy ny olan'ny vahaolana efa misy


Tany am-boalohany, ny maritrano dia toa izao: ny UI dia fampiharana misaraka, ny ampahany monolithic dia voasoratra ao amin'ny Visual Basic 6, ny fampiharana .NET dia andiana serivisy mifandraika miasa miaraka amin'ny tahiry lehibe.

Ny tsy fahampian'ny vahaolana teo aloha

Teboka tokana tsy fahombiazana
Nanana teboka tokana tsy nahomby izahay: ny fampiharana .NET dia nihazakazaka tao anatin'ny dingana iray. Raha misy module tsy nahomby dia tsy nahomby ny fampiharana manontolo ary tsy maintsy naverina naverina. Koa satria automatique ny dingana maro ho an'ny mpampiasa samihafa, noho ny tsy fahombiazan'ny iray amin'izy ireo, dia tsy afaka niasa nandritra ny fotoana kelikely ny rehetra. Ary raha misy hadisoana amin'ny rindrambaiko, na ny backup aza dia tsy nanampy.

Filaharana fanatsarana
Ity lesoka ity dia somary fandaminana. Manana mpanjifa maro ny fampiharana anay, ary te hanatsara izany haingana araka izay azo atao izy rehetra. Teo aloha dia tsy azo atao ny manao izany miaraka, ary ny mpanjifa rehetra dia nilahatra. Ratsy ho an'ny orinasa ity dingana ity satria tsy maintsy nanaporofo izy ireo fa sarobidy ny asany. Ary nandany fotoana hikarakarana an'io filaharana io ny ekipan'ny fampandrosoana. Nila fotoana sy ezaka be izany, ary ny vokatra dia tsy afaka niova haingana araka izay tiany.

Fampiasana loharanon-karena ambany indrindra
Rehefa fampiantranoana serivisy amin'ny dingana tokana, dia nadikay tanteraka ny fanamafisam-peo avy amin'ny mpizara mankany amin'ny mpizara. Te-hametraka ny serivisy be entana be indrindra izahay mba tsy handany ny loharanon-karena sy hahazoany fanaraha-maso mora kokoa amin'ny rafitra fametrahana anay.

Sarotra ny mampihatra ny teknolojia maoderina
Olana mahazatra ny mpamorona rehetra: misy ny faniriana hampiditra ny teknolojia maoderina amin'ny tetikasa, saingy tsy misy ny fotoana. Miaraka amin'ny vahaolana monolithic lehibe, ny fanavaozana ny tranomboky ankehitriny, tsy lazaina intsony ny fifindrana mankany amin'ny iray vaovao, dia mivadika ho asa tsy dia misy dikany. Mitaky fotoana lava ny hanaporofoana amin'ny mpitarika ny ekipa fa hitondra tombony bebe kokoa noho ny nerveo very maina izany.

Fahasarotana mamoaka fanovana
Io no olana lehibe indrindra - namoaka famoahana isaky ny roa volana izahay.
Ny famoahana tsirairay dia nivadika ho tena loza ho an'ny banky, na dia eo aza ny fitsapana sy ny ezaka nataon'ireo mpamorona. Ny orinasa dia nahatakatra fa tamin'ny fiandohan'ny herinandro dia tsy mandeha ny sasany amin'ireo fiasany. Ary fantatr'ireo mpamorona fa herinandron'ny trangan-javatra lehibe no niandry azy ireo.
Samy nanana faniriana hanova ny toe-draharaha ny tsirairay.

Andrasana avy amin'ny microservices


Famoahana ny singa rehefa vonona. Fanaterana singa rehefa vonona amin'ny alΓ lan'ny famongorana ny vahaolana sy fanasarahana ireo dingana samihafa.

Ekipa vokatra kely. Zava-dehibe izany satria sarotra ny mitantana ny ekipa lehibe miasa amin'ny monolith taloha. Ny ekipa toy izany dia voatery niasa araka ny dingana henjana, saingy naniry ny famoronana sy ny fahaleovan-tena bebe kokoa. Ekipa kely ihany no afaka nividy izany.

Fitokanana ny serivisy amin'ny dingana samihafa. Ny tsara indrindra dia tiako ny hatokana ho an'ny kaontenera, fa ny serivisy marobe voasoratra ao amin'ny .NET Framework dia mandeha amin'ny Windows ihany. Mipoitra ankehitriny ny serivisy mifototra amin'ny .NET Core, saingy mbola vitsy amin'izy ireo.

Fametrahana flexibility. Tianay ny hanambatra ny serivisy amin'ny fomba ilanay azy, fa tsy amin'ny fomba fanerena azy.

Fampiasana teknolojia vaovao. Mahaliana ny programer rehetra izany.

Olan'ny tetezamita


Mazava ho azy, raha mora ny manapaka ny monolith ho microservices, dia tsy ilaina ny miresaka momba izany amin'ny fihaonambe sy manoratra lahatsoratra. Betsaka ny fandrika amin'ity dingana ity; holazaiko ireo lehibe izay nanakana anay.

Ny olana voalohany mahazatra ho an'ny ankamaroan'ny monoliths: cohΓ©rence of business logic. Rehefa manoratra monolith isika dia te hampiasa indray ny kilasintsika mba tsy hanoratra code tsy ilaina. Ary rehefa mifindra amin'ny microservices dia lasa olana izany: mifamatotra mafy ny code rehetra, ary sarotra ny manasaraka ny serivisy.

Tamin'ny fotoana nanombohan'ny asa dia nanana tetikasa maherin'ny 500 sy tsipika 700 arivo mahery ny tahiry. Fanapahan-kevitra lehibe tokoa izany ary olana faharoa. Tsy azo atao ny maka azy fotsiny ary mizara azy ho microservices.

Olana fahatelo - tsy fahampian'ny fotodrafitrasa ilaina. Raha ny marina, dia nandika ny kaody loharano ho an'ny lohamilina izahay.

Ahoana ny fomba hifindra avy amin'ny monolith mankany microservices


Famatsiana microservices

Voalohany, nanapa-kevitra avy hatrany ho an'ny tenanay izahay fa ny fisarahana ny microservice dia dingana miverimberina. Notakiana foana izahay hamolavola olana ara-barotra mifanitsy. Ny fomba fampiharana izany ara-teknika izany no olanay. Noho izany, niomana ho amin'ny dingana iterative izahay. Tsy mandeha amin'ny fomba hafa izany raha manana fampiharana lehibe ianao ary tsy vonona ny hamerenana azy io amin'ny voalohany.

Inona no fomba ampiasaintsika hanavahana ny microservice?

Ny fomba voalohany - mamindra ny maody efa misy ho serivisy. Amin'io lafiny io, tsara vintana izahay: efa nisy serivisy voasoratra anarana niasa tamin'ny protocol WCF. Nozaraina ho fivoriambe samihafa izy ireo. Napetrakay misaraka izy ireo, ary nampiana launcher kely isaky ny trano. Nosoratana tamin'ny fampiasana ny tranomboky Topshelf mahafinaritra, izay ahafahanao mampandeha ny fampiharana amin'ny serivisy na ho console. Ity dia mety amin'ny debugging satria tsy misy tetikasa fanampiny ilaina amin'ny vahaolana.

Nifandray araka ny lojikan'ny fandraharahana ny serivisy, satria nampiasa fivoriambe iraisana izy ireo ary niasa tamin'ny angon-drakitra iraisana. Tsy azo antsoina hoe microservice izy ireo amin'ny endriny madio. Na izany aza, afaka manome ireto serivisy ireto izahay, amin'ny dingana samihafa. Izany fotsiny no nahafahana nampihena ny heriny teo amin'izy samy izy, nampihena ny olana amin'ny fivoarana mifanitsy sy ny teboka iray tsy fahombiazana.

Ny fivoriambe miaraka amin'ny mpampiantrano dia andalana iray monja amin'ny kaody ao amin'ny kilasy Program. Nanafina ny asa niaraka tamin'i Topshelf izahay tao amin'ny kilasy mpanampy.

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

       }
    }
}

Ny fomba faharoa amin'ny fizarana microservice dia: mamorona azy ireo hamaha olana vaovao. Raha toa ka tsy mitombo ny monolith, dia efa tena tsara izany, izay midika fa mandeha amin'ny lalana marina isika. Mba hamahana olana vaovao dia nanandrana namorona serivisy misaraka izahay. Raha nisy ny fahafahana toy izany, dia namorona serivisy "kanΓ΄nika" bebe kokoa izahay izay mitantana tanteraka ny maodelin'ny angon-dry zareo manokana, angon-drakitra manokana.

Izahay, tahaka ny maro, dia nanomboka tamin'ny serivisy fanamarinana sy fanomezan-dΓ lana. Izy ireo dia tonga lafatra amin'izany. Mahaleo tena izy ireo, amin'ny maha-fitsipika azy, manana modely angon-drakitra manokana. Tsy mifandray amin'ny monolith izy ireo, fa mitodika any amin'izy ireo hamaha olana sasany. Amin'ny fampiasana ireo serivisy ireo dia azonao atao ny manomboka ny fifindrana mankany amin'ny maritrano vaovao, manala ny fotodrafitrasa eo amin'izy ireo, manandrana fomba fiasa mifandraika amin'ny tranomboky tambajotra, sns. Tsy manana ekipa izahay ao amin'ny fikambananay izay tsy afaka mamorona serivisy fanamarinana.

Ny fomba fahatelo amin'ny fizarana microservicesNy iray ampiasainay dia somary voafaritra ho anay. Ity dia ny fanesorana ny lojika fandraharahana amin'ny sosona UI. Ny fampiharana UI lehibe indrindra dia desktop; izy io, toy ny backend, dia voasoratra amin'ny C #. Nanao fahadisoana tsindraindray ny mpamorona ary namindra ampahany lojika tamin'ny UI izay tokony ho nisy tao ambadika ary nampiasaina indray.

Raha mijery ohatra tena izy avy amin'ny kaody amin'ny ampahany UI ianao, dia hitanao fa ny ankamaroan'ity vahaolana ity dia misy lojika ara-barotra tena izy izay mahasoa amin'ny dingana hafa, fa tsy amin'ny fananganana endrika UI fotsiny.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Ny tena lojika UI dia ao amin'ny andalana roa farany ihany. Nafindranay tany amin'ny mpizara izany mba ho azo ampiasaina indray, ka hampihena ny UI sy hahazoana ny maritrano marina.

Ny fomba fahefatra sy manan-danja indrindra hanavahana ny microservices, izay ahafahana mampihena ny monolith, dia ny fanesorana ny serivisy efa misy miaraka amin'ny fanodinana. Rehefa maka ny maody efa misy isika, dia tsy araka ny tian'ny mpamorona foana ny vokatra, ary mety ho lany andro ny fizotran'ny raharaham-barotra hatramin'ny namoronana ny fiasa. Miaraka amin'ny refactoring, afaka manohana dingana vaovao momba ny raharaham-barotra isika satria miova tsy tapaka ny fepetra takian'ny orinasa. Afaka manatsara ny kaody loharano isika, manala ireo lesoka fantatra, ary mamorona modely angona tsara kokoa. Betsaka ny tombontsoa azo.

Ny fanavahana ny tolotra amin'ny fanodinana dia mifamatotra tsy azo sarahina amin'ny foto-kevitra momba ny contexte voafetra. Hevitra avy amin'ny Domain Driven Design ity. Izany dia midika hoe ampahany amin'ny maodely sehatra izay voafaritra manokana ny teny rehetra amin'ny fiteny tokana. Andeha hojerentsika ho ohatra ny tontolon'ny fiantohana sy ny faktiora. Manana fampiharana monolithic izahay, ary mila miara-miasa amin'ny kaonty amin'ny fiantohana. Manantena izahay fa hahita kilasin'ny Kaonty efa misy ao amin'ny fivoriambe hafa ny mpamorona, manondro azy avy amin'ny kilasy fiantohana, ary hanana fehezan-dalΓ na miasa izahay. Ny fitsipika DRY dia hohajaina, ny asa dia ho vita haingana kokoa amin'ny fampiasana ny code efa misy.

Vokatr'izany dia hita fa mifandray ny tontolon'ny kaonty sy ny fiantohana. Rehefa mipoitra ny fepetra vaovao dia hanelingelina ny fivoarana io fiarahana io, hampitombo ny fahasarotan'ny lojika fandraharahana efa sarotra. Mba hamahana ity olana ity dia mila mahita ny sisin-tany misy eo amin'ny fehezan-dalΓ na ianao ary manala ny fanitsakitsahana azy ireo. Ohatra, eo amin'ny sehatry ny fiantohana, dia azo inoana fa ampy ny nomeraon'ny kaonty Banky Foibe 20 isa sy ny daty nanokafana ny kaonty.

Mba hampisaraka ireo toe-javatra voafetra ireo ary hanomboka ny dingana fanasarahana ny microservices amin'ny vahaolana monolitika, dia nampiasa fomba fiasa toy ny famoronana API ivelany ao anatin'ny fampiharana izahay. Raha fantatray fa tokony ho lasa microservice ny module sasany, novaina tamin'ny fomba ahoana ao anatin'ilay dingana, dia niantso avy hatrany ny lojika izay an'ny contexte voafetra hafa amin'ny alΓ lan'ny antso ivelany. Ohatra, amin'ny alΓ lan'ny REST na WCF.

Nanapa-kevitra hentitra izahay fa tsy hanalavitra ny kaody izay mitaky fifampiraharahana zaraina. Raha ny zava-misy eto amintsika, dia hita fa mora ny manaraka an'io fitsipika io. Mbola tsy tojo toe-javatra izay tena ilaina ny fifampiraharahana henjana - ny tsy fitoviana farany eo amin'ny modules dia ampy.

Andeha isika hijery ohatra manokana. Manana ny foto-kevitry ny orkestra izahay - fantsona iray izay manodina ny vondron'ny "application". Izy no mamorona mpanjifa, kaonty ary karatra banky. Raha noforonina soa aman-tsara ny mpanjifa sy ny kaonty, saingy tsy nahomby ny famoronana karatra, dia tsy mifindra amin'ny sata "tafita" ny fampiharana ary mijanona ao amin'ny sata "karatra tsy noforonina". Amin'ny ho avy, ny hetsika ambadika dia haka sy hamita azy. Efa elaela ihany no nisian’ny tsy fitovian-kevitra ny rafitra, saingy amin’ny ankapobeny dia afa-po amin’izany isika.

Raha misy toe-javatra mitranga rehefa ilaina ny mitahiry tsy tapaka ny ampahany amin'ny angon-drakitra, dia azo inoana fa handeha amin'ny fanamafisana ny serivisy izahay mba hikarakarana azy amin'ny dingana iray.

Andeha hojerentsika ny ohatra iray amin'ny fanomezana serivisy micro. Ahoana no ahafahanao mitondra azy amin'ny famokarana azo antoka? Amin'ity ohatra ity dia manana ampahany miavaka amin'ny rafitra isika - maody serivisy momba ny karama, iray amin'ireo fizarana kaody izay tiantsika hatao microservice.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Voalohany indrindra, mamorona microservice isika amin'ny alΓ lan'ny fanoratana indray ny code. Manatsara ny lafiny sasany tsy nahafaly anay izahay. Manatanteraka ny fepetra takian'ny orinasa vaovao avy amin'ny mpanjifa izahay. Manampy vavahadin'ny API izahay amin'ny fifandraisana misy eo amin'ny UI sy ny backend, izay hanome fandefasana antso.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Manaraka izany dia avoakanay amin'ny fomba fiasa ity fikirakirana ity, fa ao anatin'ny fanjakana mpanamory. Ny ankamaroan'ny mpampiasa anay dia mbola miasa amin'ny fizotran'ny raharaham-barotra taloha. Ho an'ireo mpampiasa vaovao dia mamolavola dikan-teny vaovao amin'ny fampiharana monolithic izay tsy misy an'io dingana io intsony izahay. Amin'ny ankapobeny, manana fitambaran'ny monolith sy microservice miasa ho mpanamory.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Miaraka amin'ny mpanamory mahomby dia takatsika fa azo atao tokoa ny fanamafisana vaovao, afaka manaisotra ny monolith taloha amin'ny equation isika ary mamela ny fanamafisana vaovao ho solon'ny vahaolana taloha.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Amin'ny fitambarany, saika mampiasa fomba rehetra efa misy izahay amin'ny fanaparitahana ny kaody loharanon'ny monolith. Ireo rehetra ireo dia mamela antsika hampihena ny haben'ny ampahany amin'ny fampiharana ary handika azy ireo ho any amin'ny tranomboky vaovao, hahatonga ny kaody loharano tsara kokoa.

Miasa amin'ny angon-drakitra


Ny angon-drakitra dia azo zaraina ho ratsy kokoa noho ny kaody loharano, satria tsy ny schema amin'izao fotoana izao ihany no misy azy, fa ny angon-drakitra nanangona ihany koa.

Ny angon-drakitray, toy ny maro hafa, dia nanana lesoka lehibe hafa - ny habeny lehibe. Ity angon-drakitra ity dia novolavolaina araka ny lojikan'ny fandraharahana saro-takarina amin'ny monolith iray, ary ny fifandraisana voaangona eo amin'ny latabatra amin'ny toe-javatra voafaritra voafaritra.

Amin'ny tranga misy antsika, ho fanampin'ny olana rehetra (angona lehibe, fifandraisana maro, indraindray tsy mazava ny sisintany eo amin'ny latabatra), dia nisy olana niseho tamin'ny tetikasa lehibe maro: ny fampiasana ny mΓ΄delin'ny angona iombonana. Ny angon-drakitra dia nalaina avy amin'ny tabilao amin'ny alΓ lan'ny fijerena, amin'ny alΓ lan'ny replication, ary nalefa tany amin'ny rafitra hafa izay nilaina io kopia io. Vokatr'izany dia tsy afaka namindra ny latabatra ho amin'ny schema mitokana izahay satria nampiasaina mavitrika.

Ny fizarana mitovy amin'ny contexte voafetra ao amin'ny code dia manampy antsika amin'ny fisarahana. Matetika izy io dia manome antsika hevitra tsara momba ny fomba handravantsika ny angon-drakitra amin'ny haavon'ny angona. Fantatsika hoe iza no tabilao an'ny contexte iray misy fetra ary iza no an'ny iray hafa.

Nampiasa fomba roa maneran-tany amin'ny fizarana angon-drakitra izahay: fisarahana ny latabatra efa misy sy ny fisarahana amin'ny fanodinana.

Ny fisarahana ny latabatra efa misy dia fomba tsara ampiasaina raha tsara ny firafitry ny angona, mahafeno ny fepetra takian'ny orinasa, ary faly amin'izany ny rehetra. Amin'ity tranga ity, azontsika atao ny manasaraka ny latabatra efa misy ho schema misaraka.

Ilaina ny sampana misy fanodinana rehefa niova be ny maodely fandraharahana, ary tsy mahafa-po antsika intsony ny latabatra.

Fizarana latabatra efa misy. Mila manapa-kevitra isika hoe inona no hisaraka. Raha tsy misy izany fahalalana izany dia tsy hisy na inona na inona mandeha, ary eto dia hanampy antsika ny fisarahan'ny contexte voafetra ao amin'ny code. Amin'ny maha-fitsipika, raha azonao atao ny mahatakatra ny fetran'ny toe-javatra ao amin'ny loharanon-kaody, dia lasa mazava izay latabatra tokony ho tafiditra ao amin'ny lisitry ny departemanta.

Andeha hojerentsika fa manana vahaolana isika izay mifandray amin'ny modules monolith roa miaraka amin'ny tahiry iray. Mila mahazo antoka isika fa mΓ΄dely iray ihany no mifandray amin'ny fizarana latabatra misaraka, ary ny iray dia manomboka mifandray aminy amin'ny alΓ lan'ny API. Hanombohana dia ampy ny fandraketana an-tsoratra amin'ny alΓ lan'ny API. Izany dia fepetra ilaina mba hiresahana momba ny fahaleovantenan'ny microservices. Ny fifandraisana amin'ny famakiana dia afaka mijanona raha mbola tsy misy olana lehibe.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Ny dingana manaraka dia ny ahafahantsika manasaraka ny ampahany amin'ny code izay miasa miaraka amin'ny latabatra misaraka, misy na tsy misy fanodinana, ho microservice mitokana ary mampandeha azy amin'ny dingana iray manokana, container. Ity dia serivisy misaraka misy fifandraisana amin'ny angon-drakitra monolith sy ireo tabilao tsy mifandray mivantana aminy. Ny monolith dia mbola mifandray amin'ny famakiana amin'ny ampahany azo alaina.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Aorian'izay dia hesorinay ity fifandraisana ity, izany hoe ny famakiana angona avy amin'ny rindranasa monolitika avy amin'ny latabatra misaraka dia hafindra any amin'ny API ihany koa.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Avy eo, hisafidy avy amin'ny angon-drakitra ankapobeny ny latabatra izay ny microservice vaovao ihany no miasa. Azontsika atao ny mamindra ny latabatra mankany amin'ny schema misaraka na any amin'ny angon-drakitra ara-batana manokana. Mbola misy fifandraisana mamaky teny eo amin'ny microservice sy ny database monolith, saingy tsy misy tokony hatahorana, amin'ity fanamafisana ity dia afaka miaina mandritra ny fotoana maharitra izy.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Ny dingana farany dia ny manala tanteraka ny fifandraisana rehetra. Amin'ity tranga ity, mety mila mamindra angona avy amin'ny angona lehibe isika. Indraindray izahay te-hampiasa indray angona na lahatahiry nalaina avy amin'ny rafitra ivelany amin'ny angon-drakitra maromaro. Mitranga amintsika tsindraindray izany.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Departemantan'ny fanodinana. Ity fomba ity dia mitovy amin'ny voalohany, fa amin'ny filaharana mifamadika. Avy hatrany izahay dia manolotra angon-drakitra vaovao sy serivisy mikro vaovao izay mifandray amin'ny monolith amin'ny alΓ lan'ny API. Saingy miaraka amin'izay koa, mbola misy andian-databatra latabatra izay tiantsika hofafana amin'ny ho avy. Tsy mila azy intsony izahay fa nosoloinay ilay modely vaovao.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Mba hahombiazan'io tetika io dia mety mila fe-potoana tetezamita isika.

Misy fomba roa azo atao avy eo.

Ny voalohany: ataonay duplicate ny angona rehetra ao amin'ny tahiry vaovao sy taloha. Amin'ity tranga ity, manana famerana ny angon-drakitra izahay ary mety hipoitra ny olana momba ny fampifanarahana. Saingy afaka mandray mpanjifa roa samihafa izahay. Ny iray dia hiasa amin'ny dikan-teny vaovao, ny iray amin'ny taloha.

Ny faharoa: mizara ny angon-drakitra izahay araka ny fepetra ara-barotra sasany. Ohatra, nanana vokatra 5 izahay tao amin'ny rafitra izay voatahiry ao amin'ny tahiry taloha. Apetrakay ao anatin'ny asa fandraharahana vaovao ao anaty tahiry vaovao ny fahenina. Saingy mila vavahadin'ny API izahay izay hampifanaraka an'io data io ary hampiseho amin'ny mpanjifa hoe aiza sy inona no azo.

Samy miasa ny fomba fiasa, misafidy arakaraka ny toe-javatra.

Rehefa azo antoka fa miasa ny zava-drehetra, dia mety ho kilemaina ny ampahany amin'ny monolith izay miasa amin'ny rafitra database taloha.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Ny dingana farany dia ny fanesorana ireo rafitra data taloha.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Raha fintinina dia azo lazaina fa manana olana amin'ny database isika: sarotra ny miasa amin'izany raha oharina amin'ny code source, sarotra kokoa ny mizara, saingy azo atao ary tokony hatao. Nahita fomba ahafahantsika manao izany amin'ny fomba azo antoka izahay, saingy mbola mora kokoa ny manao fahadisoana amin'ny angona noho ny amin'ny kaody loharano.

Miasa miaraka amin'ny kaody loharano


Toy izao ny endriky ny kisary kaody loharano rehefa nanomboka nandinika ny tetikasa monolithic izahay.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Azo zaraina ho telo sosona izy io. Ity dia sosona modely natomboka, plugins, serivisy ary hetsika manokana. Raha ny marina, ireo dia teboka fidirana ao anaty vahaolana monolithic. Izy rehetra dia voaisy tombo-kase mafy tamin'ny sosona iombonana. Nanana lojikan'ny fandraharahana izay nozarain'ny serivisy sy fifandraisana maro. Ny serivisy sy ny plugin tsirairay dia nampiasa fivoriambe mahazatra 10 na mihoatra, arakaraka ny habeny sy ny feon'ny fieritreretan'ny mpamorona.

Tsara vintana izahay fa nanana trano famakiam-boky fotodrafitrasa azo ampiasaina mitokana.

Indraindray dia nisy toe-javatra nipoitra rehefa tsy anisan'io sosona io ny zavatra mahazatra sasany, fa trano famakiam-boky fotodrafitrasa. Voavaha tamin'ny fanovana anarana izany.

Ny zava-dehibe indrindra dia ny toe-javatra voafetra. Nitranga izany fa ny contexte 3-4 dia nifangaro tao anatin'ny fivoriambe iraisana iray ary nifampiasa tao anatin'ny asa fandraharahana iray ihany. Ilaina ny mahatakatra hoe aiza no azo zaraina sy amin'ny sisin-tany, ary inona no hatao manaraka amin'ny fametahana an-tsarintany ity fizarana ity ho fivorian'ny loharano.

Namolavola fitsipika maromaro momba ny fizotry ny fizarana kaody izahay.

Ny voalohany: Tsy te hizara lojika fandraharahana intsony izahay eo amin'ny serivisy, hetsika ary plugins. Tianay ny hanao lojika fandraharahana tsy miankina amin'ny microservices. Ny microservices kosa dia heverina ho serivisy tsy miankina tanteraka. Mino aho fa somary mandany vola io fomba fiasa io, ary sarotra ny manatratra izany, satria, ohatra, ny serivisy ao amin'ny C # dia hifandray amin'ny tranomboky mahazatra. Ny rafitray dia voasoratra amin'ny C#; mbola tsy nampiasa teknolojia hafa izahay. Noho izany, nanapa-kevitra izahay fa afaka mampiasa fivoriambe ara-teknika mahazatra. Ny tena zava-dehibe dia tsy misy sombiny amin'ny lojika fandraharahana izy ireo. Raha toa ianao ka manana fonosana mora amin'ny ORM ampiasainao, dia lafo be ny kopia azy avy amin'ny serivisy mankany amin'ny serivisy.

Ny ekipanay dia mpankafy ny endrika entin'ny sehatra, noho izany dia mety tsara ho anay ny maritrano onion. Ny fototry ny serivisinay dia tsy ny sosona fidirana amin'ny angona, fa ny fivoriambe miaraka amin'ny lojikan'ny sehatra, izay tsy misy afa-tsy lojika ara-barotra ary tsy misy ifandraisany amin'ny fotodrafitrasa. Amin'izay fotoana izay ihany koa, afaka manova tsy miankina ny fivorian'ny sehatra isika mba hamahana ireo olana mifandraika amin'ny rafitra.

Tamin'ity dingana ity dia nisedra olana lehibe voalohany izahay. Ny serivisy dia tsy maintsy nanondro fivoriambe sehatra iray, te-hanao ny lojika mahaleo tena izahay, ary ny fitsipika DRY dia nanakana anay teto. Te-hampiasa indray ny kilasy avy amin'ny fivoriambe mifanolo-bodirindrina ireo mpamorona mba hisorohana ny dika mitovy, ary vokatr'izany dia nanomboka nampifandraisina indray ireo sehatra. Nandinika ny valiny izahay ary nanapa-kevitra fa angamba ny olana dia mipetraka amin'ny faritry ny fitaovana fitahirizana kaody loharano. Nanana tahiry lehibe misy ny kaody loharano rehetra izahay. Ny vahaolana ho an'ny tetikasa manontolo dia tena sarotra ny mivory amin'ny milina eo an-toerana. Noho izany dia nisy vahaolana madinidinika manokana noforonina ho an'ny ampahany amin'ny tetikasa, ary tsy nisy nandrara ny hampidirana fivoriambe iraisana na sehatra ho azy ireo sy hampiasa azy ireo indray. Ny hany fitaovana tsy namela anay hanao izany dia ny famerenana ny kaody. Tsy nahomby koa anefa indraindray.

Avy eo dia nanomboka nifindra tamina modely misy tahiry misaraka izahay. Tsy mikoriana avy amin'ny serivisy mankany amin'ny serivisy intsony ny lojikan'ny orinasa, lasa mahaleo tena ny sehatra. Tohanana mazava kokoa ny contexte voafefy. Ahoana no ampiasantsika indray ny tranomboky fotodrafitrasa? Nozarainay tao anaty tahiry mitokana izy ireo, avy eo dia napetranay tao anaty fonosana Nuget, izay napetrakay tao amin'ny Artifactory. Miaraka amin'ny fiovana rehetra dia mandeha ho azy ny fivoriambe sy ny famoahana.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Nanomboka nanondro fonosana fotodrafitrasa anatiny mitovy amin'ny an'ny ivelany ny serivisy. Misintona tranomboky ivelany avy amin'ny Nuget izahay. Mba hiasa miaraka amin'ny Artifactory, izay nametrahanay ireo fonosana ireo, dia nampiasa mpitantana fonosana roa izahay. Tao amin'ny tahiry kely dia nampiasa Nuget ihany koa izahay. Ao amin'ny trano fitehirizam-bokatra misy serivisy marobe, dia nampiasa Paket izahay, izay manome fiovaovan'ny dikan-teny eo amin'ny maody.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Noho izany, amin'ny fiasana amin'ny kaody loharano, manova kely ny maritrano ary manasaraka ireo trano fitehirizam-bokatra, dia ataonay mahaleo tena ny serivisy.

Olan'ny fotodrafitrasa


Ny ankamaroan'ny lafy ratsiny amin'ny fifindrana amin'ny microservice dia mifandraika amin'ny fotodrafitrasa. Mila fametrahana mandeha ho azy ianao, mila tranomboky vaovao hampandehanana ny fotodrafitrasa.

Fametrahana tanana amin'ny tontolo iainana

Tamin'ny voalohany, nametraka ny vahaolana ho an'ny tontolo iainana amin'ny tanana izahay. Mba hanamafisana an'ity dingana ity dia namorona fantsona CI/CD izahay. Nisafidy ny fizotry ny fanaterana mitohy izahay satria tsy mbola azo ekena ho anay ny fandefasana mitohy raha jerena ny fizotran'ny raharaham-barotra. Noho izany, ny fandefasana ho an'ny fandidiana dia atao amin'ny fampiasana bokotra iray, ary ho an'ny fitsapana - mandeha ho azy.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Mampiasa Atlassian, Bitbucket izahay amin'ny fitahirizana kaody loharano ary Bamboo amin'ny fananganana. Tianay ny manoratra script manorina ao amin'ny Cake satria mitovy amin'ny C# izy io. Tonga ao amin'ny Artifactory ny fonosana efa vita, ary tonga ho azy any amin'ireo mpizara fitsapana ny Ansible, ary avy eo dia azo andrana avy hatrany.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Misaraka logging


Tamin'ny fotoana iray, ny iray amin'ireo hevitra momba ny monolith dia ny fanomezana hazo iombonana. Ilaintsika koa ny mahatakatra ny tokony hatao amin'ireo diary tsirairay ao amin'ny kapila. Soratana amin'ny rakitra an-tsoratra ny diantsika. Nanapa-kevitra ny hampiasa stack ELK mahazatra izahay. Tsy nanoratra mivantana tamin'ny ELK tamin'ny alΓ lan'ny mpamatsy izahay, fa nanapa-kevitra fa hanova ny diarin'ny lahatsoratra izahay ary hanoratra ny ID trace ao amin'izy ireo ho toy ny famantarana, manampy ny anaran'ny serivisy, mba hahafahan'ireo logs ireo hozaraina any aoriana.

Fifindran'ny monolith mankany microservices: tantara sy fanao

Amin'ny alΓ lan'ny Filebeat dia mahazo fotoana hanangonana ny dianay avy amin'ny mpizara izahay, avy eo manova azy ireo, mampiasa Kibana hananganana fanontaniana ao amin'ny UI ary hijery ny fandehan'ny antso eo anelanelan'ny serivisy. Ny Trace ID dia manampy betsaka amin'izany.

Fitsapana sy debugging serivisy mifandraika amin'izany


Tany am-boalohany dia tsy azonay tsara ny fomba debug ny tolotra novolavolaina. Tsotra ny zava-drehetra tamin'ny monolith; Nandeha tamin'ny milina teo an-toerana izahay. Tamin'ny voalohany dia nanandrana nanao toy izany koa izy ireo tamin'ny microservices, saingy indraindray mba hamoahana tanteraka ny microservice iray dia mila manomboka maromaro hafa ianao, ary tsy mety izany. Tsapanay fa mila mifindra any amin'ny maodely iray izay avelanay amin'ny milina eo an-toerana ihany ny serivisy na serivisy tiana hodiovina. Ny serivisy sisa dia ampiasaina avy amin'ny mpizara izay mifanandrify amin'ny fikandrana amin'ny prod. Aorian'ny debugging, mandritra ny fitsapana, ho an'ny asa tsirairay, ny serivisy ovaina ihany no omena ny mpizara fitsapana. Noho izany, ny vahaolana dia andrana amin'ny endrika izay hiseho amin'ny famokarana amin'ny ho avy.

Misy ireo mpizara izay tsy manao afa-tsy ny dikan-teny famokarana serivisy. Ilaina ireo mpizara ireo raha sendra misy trangan-javatra, hanamarina ny fanaterana alohan'ny fametrahana azy sy ho an'ny fiofanana anatiny.

Nanampy dingana fitsapana mandeha ho azy izahay amin'ny fampiasana ny tranomboky Specflow malaza. Ny fitsapana dia mandeha ho azy amin'ny fampiasana NUnit avy hatrany aorian'ny fametrahana avy amin'ny Ansible. Raha mandeha ho azy tanteraka ny fandrakofana asa, dia tsy ilaina ny fitiliana amin'ny tanana. Na dia ilaina aza indraindray ny fitiliana manual fanampiny. Mampiasa marika ao amin'ny Jira izahay hamaritana hoe iza no fitsapana hatao amin'ny olana manokana.

Fanampin'izany, nitombo ny filΓ na fitiliana entana; tamin'ny tranga tsy fahita firy ihany no natao teo aloha. Ampiasainay ny JMeter hanaovana andrana, ny InfluxDB hitahiry azy ireo, ary ny Grafana hanamboarana kisarisary.

Inona no vitantsika?


Voalohany, nesorinay ny foto-kevitry ny "fanafahana". Tsy misy intsony ny famoahana goavam-be naharitra roa volana rehefa napetraka tao amin'ny tontolo famokarana ity colossus ity, izay nanelingelina vonjimaika ny fizotran'ny fandraharahana. Ankehitriny izahay dia mametraka serivisy isaky ny 1,5 andro eo ho eo, manambatra azy ireo satria mandeha izy ireo aorian'ny fankatoavana.

Tsy misy tsy fahombiazana mahafaty ao amin'ny rafitra misy antsika. Raha mamoaka microservice misy bibikely isika, dia ho tapaka ny fampiasa miaraka aminy, ary tsy hisy fiantraikany amin'ny fiasa hafa rehetra. Manatsara be ny traikefan'ny mpampiasa izany.

Azontsika fehezina ny fomba fametrahana. Azonao atao ny misafidy vondrona serivisy misaraka amin'ny vahaolana hafa, raha ilaina.

Fanampin'izay, nampihena be ny olana tamin'ny filaharana lehibe amin'ny fanatsarana. Manana ekipa vokatra misaraka izahay izao izay miasa tsy miankina amin'ny serivisy sasany. Ny dingana Scrum dia efa mety tsara eto. Ny ekipa manokana dia mety manana tompon'ny vokatra mitokana izay manendry asa ho azy.

famintinana

  • Ny microservices dia mety tsara amin'ny famongorana ny rafitra sarotra. Ao anatin'izany dingana izany dia manomboka mahazo izay ao anatin'ny rafitra misy antsika isika, inona ny toe-javatra voafetra misy, aiza ny sisin-taniny. Izany dia ahafahanao mizara tsara ny fanatsarana eo amin'ireo maody ary misoroka ny fisafotofotoana.
  • Ny microservices dia manome tombony amin'ny fandaminana. Matetika izy ireo no resahina ho maritrano fotsiny, fa ny maritrano rehetra dia ilaina mba hamahana ny filan'ny orinasa, fa tsy ho azy irery. Noho izany, afaka milaza isika fa ny microservices dia mety tsara amin'ny famahana olana amin'ny ekipa kely, satria malaza be ny Scrum ankehitriny.
  • Ny fisarahana dia dingana miverimberina. Tsy afaka maka fampiharana ianao ary mizara azy ho microservices. Ny vokatra azo dia tsy azo inoana fa miasa. Rehefa manokan-tena ny microservices dia mahasoa ny mamerina manoratra ny lova efa misy, izany hoe mamadika azy ho code izay tiantsika ary mahafeno ny filan'ny orinasa amin'ny lafiny fampiasa sy hafainganam-pandeha.

    Fanamarihana kely: Ny vola lany amin'ny fifindran'ny microservices dia tena lehibe. Naharitra ela ny famahana irery ny olan’ny fotodrafitrasa. Ka raha manana rindranasa kely tsy mila scaling manokana ianao, raha tsy hoe manana mpanjifa marobe mifaninana amin'ny fifantohana sy ny fotoanan'ny ekipanao ianao, dia mety tsy ny microservices no ilainao anio. Tena lafo. Raha manomboka ny dingana amin'ny microservices ianao, dia ho avo kokoa ny vidiny amin'ny voalohany raha toa ka manomboka tetikasa mitovy amin'ny fivoaran'ny monolith ianao.

    PS Tantara mampihetsi-po kokoa (ary toy ny ho anao manokana) - araka ny rohy.
    Ity ny dika fenon'ny tatitra.

Source: www.habr.com

Add a comment