Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

NgoSeptemba 19 eMoscow yathatha indawo intlanganiso yokuqala enesihloko HUG (Highload++ User Group), eyanikezelwa kwiimicroservices. Kwakukho intetho ethi "IiMicroservices eziSebenzayo: Ubungakanani beMiba, Nokuba unayo i-Kubernetes," apho sabelana ngamava abanzi kaFlant kwiiprojekthi zokusebenza kunye ne-microservice architecture. Okokuqala, kuya kuba luncedo kubo bonke abaphuhlisi abacinga ngokusebenzisa le ndlela kwiprojekthi yabo yangoku okanye yexesha elizayo.

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ukwazisa ividiyo yengxelo (imizuzu engama-50, ulwazi oluninzi ngakumbi kunenqaku), kunye nesicatshulwa esiphambili esivela kuyo kwifom yombhalo.

QAPHELA: Ividiyo kunye nenkcazo-ntetho nazo ziyafumaneka ekupheleni kwesi sithuba.

Intshayelelo

Ngokuqhelekileyo ibali elimnandi linesiqalo, iploti ephambili kunye nesisombululo. Le ngxelo ifana nentshayelelo, kwaye iyintlekele. Kwakhona kubalulekile ukuqaphela ukuba ibonelela ngembono yangaphandle yee-microservices. ukuxhaphaza.

Ndiza kuqala ngale grafu, umbhali wayo (ngo-2015) yaba UMartin Fowler:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ibonisa indlela, kwimeko yesicelo se-monolithic esifikelela kwixabiso elithile, imveliso iqala ukuhla. Iinkonzo zeMicroservices zihluke ekubeni imveliso yokuqala kunye nabo iphantsi, kodwa njengoko ubunzima bukhula, ukuthotywa kokusebenza kakuhle akubonakali kubo.

Ndiza kongeza kule grafu kwimeko yokusebenzisa i-Kubernetes:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Kutheni isicelo esinemicroservices singcono? Ngenxa yokuba i-architecture enjalo ibeka phambili iimfuno ezinzulu zolwakhiwo, ezithi zigutyungelwe ngokugqibeleleyo ngamakhono e-Kubernetes. Ngakolunye uhlangothi, enye yale misebenzi iya kuba luncedo kwi-monolith, ngakumbi kuba i-monolith eqhelekileyo namhlanje ayikho ncam i-monolith (iinkcukacha ziya kuba kamva kwingxelo).

Njengoko ubona, igrafu yokugqibela (xa zombini i-monolithic kunye ne-microservice izicelo zikwiziseko kunye ne-Kubernetes) ayifani kakhulu neyokuqala. Okulandelayo siza kuthetha malunga nezicelo eziqhutywa kusetyenziswa iKubernetes.

Iinkonzo ezincinci nezinobungozi

Kwaye nantsi imbono ephambili:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Yintoni i eqhelekileyo microservice uyilo? Kufuneka izise izibonelelo zokwenyani, yandise ukusebenza kakuhle kwakho. Ukuba sibuyela kwigrafu, nantsi:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ukuba uyamfowunela luncedo, ngoko kwelinye icala legrafu kuya kubakho eyingozi microservices (ziphazamisana nomsebenzi):

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ukubuyela "kumbono ophambili": ngaba ndimele ndiwathembe amava am kwaphela? Oko uqalile lo nyaka ndiye ndajonga Iiprojekthi ezili-85. Ayizizo zonke ezaziyi-microservices (malunga nesithathu ukuya kwisiqingatha sazo zinezakhiwo ezinjalo), kodwa oku kuseyinani elikhulu. Thina (inkampani yeFlant) njengabangaphandle balawula ukubona uluhlu olubanzi lwezicelo eziphuhliswe zombini kwiinkampani ezincinci (kunye nabaphuhlisi be-5) kunye nabakhulu (~ abaphuhlisi be-500). Inzuzo eyongeziweyo kukuba sibona ezi zicelo ziphila kwaye zivela ngokuhamba kweminyaka.

Kutheni microservices?

Kumbuzo malunga neenzuzo ze-microservices zikhona impendulo ethe ngqo ukusuka kuMartin Fowler osele ekhankanyiwe:

  1. imida ecacileyo yokumodareyitha;
  2. ukusasazwa ngokuzimeleyo;
  3. inkululeko yokukhetha ubugcisa.

Ndithethe kakhulu nabakhi besoftware kunye nabaphuhlisi kwaye ndabuza ukuba kutheni befuna iimicroservices. Kwaye ndenze uluhlu lwam lwezinto abazilindeleyo. Nantsi into eyenzekayo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ukuba sichaza ezinye zeengongoma "kwiemvakalelo," ngoko:

  • imida ecacileyo yeemodyuli: apha sine-monolith eyoyikisayo, kwaye ngoku yonke into iya kulungelelaniswa ngokufanelekileyo kwi-Git repositories, apho yonke into "kwiishelufu", ukufudumala kunye nokuthambileyo akuxutywanga;
  • ukuzimela kokuthunyelwa: siya kukwazi ukukhupha iinkonzo ngokuzimeleyo ukuze uphuhliso luhambe ngokukhawuleza (papasha iimpawu ezintsha ngokuhambelanayo);
  • ukuzimela kophuhliso: sinokunika le microservice kwiqela elinye / umphuhlisi, kwaye omnye komnye, enkosi apho sinokuphuhlisa ngokukhawuleza;
  • Π±ΠΎukuthembeka okukhulu: ukuba ukuthotywa kwenxalenye kwenzeka (i-microservice enye kwi-20 iwa), ke iqhosha elinye kuphela liya kuyeka ukusebenza, kwaye inkqubo yonke iya kuqhubeka isebenza.

