An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

San artaigil seo, bruidhnidh mi mu mar a dh'atharraich am pròiseact air a bheil mi ag obair bho monolith mòr gu seata de mhicro-sheirbheisean.

Thòisich am pròiseact air a h-eachdraidh o chionn ùine mhòr, aig toiseach 2000. Chaidh na ciad dreachan a sgrìobhadh ann an Visual Basic 6. Thar ùine, dh'fhàs e soilleir gum biodh e doirbh taic a thoirt do leasachadh sa chànan seo san àm ri teachd, leis gu bheil an IDE agus tha an cànan fhèin air a droch leasachadh. Aig deireadh na 2000n, chaidh co-dhùnadh atharrachadh gu C # nas gealltanach. Chaidh an dreach ùr a sgrìobhadh ann an co-shìnte ri ath-sgrùdadh an t-seann fhear, mean air mhean chaidh barrachd is barrachd còd a sgrìobhadh ann an .NET. Bha backend ann an C # an toiseach ag amas air ailtireachd seirbheis, ach rè leasachadh, chaidh leabharlannan cumanta le loidsig a chleachdadh, agus chaidh seirbheisean a chuir air bhog ann an aon phròiseas. B’ e an toradh seo tagradh ris an canadh sinn “monolith seirbheis.”

B’ e aon de na beagan bhuannachdan a bha aig a’ chothlamadh seo comas seirbheisean a bhith a’ conaltradh ri chèile tro API taobh a-muigh. Bha ro-ghoireasan soilleir ann airson gluasad gu seirbheis nas ceart, agus san àm ri teachd, ailtireachd microservice.

Thòisich sinn ar n-obair air lobhadh timcheall air 2015. Chan eil sinn fhathast air suidheachadh fÏor mhath a ruighinn - tha pàirtean ann fhathast de phròiseact mòr nach urrainn a bhith air an ainmeachadh mar monoliths, ach chan eil iad coltach ri microservices an dàrna cuid. A dh'aindeoin sin, tha adhartas cudromach.
Bruidhnidh mi mu dheidhinn san artaigil.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

ClĂ r-innse

Ailtireachd agus duilgheadasan an fhuasglaidh a th’ ann mar-thà


An toiseach, bha an ailtireachd a 'coimhead mar seo: tha an UI na thagradh air leth, tha am pàirt monolithic sgrÏobhte ann an Visual Basic 6, tha an tagradh .NET na sheata de sheirbheisean co-cheangailte ag obair le stòr-dàta meadhanach mòr.

Eas-bhuannachdan an fhuasglaidh roimhe

Aon phuing fĂ illigeadh
Bha aon phuing fàiligeadh againn: ruith an tagradh .NET ann an aon phròiseas. Ma dh'fhàillig modal sam bith, dh'fhàillig an aplacaid gu lèir agus b'fheudar ath-thòiseachadh. Leis gu bheil sinn a 'dèanamh fèin-ghluasad air àireamh mhòr de phròiseasan airson diofar luchd-cleachdaidh, mar thoradh air fàilligeadh ann an aon dhiubh, cha b' urrainn dha a h-uile duine obrachadh airson Úine. Agus ma thachras mearachd bathar-bog, cha do chuidich eadhon cÚl-taic.

Sreath de leasachaidhean
Tha an eas-bhuannachd seo caran eagrachaidh. Tha mòran luchd-ceannach aig an tagradh againn, agus tha iad uile airson a leasachadh cho luath ‘s a ghabhas. Roimhe sin, bha e do-dhèanta seo a dhèanamh ann an co-shìnte, agus sheas a h-uile luchd-ceannach ann an loidhne. Bha am pròiseas seo àicheil do ghnìomhachasan oir bha aca ri dearbhadh gu robh an obair aca luachmhor. Agus chuir an sgioba leasachaidh seachad ùine ag eagrachadh a’ chiudha seo. Thug seo tòrr ùine is oidhirp, agus aig a’ cheann thall cha b’ urrainn don toradh atharrachadh cho luath sa bu toil leotha.

Cleachdadh suboptimal de ghoireasan
Nuair a bha sinn a’ toirt aoigheachd do sheirbheisean ann an aon phròiseas, bha sinn an-còmhnaidh a’ dèanamh lethbhreac iomlan den rèiteachadh bho fhrithealaiche gu frithealaiche. Bha sinn airson na seirbheisean as motha a tha air an luchdachadh a chuir air leth gus nach caill sinn goireasan agus gus smachd nas sùbailte fhaighinn air an sgeama cleachdadh againn.

Doirbh teicneòlasan an latha an-diugh a chur an gnÏomh
Duilgheadas a tha eòlach air a h-uile neach-leasachaidh: tha miann ann teicneòlasan an latha an-diugh a thoirt a-steach don phròiseact, ach chan eil cothrom ann. Le fuasgladh mòr monolithic, bidh ùrachadh sam bith air an leabharlann gnàthach, gun luaidh air a’ ghluasad gu fear ùr, a’ tionndadh gu bhith na obair caran neo-bheag. Bheir e ùine mhòr dearbhadh do stiùiriche na sgioba gun toir seo barrachd bhònasan na ana-caitheamh nerves.

Duilgheadas a 'toirt seachad atharrachaidhean
B’ e seo an duilgheadas as miosa - bha sinn a’ cur a-mach fiosan a h-uile dà mhìos.
Thionndaidh gach brath gu bhith na fhìor thubaist don bhanca, a dh’ aindeoin deuchainn agus oidhirpean an luchd-leasachaidh. Thuig an gnìomhachas nach obraicheadh ​​​​cuid de na gnìomhan aige aig toiseach na seachdain. Agus thuig an luchd-leasachaidh gun robh seachdain de dhroch thachartasan a’ feitheamh riutha.
Bha miann aig a h-uile duine an suidheachadh atharrachadh.

