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.

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.

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 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 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.

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.

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.

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.

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 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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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 .
Seo an dreach slĂ n den aithisg.
Source: www.habr.com
