Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

19 Sultain ann am Moscow thachair a’ chiad choinneamh cuspaireil HUG (Buidheann Luchd-cleachdaidh Highload ++), a chaidh a choisrigeadh airson microservices. Bha taisbeanadh ann “Operating Microservices: Size Matters, Even If You Have Kubernetes,” anns an do roinn sinn eòlas farsaing Flant ann a bhith ag obair phròiseactan le ailtireachd microservice. An toiseach, bidh e feumail don h-uile neach-leasachaidh a tha a 'smaoineachadh air an dòigh-obrach seo a chleachdadh anns a' phròiseact làithreach no san àm ri teachd aca.

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

A ’toirt a-steach bhidio den aithisg (50 mionaid, fada nas fiosrachail na an artaigil), a bharrachd air a 'phrìomh earrann bhuaithe ann an cruth teacsa.

NB: Tha bhidio agus taisbeanadh rim faighinn aig deireadh na dreuchd seo cuideachd.

Ro-ràdh

Mar as trice tha toiseach tòiseachaidh, prìomh chuilbheart agus rùn aig deagh sgeulachd. Tha an aithisg seo nas coltaiche ri ro-ràdh, agus duilich aig an sin. Tha e cuideachd cudromach cuimhneachadh gu bheil e a’ toirt sealladh taobh a-muigh air microservices. brath.

Tòisichidh mi leis a’ ghraf seo, agus an t-ùghdar (ann an 2015) thàinig Màrtainn Fowler:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Tha e a 'sealltainn mar a tha, ann an cùis tagradh monolithic a ruigeas luach sònraichte, cinneasachd a' tòiseachadh a 'crìonadh. Tha microservices eadar-dhealaichte leis gu bheil an toradh tùsail leotha nas ìsle, ach mar a tha iom-fhillteachd ag àrdachadh, chan eil an lughdachadh ann an èifeachdas cho follaiseach dhaibh.

Cuiridh mi ris a’ ghraf seo airson cùis Kubernetes a chleachdadh:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Carson a tha tagradh le microservices nas fheàrr? Leis gu bheil an leithid de dh ’ailtireachd a’ cur air adhart fìor riatanasan airson an ailtireachd, a tha e fhèin air a chòmhdach gu foirfe le comasan Kubernetes. Air an làimh eile, bidh cuid den ghnìomhachd seo feumail airson monolith, gu sònraichte leis nach e monolith àbhaisteach a th’ ann am monolith an-diugh (bidh mion-fhiosrachadh nas fhaide air adhart san aithisg).

Mar a chì thu, chan eil an graf mu dheireadh (nuair a tha an dà chuid tagraidhean monolithic agus microservice anns a 'bhun-structair le Kubernetes) glè eadar-dhealaichte bhon fhear thùsail. An ath rud bruidhnidh sinn mu thagraidhean air an ruith le Kubernetes.

Microservices feumail agus cronail

Agus seo am prìomh bheachd:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Na th'ann àbhaisteach ailtireachd microservice? Bu chòir dha fìor bhuannachdan a thoirt dhut, ag àrdachadh do èifeachdas obrach. Ma thèid sinn air ais chun ghraf, seo e:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Ma chuireas tu fòn oirre feumail, an uairsin air taobh eile a’ ghraf bidh cronail microservices (a 'cur bacadh air obair):

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

