Microservices - spreadhadh combinatorial dreachan

Halò, Habr! Bidh mi a’ nochdadh gu d’ aire eadar-theangachadh an ùghdair air an artaigil Microservices - spreadhadh co-mheasgaichte de dhreachan.
Microservices - spreadhadh combinatorial dreachan
Aig àm nuair a tha saoghal IT a’ gluasad mean air mhean a dh’ionnsaigh meanbh-sheirbheisean agus innealan mar Kubernetes, chan eil ach aon duilgheadas a’ fàs nas follaisiche. An duilgheadas seo - spreadhadh combinatorial tionndaidhean microservice. Ach, tha a’ choimhearsnachd IT den bheachd gu bheil an suidheachadh làithreach tòrr nas fheàrr na "An eisimeileachd" ginealach roimhe de theicneòlas. Ach, tha tionndadh microservices na dhuilgheadas gu math toinnte. Faodaidh aon dearbhadh air seo a bhith artaigilean mar "Thoir dhomh air ais mo monolith".

Mura h-eil thu fhathast a’ tuigsinn na trioblaid le bhith a’ leughadh an teacsa seo, leig dhomh mìneachadh. Canaidh sinn gu bheil an toradh agad air a dhèanamh suas de 10 microservices. A-nis gabhamaid ris gu bheil dreach ùr 1 air a leigeil ma sgaoil airson gach aon de na microservices sin. Tionndadh 1 a-mhàin - tha mi an dòchas gun urrainn dhuinn uile aontachadh gur e fìrinn gu math beag agus beag a tha seo. A-nis, ge-tà, leig dhuinn sùil eile a thoirt air an toradh againn. Le dìreach aon dreach ùr de gach pàirt, tha 2^10 - no 1024 atharrachadh againn a-nis air mar a ghabhas an toradh againn a dhèanamh.

Ma tha mì-thuigse sam bith ann fhathast, leig dhomh am matamataigs a bhriseadh sìos. Mar sin tha 10 microservices againn, gach fear a’ faighinn aon ùrachadh. Is e sin, gheibh sinn 2 dhreach comasach airson gach microservice (seann no ùr). A-nis, airson gach aon de na pàirtean toraidh, is urrainn dhuinn aon den dà dhreach sin a chleachdadh. Gu matamataigeach, tha e an aon rud mar gum biodh àireamh binary de 10 àireamhan againn. Mar eisimpleir, canaidh sinn gur e 1 an dreach ùr, agus is e 0 an seann dreach - an uairsin faodar aon permutation a chomharrachadh mar 1001000000 - far a bheil na pàirtean 1d agus 4th air an ùrachadh, agus nach eil a h-uile gin eile. Bho matamataig tha fios againn gum faod luachan 10^2 neo 10 a bhith aig àireamh dà-fhigearach 1024-digiteach. Is e sin, tha sinn air meud na h-àireimh ris a bheil sinn a’ dèiligeadh a dhearbhadh.

Leanaidh sinn air adhart leis an reusanachadh againn - dè a thachras ma bhios 100 microservices againn agus gu bheil 10 dreachan comasach aig gach fear? Bidh an suidheachadh gu lèir a 'fàs caran mì-thlachdmhor - tha 10^100 permutations againn a-nis - agus tha sin na àireamh mhòr. Ach, is fheàrr leam an suidheachadh seo a chomharrachadh mar seo, oir a-nis chan eil sinn a-nis a’ falach air cùl fhaclan mar “kubernetes”, ach a ’toirt aghaidh air an duilgheadas mar a tha e.

Carson a tha an duilgheadas seo cho inntinneach dhomh? Gu ìre air sgàth, an dèidh dhuinn a bhith ag obair ann an saoghal NLP agus AI roimhe seo, bheachdaich sinn gu mòr air duilgheadas spreadhadh combinatorial mu 5-6 bliadhna air ais. Is ann dìreach an àite dreachan a bha faclan fa leth againn, agus an àite thoraidhean bha seantansan agus paragrafan againn. Agus ged a tha duilgheadasan NLP agus AI fhathast gun fhuasgladh, feumar aideachadh gun deach adhartas mòr a dhèanamh thar nam beagan bhliadhnaichean a dh’ fhalbh. (nam bheachd-sa, dh’ fhaodadh adhartas a dhèanamhоBhiodh e na b’ fheàrr nam biodh daoine sa ghnìomhachas a’ toirt beagan nas lugha de dh’ aire do ionnsachadh innealan agus beagan a bharrachd do dhòighean eile - ach tha seo mar-thà gun chuspair).

Tillidh sinn gu saoghal DevOps agus microservices. Tha duilgheadas mòr romhainn, a’ masquerading mar ailbhean anns an Kunstkamera - oir is e na bhios mi a’ cluinntinn gu tric “dìreach gabh kubernetes agus stiùir, agus bidh a h-uile dad gu math!” Ach chan e, cha bhi a h-uile dad gu math ma thèid a h-uile càil fhàgail mar a tha. A bharrachd air an sin, chan eil e coltach gu bheil fuasgladh anailis don duilgheadas seo iomchaidh air sgàth cho iom-fhillte ‘s a tha e. Mar a tha ann an NLP, bu chòir dhuinn dèiligeadh ris an duilgheadas seo an-toiseach le bhith a’ caolachadh farsaingeachd an sgrùdaidh - anns a’ chùis seo, le bhith a’ cur às do sheanchasan.