SĂšileachadh bho microservices


Cuir a-mach co-phàirtean nuair a bhios iad deiseil. Lìbhrigeadh phàirtean nuair a bhios iad deiseil le bhith a’ lobhadh an fhuasglaidh agus a’ sgaradh diofar phròiseasan.

Sgiobaidhean toraidh beaga. Tha seo cudromach oir bha e duilich sgioba mòr a bha ag obair air an t-seann monolith a riaghladh. B’ fheudar do leithid de sgioba a bhith ag obair a rèir pròiseas teann, ach bha iad ag iarraidh barrachd cruthachalachd agus neo-eisimeileachd. Cha b’ urrainn ach sgiobaidhean beaga pàigheadh ​​airson seo.

Dealachadh sheirbheisean ann am pròiseasan fa leth. Gu h-iomchaidh, bu mhath leam a sgaradh ann an soithichean, ach chan eil àireamh mhòr de sheirbheisean a chaidh a sgrìobhadh ann an .NET Framework a’ ruith ach fo WindowsTha seirbheisean stèidhichte air .NET Core a’ nochdadh a-nis, ach chan eil mòran dhiubh ann fhathast.

SÚbailteachd cleachdadh. Bu mhath leinn seirbheisean a chur còmhla mar a tha feum againn air, agus chan ann mar a tha an còd ga sparradh.

Cleachdadh theicneòlasan Úra. Tha seo inntinneach do phrogramaiche sam bith.

Trioblaidean gluasaid


Gu dearbh, nam biodh e furasta monolith a bhriseadh gu microservices, cha bhiodh feum air bruidhinn mu dheidhinn aig co-labhairtean agus artaigilean a sgrÏobhadh. Tha iomadh cnap-starra sa phròiseas seo; bheir mi cunntas air na prÏomh fheadhainn a chuir bacadh oirnn.

A ’chiad dhuilgheadas àbhaisteach airson a’ mhòr-chuid de monoliths: co-leanailteachd loidsig gnìomhachais. Nuair a sgrìobhas sinn monolith, tha sinn airson na clasaichean againn ath-chleachdadh gus nach sgrìobh sinn còd neo-riatanach. Agus nuair a ghluaiseas tu gu microservices, bidh seo na dhuilgheadas: tha an còd gu lèir ceangailte gu math teann, agus tha e duilich na seirbheisean a sgaradh.

Aig àm tòiseachadh na h-obrach, bha còrr air 500 pròiseact aig an taigh-tasgaidh agus còrr air 700 mÏle loidhne de chòd. Is e co-dhÚnadh gu math mòr a tha seo agus dàrna duilgheadas. Cha robh e comasach dÏreach a ghabhail agus a roinn ann am microservices.

An treas duilgheadas - dìth bun-structair riatanach. Gu dearbh, bha sinn a’ dèanamh lethbhreac le làimh den chòd stòr gu na frithealaichean.

Mar a ghluaiseas tu bho monolith gu microservices


A 'toirt seachad microservices

An toiseach, cho-dhùin sinn sa bhad dhuinn fhìn gur e pròiseas ath-aithriseach a th’ ann an dealachadh microservices. Dh'fheumadh sinn daonnan duilgheadasan gnìomhachais a leasachadh aig an aon àm. Is e mar a chuireas sinn seo an gnìomh gu teicnigeach an duilgheadas a th’ againn mu thràth. Mar sin, rinn sinn ullachadh airson pròiseas ath-aithriseach. Chan obraich e dòigh sam bith eile ma tha iarrtas mòr agad agus nach eil e deiseil airson ath-sgrìobhadh an toiseach.

Dè na dòighean a bhios sinn a’ cleachdadh gus microservices a sgaradh?

A 'chiad dhòigh - gluais na modalan a th’ ann mar sheirbheisean. A thaobh seo, bha sinn fortanach: bha seirbheisean clàraichte ann mu thràth a bha ag obair a 'cleachdadh protocol WCF. Bha iad air an roinn ann an co-chruinneachaidhean fa leth. Chuir sinn iad air leth, a’ cur lannsair beag ris gach togalach. Chaidh a sgrìobhadh a’ cleachdadh an leabharlann iongantach Topshelf, a leigeas leat an tagradh a ruith an dà chuid mar sheirbheis agus mar chonsail. Tha seo goireasach airson debugging leis nach eil feum air pròiseactan a bharrachd san fhuasgladh.

Bha na seirbheisean ceangailte a rèir loidsig gnìomhachais, leis gu robh iad a’ cleachdadh co-chruinneachaidhean cumanta agus ag obair le stòr-dàta cumanta. Cha mhòr gum b’ e microservices a chanar riutha anns an fhìor chruth aca. Ach, b’ urrainn dhuinn na seirbheisean sin a thoirt seachad air leth, ann am pròiseasan eadar-dhealaichte. Rinn seo leis fhèin e comasach am buaidh air a chèile a lughdachadh, a’ lughdachadh na duilgheadas le leasachadh co-shìnte agus aon phuing fàilligeadh.

Chan eil ann an co-chruinneachadh leis an aoigh ach aon loidhne de chòd ann an clas a’ Phrògraim. Chuir sinn am falach obair le Topshelf ann an clas taiceil.

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

       }
    }
}

