Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

19 ta 'Settembru f'Moska seħħet l-ewwel laqgħa tematika HUG (Highload++ User Group), li kienet iddedikata għall-mikroservizzi. Kien hemm preżentazzjoni “Operating Microservices: Size Matters, Even If You Have Kubernetes,” li fiha qsamna l-esperjenza estensiva ta’ Flant fl-operat ta’ proġetti b’arkitettura ta’ mikroservizzi. L-ewwelnett, se jkun utli għall-iżviluppaturi kollha li qed jaħsbu li jużaw dan l-approċċ fil-proġett attwali jew futur tagħhom.

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Introduzzjoni vidjo tar-rapport (50 minuta, ħafna aktar informattiv mill-artiklu), kif ukoll l-estratt prinċipali minnu f'forma ta 'test.

NB: Vidjow u preżentazzjoni huma wkoll disponibbli fl-aħħar ta' din il-post.

Introduzzjoni

Normalment storja tajba jkollha bidu, plot prinċipali u riżoluzzjoni. Dan ir-rapport huwa aktar bħal preludju, u wieħed traġiku minn hekk. Huwa importanti wkoll li wieħed jinnota li jipprovdi ħarsa minn barra tal-mikroservizzi. sfruttament.

Nibda b'din il-graff, li l-awtur tagħha (fl-2015) kien Martin Fowler:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Juri kif, fil-każ ta’ applikazzjoni monolitika li tilħaq ċertu valur, il-produttività tibda tonqos. Il-mikroservizzi huma differenti peress li l-produttività inizjali magħhom hija aktar baxxa, iżda hekk kif tiżdied il-kumplessità, id-degradazzjoni fl-effiċjenza mhix daqshekk notevoli għalihom.

Se nżid ma' dan il-graff għall-każ tal-użu ta' Kubernetes:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Għaliex applikazzjoni b'mikroservizzi hija aħjar? Minħabba li tali arkitettura tressaq rekwiżiti serji għall-arkitettura, li min-naħa tagħhom huma perfettament koperti mill-kapaċitajiet ta 'Kubernetes. Min-naħa l-oħra, xi wħud minn din il-funzjonalità se jkunu utli għal monolith, speċjalment minħabba li l-monolith tipiku llum mhuwiex eżattament monolith (id-dettalji se jkunu aktar tard fir-rapport).

Kif tistgħu taraw, il-graff finali (meta kemm l-applikazzjonijiet monolitiċi kif ukoll dawk ta 'mikroservizz huma fl-infrastruttura ma' Kubernetes) mhix differenti ħafna minn dik oriġinali. Sussegwentement nitkellmu dwar applikazzjonijiet operati bl-użu ta' Kubernetes.

Mikroservizzi utli u ta' ħsara

U hawn hija l-idea ewlenija:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

X'inhu normali arkitettura mikroservizz? Għandu jġiblek benefiċċji reali, u żżid l-effiċjenza tax-xogħol tiegħek. Jekk nerġgħu lura għall-graff, hawn hu:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Jekk iċempelha utli, imbagħad fuq in-naħa l-oħra tal-graff se jkun hemm li jagħmel ħsara mikroservizzi (jinterferixxi max-xogħol):

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Nirritornaw għall-"idea prinċipali": għandi nafda l-esperjenza tiegħi? Mill-bidu ta’ din is-sena ħarist 85 proġett. Mhux kollha kienu mikroservizzi (madwar terz sa nofshom kellhom arkitettura bħal din), iżda dan għadu numru kbir. Aħna (kumpanija Flant) bħala outsourcers jirnexxielhom naraw varjetà wiesgħa ta 'applikazzjonijiet żviluppati kemm f'kumpaniji żgħar (b'5 żviluppaturi) kif ukoll f'dawk kbar (~ 500 żviluppatur). Benefiċċju miżjud huwa li naraw dawn l-applikazzjonijiet ħajjin u jevolvu matul is-snin.

Għaliex mikroservizzi?

Għall-mistoqsija dwar il-benefiċċji tal-mikroservizzi hemm tweġiba speċifika ħafna minn Martin Fowler diġà msemmi:

  1. konfini ċari tal-modularità;
  2. skjerament indipendenti;
  3. libertà li tagħżel it-teknoloġiji.

Tkellimt ħafna mal-periti u l-iżviluppaturi tas-softwer u staqsejt għaliex għandhom bżonn mikroservizzi. U għamilt il-lista tiegħi tal-aspettattivi tagħhom. Hawn x'ġara:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Jekk niddeskrivu xi wħud mill-punti "f'sensazzjonijiet," allura:

  • konfini ċari ta 'moduli: hawn għandna monolitu terribbli, u issa kollox se jkun irranġat pulit f'repożitorji Git, li fihom kollox huwa "fuq l-ixkafef", is-sħana u l-artab mhumiex imħallta;
  • indipendenza tal-iskjerament: inkunu nistgħu nimplementaw is-servizzi b'mod indipendenti sabiex l-iżvilupp imur aktar malajr (nippubblikaw karatteristiċi ġodda b'mod parallel);
  • indipendenza tal-iżvilupp: nistgħu nagħtu dan il-mikroservizz lil tim/iżviluppatur wieħed, u dak lil ieħor, li bis-saħħa tiegħu nistgħu niżviluppaw aktar malajr;
  • боaffidabilità akbar: jekk isseħħ degradazzjoni parzjali (mikroservizz wieħed minn 20 waqgħa), allura buttuna waħda biss tieqaf taħdem, u s-sistema kollha kemm hi se tkompli taħdem.