Uyilo oluqhelekileyo (oluyingozi) lwe-microservice

Ukucacisa ukuba kutheni inyaniso ingeyiyo le nto siyilindeleyo, ndiya kunikela ngokudibeneyo umfanekiso we-microservice architecture esekelwe kumava avela kwiiprojekthi ezininzi ezahlukeneyo.

Umzekelo uya kuba yivenkile ye-intanethi engabonakaliyo eya kukhuphisana ne-Amazon okanye ubuncinane i-OZON. Ubume bayo be-microservice bujongeka ngolu hlobo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ngendibaniselwano yezizathu, ezi microservices zibhalwe kumaqonga ahlukeneyo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Kuba i-microservice nganye kufuneka ibe nokuzimela, uninzi lwazo ludinga i-database yabo kunye ne-cache. I-architecture yokugqibela ngolu hlobo lulandelayo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Iyintoni imiphumo yako?

UFowler unale nto naye kukho inqaku β€” malunga β€œnentlawulo” yokusebenzisa iinkonzo ezincinci:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Kwaye siza kubona ukuba oko besikulindele kwafikelelwa.

Cacisa imida yeemodyuli...

kodwa zingaphi iinkonzo ezincinci ekufuneka sizilungise?ukwenza utshintsho? Ngaba sinokuqonda ukuba yonke into isebenza njani ngaphandle komkhondo osasaziweyo (emva koko, nasiphi na isicelo sicutshungulwa ngesiqingatha se-microservices)?

Kukho umzekelo "iqhuma elikhulu lokungcola", kwaye apha kwavela iqhuma lokungcola. Ukuqinisekisa oku, nanku umfanekiso oqikelelweyo wendlela izicelo ezihamba ngayo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ukusasazwa kokuzimela...

Ngokobuchwephesha, iphunyeziwe: sinokukhupha i-microservice nganye ngokwahlukileyo. Kodwa ekusebenzeni kufuneka uthathele ingqalelo ukuba ihlala iqengqeleka iimicroservices ezininzi, kwaye kufuneka sithathele ingqalelo ulandelelwano lokukhutshwa kwazo. Ngendlela elungileyo, ngokubanzi kufuneka sivavanye kwisekethe eyahlukileyo ukuba sikhupha ukhupho ngendlela eyiyo.

Inkululeko yokukhetha iteknoloji...

Ngu. Khumbula ukuba inkululeko ngokufuthi iphelela ekuchas’ umthetho. Kubaluleke kakhulu apha ukuba ungakhethi iteknoloji ukuze "udlale" nabo.

Ukuzimela kophuhliso...

Uyenza njani iluphu yovavanyo yesicelo sonke (kunye namacandelo amaninzi)? Kodwa kusafuneka uyigcine isexesheni. Konke oku kukhokelela kwinto yokuba elona nani leesekethe zovavanyo, esinokuqulatha ngokomgaqo, ijika ibencinci.

Kuthekani ngokuhambisa konke oku kwindawo? .. Kuvela ukuba kaninzi umthuthukisi wenza umsebenzi wakhe ngokuzimeleyo, kodwa "ngokungaqhelekanga", kuba unyanzelekile ukuba alinde de kube isiphaluka sikhululekile ukuvavanya.

Ukwahlula isikali...

Ewe, kodwa ilinganiselwe kwindawo ye-DBMS esetyenziswayo. Kumzekelo onikiweyo wokwakha, iCassandra ayiyi kuba neengxaki, kodwa iMySQL kunye nePostgreSQL ziya.

Π‘ΠΎukuthembeka okukhulu...

Ayisiyiyo kuphela ukusilela kwenkonzo encinci enye ngokwenyani ihlala iphula ukusebenza okuchanekileyo kwenkqubo yonke, kodwa kukwakho ingxaki entsha: ukwenza yonke i-microservice ikwazi ukunyamezela iimpazamo kunzima kakhulu. Ngenxa yokuba i-microservices isebenzisa ubuchwepheshe obuhlukeneyo (i-memcache, i-Redis, njl.), nganye nganye kufuneka ucinge ngayo yonke into kwaye uyiphumeze, leyo, ngokuqinisekileyo, inokwenzeka, kodwa ifuna izibonelelo ezinkulu.

Umthwalo womlinganiselo...

Oku kuhle ngokwenene.

"Ukukhanya" kwee-microservices...

