NgoSeptemba 19 eMoscow
Ukwazisa
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)
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:
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:
Yintoni i eqhelekileyo microservice uyilo? Kufuneka izise izibonelelo zokwenyani, yandise ukusebenza kakuhle kwakho. Ukuba sibuyela kwigrafu, nantsi:
Ukuba uyamfowunela luncedo, ngoko kwelinye icala legrafu kuya kubakho eyingozi microservices (ziphazamisana nomsebenzi):
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
- imida ecacileyo yokumodareyitha;
- ukusasazwa ngokuzimeleyo;
- inkululeko yokukhetha ubugcisa.
Ndithethe kakhulu nabakhi besoftware kunye nabaphuhlisi kwaye ndabuza ukuba kutheni befuna iimicroservices. Kwaye ndenze uluhlu lwam lwezinto abazilindeleyo. Nantsi into eyenzekayo:
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:
Ngendibaniselwano yezizathu, ezi microservices zibhalwe kumaqonga ahlukeneyo:
Kuba i-microservice nganye kufuneka ibe nokuzimela, uninzi lwazo ludinga i-database yabo kunye ne-cache. I-architecture yokugqibela ngolu hlobo lulandelayo:
Iyintoni imiphumo yako?
UFowler unale nto naye
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 "
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:
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
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:
Dibanisa zonke ii-microservices ezinoxanduva lokuvelisa i-frontend:
... kwi-microservice enye, ebhalwe kwenye (yangoku kunye neqhelekileyo, njengoko ucinga) ulwimi / isakhelo:
Iya kuba ne-ORM enye (i-DBMS enye) kwaye kuqala izicelo ezimbalwa:
... kodwa ngokubanzi ungadlulisela okuninzi apho, ufumana iziphumo ezilandelayo:
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:
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:
- Β«
Ukubeka iliso kunye neKubernetes Β» (UDmitry Stolyarov; ngoMeyi 28, 2018 kwi-RootConf); - Β«
I-CI/CD Yezona Ziqheliso zibalaseleyo kunye ne-Kubernetes kunye ne-GitLab Β» (UDmitry Stolyarov; ngoNovemba 7, 2017 kwi-HighLoad ++); - Β«
Amava ethu noKubernetes kwiiprojekthi ezincinci Β» (UDmitry Stolyarov; NgoJuni 6, 2017 kwi-RootConf); - Β«
Sakha imifanekiso yeDocker yeCI/CD ngokukhawuleza nangokufanelekileyo ngedapp Β» (UDmitry Stolyarov; ngoNovemba 8, 2016 kwi-HighLoad ++); - Β«
UkuZiqhelanisa nokuHanjiswa okuQhubekayo kunye neDocker Β» (UDmitry Stolyarov; ngoMeyi 31, 2016 kwi-RootConf).
Usenokuba nomdla kolu papasho lulandelayo:
- Β«
Ukusweleka kwe-microservice madness ngo-2018 "; - Β«
Iindlela ezi-7 ezilungileyo zokusebenzisa izikhongozeli ngokukaGoogle "; - Β«
Iinkcukacha-manani ezivela kwi-New Stack malunga nemingeni yokuphumeza i-Kubernetes Β».
umthombo: www.habr.com