A’ tilleadh chun “phrìomh bheachd”: am bu chòir earbsa a bhith agam san eòlas agam idir? Bho thoiseach na bliadhna seo tha mi air coimhead 85 pròiseactan. Cha b 'e microservices a bh' annta uile (bha an leithid de dh'ailtireachd aig mu thrian gu leth dhiubh), ach tha seo fhathast na àireamh mhòr. Bidh sinne (companaidh Flant) mar luchd-reic a-muigh a’ riaghladh measgachadh farsaing de thagraidhean fhaicinn air an leasachadh an dà chuid ann an companaidhean beaga (le luchd-leasachaidh 5) agus ann an feadhainn mòra (~ leasaiche 500). Is e buannachd a bharrachd gu bheil sinn a’ faicinn na h-aplacaidean sin beò agus ag atharrachadh thar nam bliadhnaichean.

Carson a tha microservices?

Gus a 'cheist mu na buannachdan a tha aig microservices tha freagairt gu math sònraichte bho Martin Fowler a chaidh ainmeachadh mar-thà:

  1. crìochan soilleir modularity;
  2. cleachdadh neo-eisimeileach;
  3. saorsa airson teicneòlasan a thaghadh.

Tha mi air mòran bruidhinn ri ailtirean bathar-bog agus luchd-leasachaidh agus dh'fhaighnich mi carson a tha feum aca air microservices. Agus rinn mi mo liosta de na bha iad an dùil. Seo na thachair:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Ma bheir sinn cunntas air cuid de na puingean “ann an faireachdainnean,” an uairsin:

  • crìochan soilleir de mhodalan: an seo tha monolith uamhasach againn, agus a-nis bidh a h-uile càil air a rèiteachadh gu sgiobalta ann an stòran Git, anns a bheil a h-uile dad “air na sgeilpichean”, chan eil am blàth agus am bog measgaichte;
  • neo-eisimeileachd cleachdadh: bidh e comasach dhuinn seirbheisean a sgaoileadh gu neo-eisimeileach gus am bi leasachadh a’ dol nas luaithe (feartan ùra fhoillseachadh aig an aon àm);
  • neo-eisimeileachd leasachaidh: is urrainn dhuinn am meanbh-sheirbheis seo a thoirt do aon sgioba/leasaiche, agus sin do sgioba eile, leis an urrainn dhuinn leasachadh nas luaithe;
  • боbarrachd earbsachd: ma thachras truailleadh pàirt (tha aon mhicro-sheirbheis a-mach à 20 a’ tuiteam), cha stad ach aon phutan ag obair, agus cumaidh an siostam gu h-iomlan ag obair.

Ailtireachd microservice àbhaisteach (cronail).

Gus mìneachadh carson nach e fìrinn na tha sinn a’ dùileachadh, nochdaidh mi co-thional ìomhaigh de ailtireachd microservice stèidhichte air eòlas bho iomadh pròiseact eadar-dhealaichte.

Bhiodh eisimpleir mar stòr air-loidhne eas-chruthach a tha gu bhith a’ farpais ri Amazon no co-dhiù OZON. Tha an ailtireachd microservice aige a’ coimhead mar seo:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Airson measgachadh de adhbharan, tha na microservices sin sgrìobhte air diofar àrd-ùrlaran:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Leis gum feum fèin-riaghladh a bhith aig gach microservice, feumaidh mòran dhiubh an stòr-dàta agus an tasgadan aca fhèin. Tha an ailtireachd mu dheireadh mar a leanas:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Dè na buaidhean a th’ aige?

Tha seo aig Fowler cuideachd tha artaigil ann - mun “phàigheadh” airson a bhith a’ cleachdadh microservices:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Agus chì sinn an deach na dùilean againn a choileanadh.

Crìochan soilleir de mhodalan ...

ach cia mheud meanbh-sheirbheisean a dh’ fheumas sinn a chàradh?gus an t-atharrachadh a sgaoileadh? An urrainn dhuinn eadhon faighinn a-mach mar a bhios a h-uile càil ag obair às aonais lorgaire sgaoilte (às deidh a h-uile càil, tha iarrtas sam bith air a phròiseasadh le leth de na microservices)?

Tha pàtran ann"cnap mòr de shalachar“, Agus an seo thionndaidh e a-mach gur e cnap sgaoilte de shalachar a bh’ ann. Gus seo a dhearbhadh, seo dealbh tuairmseach air mar a thèid iarrtasan:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Neo-eisimeileachd cleachdadh...

Gu teicnigeach, chaidh a choileanadh: is urrainn dhuinn gach microservice a sgaoileadh air leth. Ach ann an cleachdadh feumaidh tu a bhith mothachail gu bheil e an-còmhnaidh ga sgaoileadh mòran microservices, agus feumaidh sinn suim a ghabhail òrdugh an cur a-mach. Ann an dòigh mhath, mar as trice feumaidh sinn deuchainn a dhèanamh ann an cuairt air leth a bheil sinn a’ sgaoileadh an sgaoileadh san òrdugh cheart.

Saorsa teicneòlas a thaghadh...

Tha i. Dìreach cuimhnich gu bheil saorsa gu tric a 'crìochnachadh air eucoir. Tha e glè chudromach an seo gun a bhith a’ taghadh theicneòlasan dìreach airson “cluich” leotha.

Neo-eisimeileachd leasachaidh...

Mar a nì thu lùb deuchainn airson an tagradh gu lèir (le uimhir de phàirtean)? Ach feumaidh tu fhathast a chumail ùraichte. Tha seo uile a 'leantainn gu an fhìrinn gu bheil an fhìor àireamh de chuairtean deuchainn, a dh’fhaodas a bhith againn ann am prionnsapal, tionndadh a-mach gu bhith glè bheag.

Dè mu dheidhinn a bhith a’ cleachdadh seo gu h-ionadail?.. Tha e a’ tionndadh a-mach gum bi an leasaiche gu tric a’ dèanamh a chuid obrach gu neo-eisimeileach, ach “air thuaiream”, leis gu bheil aige ri feitheamh gus am bi an cuairteachadh saor airson deuchainn.

Sgèileadh air leth ...

Tha, ach tha e cuingealaichte anns an raon den DBMS a thathar a’ cleachdadh. Anns an eisimpleir ailtireachd a chaidh a thoirt seachad, cha bhi duilgheadasan aig Cassandra, ach bidh MySQL agus PostgreSQL.

Боbarrachd earbsachd ...

Chan e a-mhàin gu bheil fàilligeadh aon mhicro-sheirbheis ann an da-rìribh gu tric a’ briseadh ceart obrachadh an t-siostam gu lèir, ach tha duilgheadas ùr ann cuideachd: tha e glè dhoirbh a bhith a’ dèanamh a h-uile microservice locht-fulangach. Leis gu bheil microservices a 'cleachdadh theicneòlasan eadar-dhealaichte (memcache, Redis, msaa), airson gach fear feumaidh tu smaoineachadh air a h-uile càil agus a chur an gnìomh, a tha, gu dearbh, comasach, ach a dh' fheumas goireasan mòra.

Luchdaich a-nuas tomhais.. .

Tha seo fìor mhath.

An “aotromachd” de mhicro-sheirbheisean ...

Chan e a-mhàin gu bheil mòr againn lìonra os cionn (tha iarrtasan airson DNS ag iomadachadh, msaa), ach cuideachd air sgàth an iomadh fo-cheist a thòisich sinn dàta ath-aithris (stòr caches), a lean gu tòrr stòraidh.

Agus seo an toradh bho bhith a’ coileanadh ar dùilean:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Ach chan e sin uile!

Air sgàth:

  • Is dòcha gum feum sinn bus teachdaireachd.
  • Ciamar a nì thu cùl-taic cunbhalach aig an àm cheart? An aon fhear fìor Is e an roghainn trafaic a chuir dheth airson seo. Ach ciamar a nì thu seo ann an riochdachadh?
  • Ma tha sinn a’ bruidhinn mu bhith a’ toirt taic do ghrunn roinnean, is e obair gu math dian a th’ ann a bhith ag eagrachadh seasmhachd anns gach fear dhiubh.
  • Tha an duilgheadas ann a bhith a’ dèanamh atharrachaidhean meadhanaichte ag èirigh. Mar eisimpleir, ma dh'fheumas sinn an tionndadh PHP ùrachadh, feumaidh sinn gealltainn do gach stòr (agus tha dusanan dhiubh ann).
  • Tha am fàs ann an iom-fhillteachd obrachaidh, neo-làimhe, eas-chruthach.

Dè a dhèanamh le seo uile?

Tòisich le tagradh monolithic. Eòlas Fowler ag ràdh gun do thòisich cha mhòr a h-uile tagradh microservice soirbheachail mar monolith a dh'fhàs ro mhòr agus an uairsin briste. Aig an aon àm, cha mhòr nach eil a h-uile siostam a chaidh a thogail mar microservices bhon fhìor thoiseach luath no mall air eòlas fhaighinn air fìor dhuilgheadasan.

Is e beachd luachmhor eile, airson pròiseact le ailtireachd microservice a bhith soirbheachail, feumaidh fios a bhith agad gu math agus cuspair, agus mar a nì thu meanbh-sheirbheisean. Agus is e an dòigh as fheàrr air raon cuspair ionnsachadh monolith a dhèanamh.

Ach dè ma tha sinn mar-thà san t-suidheachadh seo?

Is e a’ chiad cheum gu fuasgladh fhaighinn air duilgheadas sam bith aontachadh leis agus tuigsinn gur e duilgheadas a th’ ann, nach eil sinn airson fulang tuilleadh.

Ma tha, ann an cùis monolith fàsmhor (nuair a tha sinn air ruith a-mach às a ’chothrom goireasan a bharrachd a cheannach dha), bidh sinn ga ghearradh, an uairsin anns a’ chùis seo thig an sgeulachd eile a-mach: nuair nach bi cus microservices a ’cuideachadh tuilleadh, ach a’ cur bacadh air - gearradh dheth agus meudaich e!

Mar eisimpleir, airson an ìomhaigh choitcheann a chaidh a dheasbad gu h-àrd ...

Faigh cuidhteas na microservices as ceasnachail:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Cuir còmhla a h-uile meanbh-sheirbheisean le uallach airson gineadh aghaidh:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

... ann an aon mhion-sheirbheis, sgrìobhte ann an aon chànan / frèam (ùr-nodha agus àbhaisteach, mar a tha thu fhèin a’ smaoineachadh):

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Bidh aon ORM (aon DBMS) aige agus an toiseach tagradh no dhà:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

ach san fharsaingeachd faodaidh tu tòrr a bharrachd a ghluasad an sin, a’ faighinn an toradh a leanas:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

A bharrachd air an sin, ann an Kubernetes bidh sinn a’ ruith seo gu lèir ann an suidheachaidhean eadar-dhealaichte, a tha a’ ciallachadh gun urrainn dhuinn fhathast an luchd a thomhas agus an sgèile air leth.

Geàrr-chunntas a thoirt air

Seall air an dealbh nas motha. Glè thric, bidh na duilgheadasan sin uile le microservices ag èirigh air sgàth gu robh cuideigin a ’dèanamh an obair, ach ag iarraidh“ cluich le microservices”.

Anns an fhacal "microservices" tha am pàirt "micro" gun fheum.. Tha iad "micro" a-mhàin seach gu bheil iad nas lugha na monolith mòr. Ach na smaoinich orra mar rud beag.

Agus airson smaoineachadh deireannach, rachamaid air ais chun chlàr thùsail:

Microservices: Tha meud cudromach, eadhon ged a tha Kubernetes agad

Nòta sgrìobhte air (deas gu h-àrd) a’ goil sìos chun fhìrinn sin tha sgilean na sgioba a nì do phròiseact an-còmhnaidh bun-sgoile - bidh prìomh phàirt aca nad roghainn eadar microservices agus monolith. Mura h-eil sgilean gu leòr aig an sgioba, ach gu bheil e a 'tòiseachadh a' dèanamh microservices, bidh an sgeulachd gu cinnteach marbhtach.

Bhidiothan agus slides

Bhidio bhon òraid (~ mionaidean 50; gu mì-fhortanach, chan eil e a 'toirt seachad mòran fhaireachdainnean an luchd-tadhail, a bha gu ìre mhòr a' dearbhadh faireachdainn na h-aithisg, ach sin mar a tha e):

Taisbeanadh na h-aithisg:

PS

Aithisgean eile air ar blog:

Is dòcha gum biodh ùidh agad anns na foillseachaidhean a leanas cuideachd:

Source: www.habr.com

Cuir beachd ann