Is e an dàrna dòigh air microservices a riarachadh: cruthaich iad gus fuasgladh fhaighinn air duilgheadasan ùra. Mura h-eil am monolith a 'fàs aig an aon àm, tha seo mar-thà sàr-mhath, a tha a' ciallachadh gu bheil sinn a 'gluasad air an t-slighe cheart. Gus fuasgladh fhaighinn air duilgheadasan ùra, dh'fheuch sinn ri seirbheisean fa leth a chruthachadh. Nam biodh an leithid de chothrom ann, chruthaich sinn barrachd sheirbheisean “canonical” a bhios gu tur a’ riaghladh am modail dàta aca fhèin, stòr-dàta air leth.

Thòisich sinn, mar mòran, le seirbheisean dearbhaidh is ceadachaidh. Tha iad foirfe airson seo. Tha iad neo-eisimeileach, mar riaghailt, tha modail dàta fa leth aca. Chan eil iad fhèin ag eadar-obrachadh leis a 'monolith, a-mhàin bidh e a' tionndadh riutha gus fuasgladh fhaighinn air cuid de dhuilgheadasan. Le bhith a’ cleachdadh nan seirbheisean sin, faodaidh tu tòiseachadh air a’ ghluasad gu ailtireachd ùr, dì-bug a’ bhun-structair orra, feuch cuid de dhòighean-obrach co-cheangailte ri leabharlannan lìonra, msaa. Chan eil sgiobaidhean againn sa bhuidheann againn nach b’ urrainn seirbheis dearbhaidh a chruthachadh.

An treas dòigh air microservices a riarachadhTha am fear a chleachdas sinn beagan sònraichte dhuinn. Is e seo toirt air falbh loidsig gnÏomhachais bhon Ïre UI. Is e am prÏomh thagradh UI againn deasg; tha e, mar an backend, sgrÏobhte ann an C #. Rinn an luchd-leasachaidh mearachdan bho àm gu àm agus ghluais iad pàirtean de loidsig chun UI a bu chòir a bhith ann air an deireadh-sheachdain agus a bhith air an ath-chleachdadh.

Ma choimheadas tu air fìor eisimpleir bho chòd pàirt UI, chì thu gu bheil fìor loidsig gnìomhachais anns a ’mhòr-chuid den fhuasgladh seo a tha feumail ann am pròiseasan eile, chan ann a-mhàin airson foirm UI a thogail.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Chan eil an fhìor loidsig UI ann ach anns an loidhne no dhà mu dheireadh. Ghluais sinn e chun t-seirbheisiche gus an gabhadh a chleachdadh a-rithist, mar sin a’ lughdachadh an UI agus a’ coileanadh an ailtireachd cheart.

An ceathramh agus an dòigh as cudromaiche airson microservices a sgaradh, a tha ga dhèanamh comasach an monolith a lùghdachadh, a bhith a 'toirt air falbh na seirbheisean a th' ann mar-thà le giullachd. Nuair a bheir sinn a-mach na modalan a th’ ann mar a tha, chan eil an toradh an-còmhnaidh a’ còrdadh ris an luchd-leasachaidh, agus is dòcha gu bheil am pròiseas gnìomhachais air fàs sean bho chaidh an comas-gnìomh a chruthachadh. Le refactoring, is urrainn dhuinn taic a thoirt do phròiseas gnìomhachais ùr leis gu bheil riatanasan gnìomhachais an-còmhnaidh ag atharrachadh. Is urrainn dhuinn an còd tùsail a leasachadh, uireasbhaidhean aithnichte a thoirt air falbh, agus modal dàta nas fheàrr a chruthachadh. Tha mòran bhuannachdan an cois seo.

Tha dealachadh sheirbheisean bho ghiullachd gu dlùth ceangailte ri bun-bheachd co-theacsa crìche. Is e seo bun-bheachd bho Domain Driven Design. Tha e a’ ciallachadh earrann den mhodail àrainn anns a bheil a h-uile teirm ann an aon chànan air a mhìneachadh gu sònraichte. Bheir sinn sùil air an eisimpleir de cho-theacsa àrachas agus bilean. Tha tagradh monolithic againn, agus feumaidh sinn obrachadh leis a 'chunntas ann an àrachas. Tha sinn an dùil gun lorg an leasaiche clas cunntais a tha ann mu thràth ann an co-chruinneachadh eile, thoir iomradh air bhon chlas Àrachais, agus bidh còd obrach againn. Bithear a’ toirt urram do phrionnsapal DRY, thèid an obair a dhèanamh nas luaithe le bhith a’ cleachdadh còd a th’ ann mar-thà.

Mar thoradh air an sin, tha e a 'tionndadh a-mach gu bheil co-theacsan nan cunntasan agus àrachas ceangailte. Mar a nochdas riatanasan Úra, cuiridh an ceangal seo bacadh air leasachadh, a 'meudachadh iom-fhillteachd loidsig gnÏomhachais a tha mar-thà iom-fhillte. Gus an duilgheadas seo fhuasgladh, feumaidh tu na crÏochan eadar na co-theacsan sa chòd a lorg agus na brisidhean aca a thoirt air falbh. Mar eisimpleir, ann an co-theacsa àrachais, tha e gu math comasach gum bi àireamh cunntais Banca Meadhanach 20-fhigearach agus an ceann-latha a chaidh an cunntas fhosgladh gu leòr.

Gus na co-theacsan crìche sin a sgaradh bho chèile agus tòiseachadh air a’ phròiseas airson meanbh-sheirbheisean a sgaradh bho fhuasgladh monolithic, chleachd sinn dòigh-obrach leithid cruthachadh APIan taobh a-muigh taobh a-staigh an tagraidh. Nam biodh fios againn gum bu chòir modal air choreigin a bhith na meanbh-sheirbheis, air atharrachadh ann an dòigh air choireigin sa phròiseas, chuir sinn fios sa bhad chun loidsig a bhuineas do cho-theacsa cuibhrichte eile tro ghairmean bhon taobh a-muigh. Mar eisimpleir, tro REST no WCF.