Is e aon de na rudan a dh’ fhaodadh a bhith cuideachail rudeigin a sgrìobh mi an-uiridh mun fheum air eadar-dhealachadh as lugha a chumail eadar dreachan a chaidh a phostadh airson teachdaichean. Tha e cuideachd cudromach cuimhneachadh gu bheil pròiseas CI/CD air a dheagh dhealbhadh a’ cuideachadh gu mòr ann a bhith a’ lughdachadh caochlaideachd. Ach, chan eil an suidheachadh làithreach le CI/CD math gu leòr airson fuasgladh fhaighinn air duilgheadas permutations às aonais innealan a bharrachd airson cunntasachd agus lorg phàirtean.

Is e na tha a dhìth oirnn siostam deuchainn aig an ìre amalachaidh, far an urrainn dhuinn am feart cunnairt airson gach pàirt a dhearbhadh, agus cuideachd pròiseas fèin-ghluasadach a bhith againn airson grunn phàirtean ùrachadh agus deuchainn gun eadar-theachd gnìomhaiche - gus faicinn dè a tha ag obair agus dè nach eil.

Dh'fhaodadh siostam leithid de dheuchainnean coimhead mar seo:

  1. Bidh luchd-leasachaidh a’ sgrìobhadh dheuchainnean (is e ìre dheatamach a tha seo - air dhòigh eile chan eil slat-tomhais measaidh againn - tha e coltach ri dàta bileagan ann an ionnsachadh innealan).
  2. Bidh gach pàirt (pròiseact) a’ faighinn a shiostam CI fhèin - tha am pròiseas seo a-nis air a dheagh leasachadh, agus chaidh a’ cheist mu bhith a’ cruthachadh siostam CI airson aon phàirt fhuasgladh gu ìre mhòr.
  3. Bidh an “siostam amalachaidh snasail” a ’tional toraidhean diofar shiostaman CI agus a’ cruinneachadh phròiseactan co-phàirteach a-steach don toradh deireannach, a ’ruith dheuchainnean agus mu dheireadh a’ tomhas an t-slighe as giorra gu bhith a ’faighinn a’ ghnìomhachd toraidh a tha thu ag iarraidh stèidhichte air na pàirtean agus na factaran cunnairt a th ’ann. Mura h-eil ùrachadh comasach, bheir an siostam seo fios do luchd-leasachaidh mu na pàirtean a th’ ann agus cò dhiubh a tha ag adhbhrachadh a’ mhearachd. A-rithist, tha an siostam deuchainn air leth cudromach an seo - leis gu bheil an siostam amalachaidh a’ cleachdadh dheuchainnean mar shlat-tomhais measaidh.
  4. Siostam CD, a gheibh an uairsin dàta bhon t-Siostam Amalachaidh Smart agus a nì an ùrachadh gu dìreach. Bidh an ìre seo a’ crìochnachadh a’ chearcall.

Mar gheàrr-chunntas, dhòmhsa is e aon de na duilgheadasan as motha a-nis dìth “Siostam Amalachaidh Smart” a cheanglas na diofar phàirtean gu toradh agus mar sin a leigeadh leat sùil a chumail air mar a tha an toradh gu h-iomlan air a chuir ri chèile. Bidh ùidh agam ann am beachdan na coimhearsnachd air seo (spoiler - tha mi ag obair air pròiseact an-dràsta Reliza, a dh’ fhaodadh a bhith na shiostam amalachaidh cho snasail).

Is e aon rud mu dheireadh a tha mi airson iomradh a thoirt air, dhòmhsa, nach eil monolith iomchaidh airson pròiseact sam bith eadhon meadhanach mòr. Dhòmhsa, tha oidhirpean air ùine buileachaidh agus càileachd leasachaidh a luathachadh le bhith a’ tilleadh gu monolith ag adhbhrachadh amharas mòr. An toiseach, tha an aon dhuilgheadas aig monolith ann a bhith a 'stiùireadh phàirtean - am measg nan leabharlannan eadar-dhealaichte anns a bheil e, ge-tà, chan eil seo cho follaiseach agus tha e ga nochdadh fhèin gu sònraichte san ùine a chuir luchd-leasachaidh seachad. Is e toradh an duilgheadas monolith an neo-chomasachd brìgheil atharrachaidhean a dhèanamh air a’ chòd - agus astar leasachaidh air leth slaodach.

Bidh microservices a’ leasachadh an t-suidheachaidh, ach an uairsin bidh an ailtireachd microservice mu choinneimh duilgheadas spreadhadh combinatorial aig ìre amalachaidh. Tha, san fharsaingeachd, tha sinn air an aon dhuilgheadas a ghluasad bhon ìre leasachaidh gu ìre amalachaidh. Ach, nam bheachd-sa, tha an dòigh-obrach microservices fhathast a’ leantainn gu toraidhean nas fheàrr, agus bidh sgiobaidhean a’ coileanadh thoraidhean nas luaithe (is dòcha gu sònraichte mar thoradh air lùghdachadh ann am meud an aonaid leasachaidh - no meud baidse). Ach, chan eil gluasad bho monolith gu microservices fhathast air am pròiseas a leasachadh gu leòr - tha an spreadhadh combinatorial de dhreachan microservice na dhuilgheadas mòr, agus tha mòran comas againn an suidheachadh a leasachadh mar a bhios sinn ga fhuasgladh.

Source: www.habr.com

Cuir beachd ann