Asinayo nje enkulu inethiwekhi ngaphezulu (izicelo ze-DNS ziyaphindaphindeka, njl.njl.), kodwa nangenxa yeempendulo ezininzi esiziqalileyo phinda idatha (ii-cache zevenkile), ezikhokelele kwisixa esibalulekileyo sogcino.

Kwaye nantsi isiphumo sokuhlangabezana nokulindela kwethu:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Kodwa akuphelelanga apho!

Ngenxa yokuba:

  • Ngokunokwenzeka siya kufuna ibhasi yomyalezo.
  • Indlela yokwenza i-backup engaguqukiyo ngexesha elifanelekileyo ngexesha? Omnye kuphela ngokwenene ukhetho kukucima itrafikhi kule nto. Kodwa ukwenza njani oku kwimveliso?
  • Ukuba sithetha ngokuxhasa imimandla emininzi, ngoko ukulungelelanisa ukuzinza kuyo nganye kuzo ngumsebenzi onzima kakhulu.
  • Ingxaki yokwenza utshintsho oluphakathi luvela. Umzekelo, ukuba sifuna ukuhlaziya inguqulo ye-PHP, kuya kufuneka sizinikele kwindawo yokugcina (kwaye zininzi zazo).
  • Ukukhula kobunzima bokusebenza, ngaphandle kwesandla, kuyacaca.

Kwenzeke ntoni ngayo yonke lento?

Qala ngesicelo se-monolithic. Amava kaFowler utsho ukuba phantse zonke izicelo ze-microservice eziyimpumelelo zaqala njenge-monolith eyaba nkulu kakhulu yaza yophuka. Kwangaxeshanye, phantse zonke iinkqubo ezakhiwe njengee-microservices kwasekuqaleni kwamsinya okanye kamva zafumana iingxaki ezinzulu.

Enye ingcinga ebalulekileyo yeyokuba ukuze iprojekthi enoyilo lwemicroservice ibe yimpumelelo, kufuneka wazi kakuhle kunye nommandla wesifundo, kunye nendlela yokwenza ii-microservices. Kwaye eyona ndlela ilungileyo yokufunda indawo yesifundo kukwenza i-monolith.

Kodwa kuthekani ukuba sele sikule meko?

Inyathelo lokuqala lokusombulula nayiphi na ingxaki kukuvumelana nayo kwaye siqonde ukuba yingxaki, ukuba asisafuni ukubandezeleka.

Ukuba, kwimeko ye-monolith ekhulileyo (xa siphelelwe lithuba lokuthenga izixhobo ezongezelelweyo kuyo), siyayinqumla, ngoko ke ibali elichasayo livela: xa ii-microservices ezigqithisileyo zingasayi kunceda, kodwa zithintela - nqumla ukugqithisa kwaye wandise!

Umzekelo, kumfanekiso odibeneyo oxoxwe ngasentla...

Lahla ezona microservices zithandabuzekayo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Dibanisa zonke ii-microservices ezinoxanduva lokuvelisa i-frontend:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

... kwi-microservice enye, ebhalwe kwenye (yangoku kunye neqhelekileyo, njengoko ucinga) ulwimi / isakhelo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Iya kuba ne-ORM enye (i-DBMS enye) kwaye kuqala izicelo ezimbalwa:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

... kodwa ngokubanzi ungadlulisela okuninzi apho, ufumana iziphumo ezilandelayo:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Ngaphezu koko, kwi-Kubernetes siqhuba konke oku kwiimeko ezahlukeneyo, oku kuthetha ukuba sisenokulinganisa umthwalo kwaye siwulinganise ngokwahlukileyo.

Ukushwankathela

Jonga umfanekiso omkhulu. Rhoqo, zonke ezi ngxaki nge-microservices zivela ngenxa yokuba umntu wathatha umsebenzi wabo, kodwa wayefuna "ukudlala ngee-microservices".

Kwigama elithi "microservices" inxalenye ethi "micro" ayisebenzi.. Zi "micro" kuphela ngenxa yokuba zincinci kune-monolith enkulu. Kodwa musa ukucinga ngabo njengento encinane.

Kwaye ngengcinga yokugqibela, masibuyele kwitshathi yokuqala:

Iinkonzo ezincinci: Ubungakanani bubalulekile, nokuba unayo iKubernetes

Inqaku elibhaliweyo kuyo (phezulu ekunene) ixhomekeke kwinto yokuba izakhono zeqela elenza iprojekthi yakho isoloko iphambili - baya kudlala indima ephambili ekukhetheni kwakho phakathi kwe-microservices kunye ne-monolith. Ukuba iqela alinayo izakhono ezaneleyo, kodwa iqala ukwenza i-microservices, ibali liya kuba libulalayo.

Iividiyo kunye nezilayidi

Ividiyo evela kwintetho (~ imizuzu engama-50; ngelishwa, ayidlulisi iimvakalelo ezininzi zeendwendwe, eziye zamisela ubukhulu becala isimo sengxelo, kodwa kunjalo):

Ukunikezelwa kwengxelo:

PS

Ezinye iingxelo kwibhlog yethu:

Usenokuba nomdla kolu papasho lulandelayo:

umthombo: www.habr.com

Yongeza izimvo