Cho-dhùin sinn gu daingeann nach seachainn sinn còd a dh’ fheumadh gnothaichean sgaoilte. Anns a 'chùis againn, bha e gu math furasta an riaghailt seo a leantainn. Chan eil sinn fhathast air coinneachadh ri suidheachaidhean far a bheil fìor fheum air gnothaichean sgaoilte - tha cunbhalachd deireannach eadar modalan gu leòr.

Bheir sinn sùil air eisimpleir sònraichte. Tha bun-bheachd orchestrator againn - loidhne-phìoban a bhios a’ giullachd eintiteas an “tagradh”. Bidh e a’ cruthachadh teachdaiche, cunntas agus cairt banca mu seach. Ma thèid an neach-dèiligidh agus an cunntas a chruthachadh gu soirbheachail, ach ma dh’ fhailicheas cruthachadh cairt, cha ghluais an tagradh chun inbhe “soirbheachail” agus bidh e fhathast san inbhe “cairt nach deach a chruthachadh”. Anns an àm ri teachd, togaidh gnìomhachd cùl-fhiosrachaidh e agus cuiridh e crìoch air. Tha an siostam air a bhith ann an staid neo-chunbhalach airson ùine, ach sa chumantas tha sinn riaraichte le seo.

Ma dh’ èiricheas suidheachadh nuair a dh’ fheumar pàirt den dàta a shàbhaladh gu cunbhalach, is coltaiche gun tèid sinn airson an t-seirbheis a dhaingneachadh gus a phròiseasadh ann an aon phròiseas.

Bheir sinn sÚil air eisimpleir de bhith a 'riarachadh microservice. Ciamar as urrainn dhut a thoirt gu cinneasachadh an Ïre mhath sàbhailte? Anns an eisimpleir seo, tha pàirt eadar-dhealaichte againn den t-siostam - modal seirbheis pàighidh, aon de na h-earrannan còd a bu mhath leinn microservice a dhèanamh.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

An toiseach, bidh sinn a 'cruthachadh microservice le bhith ag ath-sgrìobhadh a' chòd. Tha sinn a’ leasachadh cuid de nithean air nach robh sinn toilichte. Bidh sinn a’ cur an gnìomh riatanasan gnìomhachais ùra bhon neach-ceannach. Bidh sinn a’ cur Gateway API ris a’ cheangal eadar an UI agus an backend, a bheir seachad fios air adhart.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

An ath rud, bidh sinn a ’leigeil a-mach an rèiteachadh seo gu gnìomh, ach ann an stàite pìleat. Bidh a’ mhòr-chuid de ar luchd-cleachdaidh fhathast ag obair le seann phròiseasan gnìomhachais. Do luchd-cleachdaidh ùr, tha sinn a’ leasachadh dreach ùr den tagradh monolithic anns nach eil am pròiseas seo tuilleadh. Gu bunaiteach, tha measgachadh againn de monolith agus microservice ag obair mar phìleat.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Le pÏleat soirbheachail, tha sinn a 'tuigsinn gu bheil an rèiteachadh Úr gu dearbh comasach obrachadh, is urrainn dhuinn an seann monolith a thoirt air falbh bhon cho-aontar agus an rèiteachadh Úr fhàgail an àite an t-seann fhuasglaidh.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Gu h-iomlan, bidh sinn a 'cleachdadh cha mhòr a h-uile dòigh a th' ann mar-thà airson a bhith a 'roinn còd stòr monolith. Leigidh iad uile leinn meud pàirtean den tagradh a lughdachadh agus an eadar-theangachadh gu leabharlannan ùra, a’ dèanamh còd stòr nas fheàrr.

Ag obair leis an stòr-dàta


Faodar an stòr-dàta a roinn nas miosa na an còd tÚsail, leis gu bheil chan e a-mhàin an sgeama làithreach ann, ach cuideachd dàta eachdraidheil cruinnichte.

Bha ana-cothrom cudromach eile aig an stòr-dàta againn, mar mòran eile - a mheud mòr. Chaidh an stòr-dàta seo a dhealbhadh a rèir loidsig gnÏomhachais toinnte monolith, agus dàimhean cruinnichte eadar na bÚird de dhiofar cho-theacsan crÏche.

Anns a 'chÚis againn, gus faighinn thairis air na duilgheadasan gu lèir (stòr-dàta mòr, mòran cheanglaichean, uaireannan crÏochan neo-shoilleir eadar clàran), dh' èirich duilgheadas a tha a 'tachairt ann am mòran phròiseactan mòra: cleachdadh teamplaid stòr-dàta co-roinnte. Chaidh dàta a thoirt bho chlàran tro shealladh, tro ath-riochdachadh, agus a chuir gu siostaman eile far an robh feum air an ath-riochdachadh seo. Mar thoradh air an sin, cha b 'urrainn dhuinn na clàran a ghluasad gu sgeama air leth oir bha iad air an cleachdadh gu gnÏomhach.

Tha an aon sgaradh ann an co-theacsan cuibhrichte sa chòd gar cuideachadh ann an dealachadh. Mar as trice bidh e a 'toirt dhuinn deagh bheachd air mar a bhios sinn a' briseadh sìos an dàta aig ìre an stòr-dàta. Tha sinn a’ tuigsinn dè na clàran a bhuineas do aon cho-theacs crìche agus cò dha fear eile.