Arkitettura tipika (ta' ħsara) ta' mikroservizzi

Biex nispjega għaliex ir-realtà mhix dak li nistennew, se nippreżenta kollettiva immaġni ta’ arkitettura ta’ mikroservizz ibbażata fuq esperjenza minn bosta proġetti differenti.

Eżempju jkun ħanut online astratt li se jikkompeti ma 'Amazon jew għall-inqas OZON. L-arkitettura tal-mikroservizz tagħha tidher bħal din:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Għal taħlita ta' raġunijiet, dawn il-mikroservizzi huma miktuba fuq pjattaformi differenti:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Peress li kull mikroservizz irid ikollu awtonomija, ħafna minnhom jeħtieġu d-database u l-cache tagħhom stess. L-arkitettura finali hija kif ġej:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

X'inhuma l-konsegwenzi tiegħu?

Fowler għandu dan ukoll hemm artiklu — dwar il-“pagament” għall-użu ta’ mikroservizzi:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

U naraw jekk l-aspettattivi tagħna ġewx sodisfatti.

Konfini ċari tal-moduli...

Imma kemm-il mikroservizzi fil-fatt għandna bżonn nirranġaw?biex tmexxi l-bidla? Nistgħu wkoll insemmu kif kollox jaħdem mingħajr traċċatur distribwit (wara kollox, kwalunkwe talba tiġi pproċessata minn nofs il-mikroservizzi)?

Hemm mudell "biċċa kbira tal-ħmieġ“, u hawn irriżulta li kien ħmieġ imqassam. Biex tikkonferma dan, hawn illustrazzjoni approssimattiva ta’ kif imorru t-talbiet:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Indipendenza tal-iskjerament...

Teknikament, inkiseb: nistgħu nħaddmu kull mikroservizz separatament. Iżda fil-prattika trid tqis li dejjem toħroġ ħafna mikroservizzi, u rridu nqisu l-ordni tat-tnedija tagħhom. B'mod tajjeb, ġeneralment għandna bżonn nittestjaw f'ċirkwit separat jekk aħniex qed inxerrdu r-rilaxx fl-ordni korretta.

Libertà li tagħżel it-teknoloġija...

Hija. Ftakar biss li l-libertà ħafna drabi tillimita mal-illegalità. Huwa importanti ħafna hawnhekk li ma tagħżel teknoloġiji biss biex "tilgħab" magħhom.

Indipendenza tal-iżvilupp...

Kif tagħmel test loop għall-applikazzjoni kollha (b'tant komponenti)? Imma xorta trid iżżommha aġġornata. Dan kollu jwassal għall-fatt li numru attwali ta' ċirkwiti tat-test, li fil-prinċipju nistgħu jkun fihom, jirriżulta li jkun minimu.

Kif dwar l-iskjerament ta 'dan kollu lokalment? .. Jirriżulta li ħafna drabi l-iżviluppatur jagħmel ix-xogħol tiegħu b'mod indipendenti, iżda "b'mod każwali", minħabba li huwa mġiegħel jistenna sakemm iċ-ċirkwit ikun ħieles għall-ittestjar.

Skalar separat...

Iva, iżda hija limitata fiż-żona tad-DBMS użata. Fl-eżempju ta 'arkitettura mogħtija, Cassandra mhux se jkollha problemi, iżda MySQL u PostgreSQL se.

Боaffidabilità akbar...

Mhux biss il-falliment ta 'mikroservizz wieħed fir-realtà spiss ikisser il-funzjonament korrett tas-sistema kollha, iżda hemm ukoll problema ġdida: li kull mikroservizz tolleranti l-ħsarat huwa diffiċli ħafna. Minħabba li l-mikroservizzi jużaw teknoloġiji differenti (memcache, Redis, eċċ.), għal kull wieħed trid taħseb f'kollox u timplimentah, li, ovvjament, huwa possibbli, iżda jeħtieġ riżorsi enormi.

Il-kejl tat-tagħbija...

Dan huwa tassew tajjeb.

Il-"ħeffa" tal-mikroservizzi...

Aħna mhux biss għandna enormi overhead tan-netwerk (it-talbiet għad-DNS qed jimmultiplikaw, eċċ.), iżda wkoll minħabba l-ħafna subqueries li bdejna replika data (maħżen caches), li wassal għal ammont sinifikanti ta 'ħażna.

U hawn hu r-riżultat li nilħqu l-aspettattivi tagħna:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Imma dan mhux kollox!

Minħabba li:

  • X'aktarx ser ikollna bżonn xarabank tal-messaġġi.
  • Kif tagħmel backup konsistenti fil-mument it-tajjeb fil-ħin? L-uniku wieħed reali l-għażla hija li titfi t-traffiku għal dan. Imma kif tagħmel dan fil-produzzjoni?
  • Jekk qed nitkellmu dwar l-appoġġ għal diversi reġjuni, allura l-organizzazzjoni tas-sostenibbiltà f'kull wieħed minnhom hija biċċa xogħol intensiva ħafna.
  • Tqum il-problema li jsiru bidliet ċentralizzati. Pereżempju, jekk ikollna bżonn naġġornaw il-verżjoni PHP, ikollna nimpenjaw ruħhom għal kull repożitorju (u hemm għexieren minnhom).
  • It-tkabbir fil-kumplessità operattiva huwa, offhand, esponenzjali.

X'għandek tagħmel b'dan kollu?

Ibda b'applikazzjoni monolitika. L-esperjenza ta' Fowler jgħid li kważi l-applikazzjonijiet kollha ta 'mikroservizz ta' suċċess bdew bħala monolith li sar kbir wisq u mbagħad inkiser. Fl-istess ħin, kważi s-sistemi kollha mibnija bħala mikroservizzi mill-bidu nett illum jew għada esperjenzaw problemi serji.

Ħsieb siewi ieħor huwa li biex proġett b'arkitettura ta' mikroservizz ikun ta' suċċess, trid tkun taf tajjeb ħafna u l-qasam tas-suġġett, u kif isiru mikroservizzi. U l-aħjar mod biex titgħallem qasam tas-suġġett huwa li tagħmel monolith.

Imma x'jiġri jekk aħna diġà qegħdin f'din is-sitwazzjoni?

L-ewwel pass biex insolvu kwalunkwe problema huwa li naqblu magħha u nifhmu li hija problema, li ma rridux inbatu aktar.

Jekk, fil-każ ta 'monolith overgrown (meta spiċċajna l-opportunità li nixtru riżorsi addizzjonali għaliha), naqtgħuh, allura f'dan il-każ tirriżulta l-istorja opposta: meta mikroservizzi eċċessivi ma jibqgħux jgħinu, iżda jfixklu - aqta' żejjed u kabbar!

Pereżempju, għall-immaġni kollettiva diskussa hawn fuq...

Neħles mill-aktar mikroservizzi dubjużi:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Għaqqad il-mikroservizzi kollha responsabbli għall-ġenerazzjoni tal-frontend:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

... f'mikroservizz wieħed, miktub f'lingwa/qafas wieħed (modern u normali, kif taħseb int stess):

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Se jkollu ORM wieħed (DBMS wieħed) u l-ewwel ftit applikazzjonijiet:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

... iżda b'mod ġenerali tista 'tittrasferixxi ħafna aktar hemmhekk, billi tikseb ir-riżultat li ġej:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Barra minn hekk, f'Kubernetes inħaddmu dan kollu f'każijiet separati, li jfisser li xorta nistgħu nkejlu t-tagħbija u nskalawhom separatament.

Fil-qosor

Ħares lejn l-istampa akbar. Ħafna drabi, dawn il-problemi kollha bil-mikroservizzi jinqalgħu minħabba li xi ħadd ħa l-kompitu tiegħu, iżda ried "jilgħab bil-mikroservizzi".

Fil-kelma "mikroservizzi" il-parti "mikro" hija żejda.. Huma "mikro" biss minħabba li huma iżgħar minn monolitu enormi. Imma taħsibx minnhom bħala xi ħaġa żgħira.

U għal ħsieb finali, ejja nerġgħu lura għat-tabella oriġinali:

Mikroservizzi: Id-daqs huwa importanti, anke jekk għandek Kubernetes

Nota miktuba fuqha (fuq il-lemin) jeħodna għall-fatt li il-ħiliet tat-tim li jagħmel il-proġett tiegħek huma dejjem primarji — se jkollhom rwol ewlieni fl-għażla tiegħek bejn mikroservizzi u monolith. Jekk it-tim ma jkollux biżżejjed ħiliet, iżda jibda jagħmel mikroservizzi, l-istorja żgur tkun fatali.

Vidjows u slides

Vidjow mid-diskors (~50 minuta; sfortunatament, ma jwassalx l-emozzjonijiet numerużi tal-viżitaturi, li fil-biċċa l-kbira ddeterminaw il-burdata tar-rapport, iżda hekk inhi):

Preżentazzjoni tar-rapport:

PS

Rapporti oħra fuq il-blog tagħna:

Tista' tkun interessat ukoll fil-pubblikazzjonijiet li ġejjin:

Sors: www.habr.com

Żid kumment