Chleachd sinn dà dhòigh chruinneil airson sgaradh stòr-dàta: sgaradh bùird a th’ ann mar-thà agus sgaradh le giullachd.

Tha sgaradh bùird a th’ ann mar-thà na dhòigh math air a chleachdadh ma tha structar an dàta math, a ’coinneachadh ri riatanasan gnìomhachais, agus a h-uile duine toilichte leis. Anns a 'chùis seo, is urrainn dhuinn na clàran a th' ann mar-thà a sgaradh ann an sgeama air leth.

Tha feum air roinn le giullachd nuair a tha am modail gnÏomhachais air atharrachadh gu mòr, agus nach eil na bÚird gar sàsachadh idir.

A 'sgoltadh na clàran a th' ann mar-thà. Feumaidh sinn co-dhùnadh dè a dhealaich sinn. Às aonais an eòlais seo, cha obraich dad, agus an seo cuidichidh dealachadh cho-theacsan crìche sa chòd sinn. Mar riaghailt, ma thuigeas tu crìochan nan co-theacsan anns a 'chòd stòr, bidh e soilleir dè na clàran a bu chòir a bhith air an toirt a-steach don liosta airson na roinne.

Smaoinich gu bheil fuasgladh againn anns a bheil dà mhodal monolith ag eadar-obrachadh le aon stòr-dàta. Feumaidh sinn dèanamh cinnteach nach eil ach aon mhodal ag eadar-obrachadh leis an roinn de chlàran dealaichte, agus am fear eile a’ tòiseachadh ag eadar-obrachadh leis tron ​​API. An toiseach, tha e gu leòr nach tèid ach clàradh a dhèanamh tron ​​​​API. Tha seo na chumha riatanach dhuinn bruidhinn mu neo-eisimeileachd microservices. Faodaidh ceanglaichean leughaidh fuireach fhad ‘s nach eil duilgheadas mòr ann.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Is e an ath cheum gun urrainn dhuinn an earrann de chòd a tha ag obair le bùird sgaraichte, le no às aonais giollachd, a sgaradh gu microservice air leth agus a ruith ann am pròiseas air leth, soitheach. Bidh seo na sheirbheis air leth le ceangal ris an stòr-dàta monolith agus na clàran sin nach eil a’ buntainn gu dìreach ris. Tha am monolith fhathast ag eadar-obrachadh airson leughadh leis a 'phàirt so-ruigsinneach.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Nas fhaide air adhart bheir sinn air falbh an ceangal seo, is e sin, thèid dàta leughaidh bho thagradh monolithic bho chlàran sgaraichte a ghluasad chun API cuideachd.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

An uairsin, taghaidh sinn bhon stòr-dàta coitcheann na clàran leis nach obraich ach am microservice Úr. Faodaidh sinn na bÚird a ghluasad gu sgeama air leth no eadhon gu stòr-dàta corporra air leth. Tha ceangal leughaidh fhathast eadar am microservice agus an stòr-dàta monolith, ach chan eil dad ri dragh mu dheidhinn, anns an rèiteachadh seo faodaidh e a bhith beò airson Úine mhòr.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Is e an ceum mu dheireadh a h-uile ceangal a thoirt air falbh gu tur. Anns a 'chùis seo, is dòcha gum feum sinn dàta a ghluasad bhon phrìomh stòr-dàta. Aig amannan bidh sinn airson cuid de dhàta no seòlaidhean ath-chleachdadh bho shiostaman taobh a-muigh ann an grunn stòran-dàta. Bidh seo a’ tachairt dhuinn bho àm gu àm.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Roinn giollachd. Tha an dòigh seo glè choltach ris a 'chiad fhear, a-mhàin ann an òrdugh cùil. Bidh sinn a’ riarachadh stòr-dàta ùr sa bhad agus meanbh-sheirbheis ùr a bhios ag eadar-obrachadh leis an monolith tro API. Ach aig an aon àm, tha seata de chlàran stòr-dàta ann fhathast a tha sinn airson a dhubhadh às san àm ri teachd. Chan eil feum againn air tuilleadh; chuir sinn am modail ùr na àite.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Gus an obraich an sgeama seo, tha coltas ann gum feum sinn Ăšine eadar-ghluasaid.

An uairsin tha dà dhòigh-obrach comasach.

A 'chiad fhear: bidh sinn a’ dùblachadh a h-uile dàta anns na stòran-dàta ùr is sean. Anns a’ chùis seo, tha call dàta againn agus faodaidh duilgheadasan sioncronaidh èirigh. Ach is urrainn dhuinn dà neach-dèiligidh eadar-dhealaichte a ghabhail. Bidh aon ag obair leis an dreach ùr, am fear eile leis an t-seann fhear.

An dàrna fear: bidh sinn a 'roinn an dàta a rèir cuid de shlatan-tomhais gnìomhachais. Mar eisimpleir, bha toraidhean 5 againn san t-siostam a bha air an stòradh san t-seann stòr-dàta. Bidh sinn a’ cur an t-siathamh tè taobh a-staigh na h-obrach gnìomhachais ùr ann an stòr-dàta ùr. Ach bidh feum againn air Gateway API a shioncronaicheas an dàta seo agus a sheallas don neach-dèiligidh càite agus dè a gheibh e.

Bidh an dà dhòigh-obrach ag obair, tagh a rèir an t-suidheachaidh.

Às deidh dhuinn a bhith cinnteach gu bheil a h-uile càil ag obair, faodar am pàirt den monolith a tha ag obair le seann structaran stòr-dàta a chiorramachadh.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Is e an ceum mu dheireadh na seann structaran dĂ ta a thoirt air falbh.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Gus geàrr-chunntas a dhèanamh, faodaidh sinn a ràdh gu bheil duilgheadasan againn leis an stòr-dàta: tha e duilich obrachadh leis an taca ris a’ chòd stòr, tha e nas duilghe a roinn, ach faodar agus bu chòir a dhèanamh. Tha sinn air dòighean a lorg a leigeas leinn seo a dhèanamh gu math sàbhailte, ach tha e fhathast nas fhasa mearachdan a dhèanamh le dàta na leis a’ chòd stòr.

Ag obair le còd stòr


Seo mar a bha an diagram còd stòr coltach nuair a thòisich sinn a’ dèanamh anailis air a’ phròiseact monolithic.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Faodar a roinn gu garbh ann an trì sreathan. Is e seo sreath de mhodalan a chaidh a chuir air bhog, plugins, seirbheisean agus gnìomhan fa leth. Gu dearbh, bha iad sin nan àiteachan inntrigidh taobh a-staigh fuasgladh monolithic. Bha iad uile air an seuladh gu teann le còmhdach Coitcheann. Bha loidsig gnìomhachais aige a bha na seirbheisean a’ roinn agus tòrr cheanglaichean. Chleachd gach seirbheis agus plugan suas ri 10 co-chruinneachaidhean cumanta no barrachd, a rèir am meud agus cogais an luchd-leasachaidh.

Bha sinn fortanach leabharlannan bun-structair a bhith againn a ghabhadh cleachdadh air leth.

Aig amannan dh’ èirich suidheachadh nuair nach buineadh cuid de nithean cumanta don ìre seo, ach gur e leabharlannan bun-structair a bh’ annta. Chaidh seo fhuasgladh le bhith ag ath-ainmeachadh.

Bha an dragh as motha ann an co-theacsan crìche. Thachair e gun robh co-theacsan 3-4 measgaichte ann an aon cho-chruinneachadh Coitcheann agus a 'cleachdadh a chèile taobh a-staigh nan aon ghnìomhan gnìomhachais. Bha e riatanach tuigsinn far an gabhadh seo a roinn agus dè na crìochan, agus dè an ath rud a bu chòir a dhèanamh le bhith a’ mapadh an roinn seo gu co-chruinneachaidhean còd stòr.

Tha sinn air grunn riaghailtean a chuir ri chèile airson a’ phròiseas sgoltadh còd.

A 'chiad fhear: Cha robh sinn tuilleadh airson loidsig gnìomhachais a cho-roinn eadar seirbheisean, gnìomhan agus plugins. Bha sinn airson loidsig gnìomhachais a dhèanamh neo-eisimeileach taobh a-staigh microservices. Tha microservices, air an làimh eile, air am meas mar sheirbheisean a tha gu tur neo-eisimeileach. Tha mi a’ creidsinn gu bheil an dòigh-obrach seo caran sgudail, agus tha e duilich a choileanadh, oir, mar eisimpleir, bidh seirbheisean ann an C# co-dhiù ceangailte le leabharlann àbhaisteach. Tha an siostam againn sgrìobhte ann an C #; chan eil sinn air teicneòlasan eile a chleachdadh fhathast. Mar sin, cho-dhùin sinn gum b’ urrainn dhuinn co-chruinneachaidhean teignigeach cumanta a chleachdadh. Is e am prìomh rud nach eil pìosan sam bith de loidsig gnìomhachais annta. Ma tha pasgan goireasachd agad thairis air an ORM a tha thu a’ cleachdadh, tha e gu math daor a bhith ga chopaigeadh bho sheirbheis gu seirbheis.

Tha an sgioba againn dèidheil air dealbhadh air a stiùireadh le fearann, agus mar sin bha ailtireachd oinniún gu math iomchaidh dhuinn. Chan e bunait ar seirbheisean an ìre ruigsinneachd dàta, ach co-chruinneachadh le loidsig fearainn, anns nach eil ach loidsig gnìomhachais agus aig nach eil ceanglaichean ris a’ bhun-structar. Aig an aon àm, is urrainn dhuinn an co-chruinneachadh fearainn atharrachadh gu neo-eisimeileach gus fuasgladh fhaighinn air duilgheadasan co-cheangailte ri frèaman.

Aig an ìre seo thàinig sinn tarsainn air a’ chiad fhìor dhuilgheadas againn. Bha aig an t-seirbheis ri iomradh a thoirt air aon cho-chruinneachadh fearainn, bha sinn airson an loidsig a dhèanamh neo-eisimeileach, agus chuir am prionnsapal DRY bacadh mòr oirnn an seo. Bha an luchd-leasachaidh airson clasaichean ath-chleachdadh bho cho-chruinneachaidhean faisg air làimh gus dùblachadh a sheachnadh, agus mar thoradh air an sin, thòisich raointean air an ceangal ri chèile a-rithist. Rinn sinn mion-sgrùdadh air na toraidhean agus cho-dhùin sinn gur dòcha gu bheil an duilgheadas cuideachd na laighe ann an raon an inneal stòraidh còd stòr. Bha stòr mòr againn anns an robh a h-uile còd tùsail. Bha am fuasgladh airson a 'phròiseict gu lèir gu math duilich a chruinneachadh air inneal ionadail. Mar sin, chaidh fuasglaidhean beaga fa leth a chruthachadh airson pàirtean den phròiseact, agus cha do chuir duine bacadh air co-chruinneachadh coitcheann no fearainn a chuir riutha agus an ath-chleachdadh. Is e an aon inneal nach do leig leinn seo a dhèanamh ath-sgrùdadh còd. Ach uaireannan dh'fhàillig e cuideachd.

An uairsin thòisich sinn a 'gluasad gu modail le stòran air leth. Chan eil loidsig gnìomhachais a’ sruthadh tuilleadh bho sheirbheis gu seirbheis, tha raointean air fàs gu bhith neo-eisimeileach. Tha taic nas soilleire ri co-theacsan crìche. Ciamar a chleachdas sinn leabharlannan bun-structair? Dhealaich sinn iad ann an stòr air leth, an uairsin chuir sinn ann am pasganan Nuget, a chuir sinn a-steach gu Artifactory. Le atharrachadh sam bith, bidh co-chruinneachadh agus foillseachadh a’ tachairt gu fèin-ghluasadach.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Thòisich na seirbheisean againn a’ toirt iomradh air pasganan bun-structair a-staigh san aon dòigh ri feadhainn a-muigh. Bidh sinn a’ luchdachadh sìos leabharlannan taobh a-muigh bho Nuget. Gus obrachadh le Artifactory, far an do chuir sinn na pacaidean sin, chleachd sinn dà mhanaidsear pacaid. Ann an stòran beaga chleachd sinn Nuget cuideachd. Ann an stòran le grunn sheirbheisean, chleachd sinn Paket, a bheir seachad barrachd cunbhalachd dreach eadar modalan.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Mar sin, le bhith ag obair air a’ chòd stòr, ag atharrachadh beagan an ailtireachd agus a’ sgaradh nan stòran, bidh sinn a’ dèanamh ar seirbheisean nas neo-eisimeiliche.

Duilgheadasan bun-structair


Tha a’ mhòr-chuid de na h-eas-bhuannachdan a thaobh gluasad gu microservices co-cheangailte ri bun-structar. Bidh feum agad air cleachdadh fèin-ghluasadach, bidh feum agad air leabharlannan ùra gus am bun-structar a ruith.

StĂ ladh lĂ imhe ann an Ă rainneachdan

An toiseach, chuir sinn a-steach am fuasgladh airson àrainneachdan le làimh. Gus am pròiseas seo a dhèanamh fèin-ghluasadach, chruthaich sinn loidhne-phÏoban CI/CD. Thagh sinn am pròiseas lÏbhrigidh leantainneach leis nach eil cleachdadh leantainneach fhathast iomchaidh dhuinn bho shealladh pròiseasan gnÏomhachais. Mar sin, thèid cur airson obrachadh a dhèanamh le putan, agus airson deuchainn - gu fèin-ghluasadach.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Bidh sinn a’ cleachdadh Atlassian, Bitbucket airson stòradh còd stòr agus bambù airson togail. Is toil leinn sgriobtaichean togail a sgrìobhadh ann an Cèic oir tha e an aon rud ri C #. Bidh pasganan deiseil a’ tighinn gu Artifactory, agus bidh Ansible a’ faighinn gu fèin-ghluasadach gu na frithealaichean deuchainn, às deidh sin faodar an deuchainn sa bhad.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

ClĂ radh air leth


Aig aon àm, b 'e aon de na beachdan aig a' monolith a bhith a 'toirt seachad logadh co-roinnte. Dh'fheumadh sinn cuideachd tuigsinn dè a bu chòir a dhèanamh leis na logaichean fa leth a tha air na diosgan. Tha na logaichean againn air an sgrìobhadh gu faidhlichean teacsa. Cho-dhùin sinn stac ELK àbhaisteach a chleachdadh. Cha do sgrìobh sinn gu ELK gu dìreach tro na solaraichean, ach cho-dhùin sinn gun atharraicheadh ​​​​sinn na logaichean teacsa agus gun sgrìobhadh sinn an ID lorg annta mar aithnichear, a’ cur ainm na seirbheis ris, gus an gabhadh na logaichean sin a pharsadh nas fhaide air adhart.

An gluasad bho monolith gu microservices: eachdraidh agus cleachdadh

Le Filebeat tha sinn comasach air na logaichean againn a chruinneachadh bho frithealaichean, an uair sin gan cruth-atharrachadh, cleachd Kibana gus ceistean a thogail san UI, agus faic mar a chaidh an gairm a stiÚireadh eadar seirbheisean. Tha IDan Trace glè fheumail airson seo.

Deuchainn agus debugging seirbheisean co-cheangailte


An toiseach, cha robh sinn a' tuigsinn gu tur ciamar a dh'fhaodar na seirbheisean a thathar a' leasachadh a dheasbad. Bha a h-uile dad sìmplidh leis a’ monolith; ruith sinn e air inneal ionadail. An toiseach dh'fheuch iad ris an aon rud a dhèanamh le microservices, ach uaireannan gus aon microservice a chuir air bhog gu h-iomlan feumaidh tu grunn eile a chuir air bhog, agus tha seo mì-ghoireasach. Thuig sinn gum feum sinn gluasad gu modail far am fàg sinn air an inneal ionadail a-mhàin an t-seirbheis no na seirbheisean a tha sinn airson a dheasbad. Tha na seirbheisean a tha air fhàgail air an cleachdadh bho luchd-frithealaidh a tha a rèir an rèiteachadh le prod. Às deidh dì-bhugachadh, rè deuchainn, airson gach gnìomh, chan eil ach na seirbheisean atharraichte air an toirt don t-seirbheisiche deuchainn. Mar sin, tha am fuasgladh air a dhearbhadh anns an fhoirm anns am bi e a 'nochdadh ann an riochdachadh san àm ri teachd.

Tha frithealaichean ann nach ruith ach dreachan toraidh de sheirbheisean. Tha feum air na frithealaichean sin ma thachras tachartasan, gus sgrÚdadh a dhèanamh air lÏbhrigeadh mus tèid an cleachdadh agus airson trèanadh a-staigh.

Tha sinn air pròiseas dearbhaidh fèin-ghluasadach a chuir ris a’ cleachdadh an leabharlann mòr-chòrdte Specflow. Bidh deuchainnean a’ ruith gu fèin-ghluasadach a’ cleachdadh NUnit dìreach às deidh an cleachdadh bho Ansible. Ma tha còmhdach na h-obrach gu tur fèin-ghluasadach, chan eil feum air deuchainn làimhe. Ged a tha feum air deuchainnean làimhe a bharrachd uaireannan. Bidh sinn a’ cleachdadh tagaichean ann an Jira gus faighinn a-mach dè na deuchainnean a bu chòir a ruith airson cùis shònraichte.

A bharrachd air an sin, tha an fheum air deuchainn luchdan air a dhol am meud; roimhe seo cha deach a dhèanamh ach ann an cùisean ainneamh. Bidh sinn a’ cleachdadh JMeter airson deuchainnean a ruith, InfluxDB airson an stòradh, agus Grafana gus grafaichean pròiseas a thogail.

Dè tha sinn air a choileanadh?


An toiseach, fhuair sinn cuidhteas a 'bhun-bheachd "release". Tha na fiosan uamhasach dà mhìos air falbh nuair a chaidh an colossus seo a chleachdadh ann an àrainneachd cinneasachaidh, a’ cur dragh air pròiseasan gnìomhachais airson ùine. A-nis bidh sinn a’ cleachdadh sheirbheisean gu cuibheasach a h-uile 1,5 latha, gan cruinneachadh leis gu bheil iad a’ dol an gnìomh às deidh cead fhaighinn.

Chan eil fàilligidhean marbhtach san t-siostam againn. Ma leigeas sinn a-mach microservice le bug, thèid an gnìomh co-cheangailte ris a bhriseadh, agus cha bhi buaidh air a h-uile gnìomh eile. Tha seo gu mòr a’ leasachadh eòlas an neach-cleachdaidh.

Is urrainn dhuinn smachd a chumail air a’ phàtran cleachdadh. Faodaidh tu buidhnean de sheirbheisean a thaghadh fa leth bhon chòrr den fhuasgladh, ma tha sin riatanach.

A bharrachd air an sin, tha sinn air an duilgheadas a lughdachadh gu mòr le ciudha mòr de leasachaidhean. Tha sgiobaidhean toraidh fa-leth againn a-nis a bhios ag obair le cuid de na seirbheisean gu neo-eisimeileach. Tha pròiseas Scrum mar-thà gu math iomchaidh an seo. Is dòcha gum bi sealbhadair toraidh air leth aig sgioba sònraichte a bhios a’ sònrachadh ghnìomhan dha.

GeĂ rr-chunntas

  • Tha microservices gu math freagarrach airson siostaman iom-fhillte a bhriseadh. Anns a 'phròiseas, bidh sinn a' tòiseachadh a 'tuigsinn dè a tha san t-siostam againn, dè na co-theacsan cuingealaichte a th' ann, far a bheil na crĂŹochan aca. Leigidh seo leat leasachaidhean a sgaoileadh gu ceart am measg mhodalan agus casg a chuir air troimh-chèile còd.
  • Bidh microservices a’ toirt seachad buannachdan eagrachaidh. Gu tric chan eilear a 'bruidhinn orra ach mar ailtireachd, ach tha feum air ailtireachd sam bith gus fuasgladh fhaighinn air feumalachdan gnĂŹomhachais, agus chan ann leis fhèin. Mar sin, is urrainn dhuinn a rĂ dh gu bheil microservices gu math freagarrach airson fuasgladh fhaighinn air duilgheadasan ann an sgiobaidhean beaga, leis gu bheil fèill mhòr air Scrum a-nis.
  • Tha sgaradh na phròiseas ath-aithriseach. Chan urrainn dhut tagradh a ghabhail agus dĂŹreach a roinn ann am microservices. Chan eil e coltach gum bi an toradh a thig Ă s obrachail. Nuair a bhios sinn a’ coisrigeadh microservices, tha e buannachdail an dĂŹleab a th’ ann ath-sgrĂŹobhadh, is e sin, a thionndadh gu còd a tha sinn a’ còrdadh agus a choinnicheas nas fheĂ rr ri feumalachdan gnĂŹomhachais a thaobh comas-gnĂŹomh agus astar.

    Facal beag: Tha cosgaisean gluasad gu microservices gu math cudromach. Thug e ùine mhòr fuasgladh fhaighinn air an duilgheadas bun-structair leis fhèin. Mar sin ma tha tagradh beag agad nach eil feumach air sgèileadh sònraichte, mura h-eil àireamh mhòr de luchd-ceannach agad a’ farpais airson aire agus ùine do sgioba, is dòcha nach e microservices a tha a dhìth ort an-diugh. Tha e gu math daor. Ma thòisicheas tu air a 'phròiseas le microservices, an toiseach bidh na cosgaisean nas àirde na ma thòisicheas tu air an aon phròiseact le leasachadh monolith.

    PS Sgeulachd nas tòcail (agus mar gum biodh e dhutsa gu pearsanta) - a rèir cheangal.
    Seo an dreach slĂ n den aithisg.

Source: www.habr.com

Ceannaich aoigheachd earbsach airson làraich le dìon DDoS, frithealaichean VPS VDS 🔥 Ceannaich aoigheachd làrach-lìn earbsach le dìon DDoS, frithealaichean VPS VDS | ProHoster