Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Sebtembar 19 ee Moscow dhacay kulankii ugu horeeyay ee mawduuca HUG (Highload++ User Group), kaas oo u heellan adeegyadda yar yar. Waxaa jirtay soo bandhigid "Shaqeynta Microservices: Size Matters, Xataa Haddii Aad Leedahay Kubernetes," kaas oo aan kula wadaagnay waayo-aragnimada ballaaran ee Flant ee ku shaqeynta mashaariicda leh naqshadaha adeegga yar yar. Ugu horreyntii, waxay faa'iido u yeelan doontaa dhammaan horumarinta kuwaas oo ka fekeraya isticmaalka habkan mashruucooda hadda ama mustaqbalka.

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Isbarashada muuqaalka warbixinta (50 daqiiqo, aad uga xog badan maqaalka), iyo sidoo kale soosaarkii ugu muhiimsanaa ee ka soo baxay qaabka qoraalka.

FG: Muuqaal iyo bandhig ayaa sidoo kale laga heli karaa dhammaadka qoraalkan.

Horudhac

Sida caadiga ah sheekada wanaagsani waxay leedahay bilow, sheeko muhim ah iyo xal. Warbixintan ayaa ah mid horudhac ah, waana mid naxdin leh. Waxa kale oo muhiim ah in la ogaado in ay bixiso aragtida shisheeye ee adeegyada yaryar. dhiig -miirashada.

Waxaan ku bilaabayaa garaafkan, oo qoraagiisii ​​(2015) uu noqday Martin Fowler:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waxay muujinaysaa sida, kiiska codsiga monolithic ee gaadhay qiimo gaar ah, wax soo saarku wuxuu bilaabaa inuu hoos u dhaco. Adeegga yar-yar way ka duwan yihiin in wax-soo-saarka bilowga ah ee iyaga la jira ay hooseeyaan, laakiin marka ay kakanaanta korodho, hoos u dhaca waxtarka maaha mid la dareemo iyaga.

Waxaan ku dari doonaa garaafkan kiiska isticmaalka Kubernetes:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waa maxay sababta codsiga leh adeeg-yaraha uu ka fiican yahay? Sababtoo ah qaab-dhismeedka noocan oo kale ah wuxuu soo bandhigayaa shuruudo culus oo loogu talagalay dhismaha, taas oo iyana si fiican u daboolaysa kartida Kubernetes. Dhanka kale, qaar ka mid ah shaqadani waxay faa'iido u yeelan doonaan monolith, gaar ahaan sababtoo ah monolith-ka caadiga ah maanta maaha mid keli ah (faahfaahintu waxay ahaan doontaa warbixinta dambe).

Sida aad arki karto, garaafka kama dambaysta ah (marka labadaba codsiyada monolithic iyo microservice ay ku jiraan kaabayaasha Kubernetes) aad ugama duwana midka asalka ah. Marka xigta waxaan ka hadli doonaa codsiyada ku shaqeeya Kubernetes.

Adeegyo yaryar oo faa'iido leh oo waxyeello leh

Oo halkan waa fikradda ugu weyn:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waa maxay caadi Nashqadaynta adeeg-yaraha? Waa inay kuu keentaa faa'iidooyin dhab ah, iyadoo kordhinaysa hufnaantaada shaqada. Haddaynu dib ugu noqono garaafka, waa kan:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Hadii aad wacdo faa'iido leh, ka dibna dhinaca kale ee garaafka waxaa jiri doona waxyeello leh adeegaha yar yar (waxay farageliyaan shaqada):

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Ku soo noqoshada "fikrada ugu weyn": miyaan ku kalsoonahay waayo-aragnimadayda gabi ahaanba? Tan iyo bilowgii sanadkan waxaan eegay 85 mashruuc. Dhammaantood ma ahayn adeeg-yaro (qiyaastii saddex-meelood meel ilaa kala badh ka mid ah waxay lahaayeen qaab-dhismeedkan oo kale), laakiin tani wali waa tiro badan. Anaga (shirkadda Flant) sida kuwa dibadda ka soo baxa ah ayaa maareyna in aan aragno codsiyo kala duwan oo laga sameeyay shirkado yaryar (oo leh 5 horumariye) iyo kuwa waaweyn (~ 500 horumariye). Faa'iidada dheeraadka ah ayaa ah in aan aragno codsiyadan oo nool oo horumaray sannadihii la soo dhaafay.

Waa maxay sababta microservices?

Su'aasha ku saabsan faa'iidooyinka microservices waxaa jira jawaab gaar ah Ka hor Martin Fowler:

  1. xad cad oo modularity;
  2. keenista madax banaan;
  3. xorriyadda doorashada tignoolajiyada.

In badan ayaan la hadlay naqshadeeyayaasha software-ka iyo kuwa horumariya oo aan waydiiyay sababta ay ugu baahan yihiin adeeg-yaraha. Oo waxaan sameeyay liiskayga filashooyinka. Waa kan waxa dhacay:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Haddii aan qeexno qaar ka mid ah qodobbada "dareenka," markaa:

  • xuduudaha cad ee cutubyada: halkan waxaan ku leenahay monolith aad u xun, hadda wax walba ayaa si habsami leh loogu habayn doonaa kaydka Git, taas oo wax walba ay ku yaalaan "khaanadaha", diirran iyo jilicsanaantu maaha kuwo isku dhafan;
  • Madaxbanaanida hawlgelinta: waxaanu awood u yeelan doonaa inaanu si madaxbanaan u bixino adeegyada si horumarku u degdego (daabacdo sifooyin cusub oo barbar socda);
  • Madax-bannaanida horumarinta: waxaan siin karnaa adeeg-yarahaan hal koox / horumariye, midna midka kale, taas oo ay ugu wacan tahay inaan si dhaqso leh u horumarin karno;
  • Π±ΠΎisku halaynta weyn: haddii qayb ahaan hoos u dhac ku yimaado (hal microservice 20 ka mid ah ayaa dhacaya), ka dibna hal badhan oo kaliya ayaa joojin doona shaqada, nidaamka guud ahaan wuu sii wadi doonaa inuu shaqeeyo.

Nashqadaynta adeeg-yaraha ee caadiga ah (waxyeellada leh).

Si aan u sharaxo sababta xaqiiqadu aysan ahayn waxa aan fileyno, waxaan soo bandhigi doonaa wadareed sawirka qaab-dhismeedka microservice-ka oo ku salaysan khibrad laga helay mashaariic badan oo kala duwan.

Tusaale ahaan waxa uu noqon karaa dukaan online ah oo aan la taaban karin oo la tartami doona Amazon ama ugu yaraan OZON. Nashqad-dhismeedkeeda microservice-ka ayaa u eg sidan:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Sababo is biirsaday aawadood, adeegyadan yar-yar ayaa lagu qoray meelo kala duwan:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Maadaama adeeg kasta oo yar yar uu leeyahay madax-bannaani, qaar badan oo iyaga ka mid ah waxay u baahan yihiin xog ururin iyo kayd u ​​gaar ah. Dhismaha ugu dambeeya waa sida soo socota:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waa maxay cawaaqibkeeda?

Fowler sidoo kale wuu leeyahay kan waxaa jira maqaal - ku saabsan "lacag-bixinta" ee isticmaalka adeeg-yaraha:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waanu arki doonaa haddii rajadayadii la gaadhay.

Nadiifi xuduudaha cutubyada...

Weliba Immisa adeeg-yar ayaa dhab ahaantii u baahanahay inaan hagaajino?si loo soo saaro isbeddelka? Xataa ma ogaan karnaa sida ay wax walba u shaqeeyaan iyada oo aan la helin raadiye la qaybiyay (ka dib oo dhan, codsi kasta waxaa lagu farsameeyaa kala badh ka mid ah adeegyada yaryar)?

Waxaa jira qaab"buro weyn oo wasakh ahβ€œ, oo halkan waxa ay noqotay buro wasakh ah oo la qaybiyey. Si taas loo xaqiijiyo, waa kan sawir qiyaas ahaan sida codsiyadu u dhacaan:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Madaxbanaanida geynta...

Farsamo ahaan, waa la gaarey: waxaan si gooni ah u soo rogi karnaa adeeg kasta oo yar yar. Laakiin ficil ahaan waxaad u baahan tahay inaad ku xisaabtanto inay mar walba soo baxdo adeegyo yar yar oo badan, waxaana loo baahan yahay inaan ku xisaabtano siday u kala horeeyaan. Si wanaagsan, waxaan guud ahaan u baahannahay inaan ku tijaabino wareegyo gaar ah haddii aan u soo saarno siideynta habka saxda ah.

Xorriyadda doorashada tignoolajiyada...

Iyadu waa. Xasuusnoow in xorriyaddu ay inta badan xuduud la leedahay sharci-darrada. Aad bay muhiim u tahay halkan inaadan dooran teknoolojiyadda kaliya inaad ku ciyaarto iyaga.

Madax banaanida horumarka...

Sida loo sameeyo wareegga tijaabada ee codsiga oo dhan (oo leh qaybo badan)? Laakiin waxaad weli u baahan tahay inaad la socoto. Dhammaan tani waxay keenaysaa xaqiiqda ah in tirada dhabta ah ee wareegyada tijaabada, oo aan mabda'a ahaan ka koobnaan karno. waxay noqotaa mid aad u yar.

Sidee ku saabsan in la geeyo dhammaan kuwan gudaha gudaha? .. Waxaa soo baxday in inta badan horumariyuhu uu shaqadiisa si madax-bannaan u qabto, laakiin "la-soo-jeedin", sababtoo ah wuxuu ku qasban yahay inuu sugo ilaa inta wareeggu xor u yahay tijaabinta.

Miisaamid gooni ah...

Haa, laakiin waxay ku xaddidan tahay aagga DBMS ee la isticmaalo. Tusaalaha qaab dhismeedka la bixiyay, Cassandra dhib kama yeelan doono, laakiin MySQL iyo PostgreSQL ayaa doona.

Π‘ΠΎkalsooni weyn...

Ma aha oo kaliya fashilka hal adeeg-yar oo xaqiiqo ah ayaa inta badan jebiya shaqada saxda ah ee nidaamka oo dhan, laakiin sidoo kale waxaa jira dhibaato cusub: Samaynta khalad kasta oo adeeg-yar oo adeeg-yaro ah waa mid aad u adag. Sababtoo ah microservices waxay isticmaalaan teknoolojiyad kala duwan (memcache, Redis, iwm.), mid kasta waxaad u baahan tahay inaad ka fikirto wax walba oo aad hirgeliso, taas oo, dabcan, suurtagal tahay, laakiin waxay u baahan tahay ilo badan.

Cabbiraadda rarka...

Tani runtii waa mid wanaagsan.

"Iftiinka" ee adeegaha yar yar...

Ma haysano oo kaliya weyn dusha sare ee shabakada (codsiyada DNS-ka waa la badinayaa, iwm.), laakiin sidoo kale sababtoo ah su'aalo-hoosaadyo badan oo aan bilownay ku celcelin xogta (bakhaarrada bakhaarrada), taasoo keentay kayd aad u badan.

Waana kan natiijadii ka soo baxday filashadayada:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Laakiin intaas oo dhan maaha!

Sababtoo ah:

  • Waxay u badan tahay inaan u baahan doono baska fariinta.
  • Sidee loo sameeyaa gurmad joogto ah waqtiga saxda ah? Midka kaliya dhab ah ikhtiyaarku waa in la damiyo taraafikada tan. Laakiin sida tan loo sameeyo wax soo saarka?
  • Haddii aan ka hadleyno taageeridda dhowr gobol, ka dibna abaabulidda joogtaynta mid kasta oo iyaga ka mid ah waa hawl aad u xoog badan.
  • Dhibaatada samaynta isbeddelada dhexe ayaa soo ifbaxaysa. Tusaale ahaan, haddii aan u baahanahay inaan cusboonaysiinno nooca PHP, waxaan u baahan doonaa inaan ballan qaadno kayd kasta (oo waxaa jira daraasiin iyaga ka mid ah).
  • Kobaca kakanaanta hawl-fulintu waa, ka baxsan, jibbaaran.

Maxaa lagu sameeyaa waxaas oo dhan?

Ku bilow codsi monolithic. waayo aragnimada Fowler ayuu yidhi in ku dhawaad ​​dhammaan codsiyada microservice-ka ee lagu guulaystay ay ku bilowdeen sidii monolith oo noqday mid aad u weyn ka dibna la jabiyay. Isla mar ahaantaana, ku dhawaad ​​dhammaan nidaamyada loo dhisay sidii adeeg-yaro laga soo bilaabo bilowgii hore ama ka dib waxay la kulmeen dhibaatooyin halis ah.

Fikirka kale ee qiimaha leh ayaa ah in mashruuc leh qaab-dhismeedka microservice si uu u guuleysto, waa inaad si fiican u taqaanaa iyo goobta mawduuca, iyo sida loo sameeyo adeegaha yaryar. Habka ugu wanaagsan ee lagu baran karo maadada waa in la sameeyo monolith.

Laakiin maxaa dhacaya haddii aan hore ugu jirnay xaaladdan?

Talaabada ugu horeysa ee lagu xallinayo dhib kasta waa in lagu heshiiyo oo la fahmo in ay dhibaato tahay, in aynaan doonayn in ay dhibaato dambe soo gaarto.

Haddii, marka la eego monolith-ka koray (marka aan ka dhammaanay fursadda aan ku iibsan karno kheyraad dheeraad ah), waanu gooyay, markaa kiiskan sheekada ka soo horjeeda ayaa soo baxday: marka microservices-ka xad-dhaafka ah uusan mar dambe caawinin, laakiin xannibaya - iska jar xad dhaafka oo balaarin!

Tusaale ahaan, sawirka wadajirka ah ee kor looga hadlay...

Ka takhalus adeegaha yar yar ee su'aasha badan leh:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Isku dar dhammaan adeegyadda yar yar ee ka mas'uulka ah jiilka hore:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Hal adeeg-yaro, oo ku qoran hal (casri iyo mid caadi ah, sida aad adigu u malaynayso) luqad/qaab-dhismeedka:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Waxay yeelan doontaa hal ORM (hal DBMS) iyo marka hore dhowr codsi:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Laakiin guud ahaan wax badan ayaad ku wareejin kartaa halkaas, adiga oo helaya natiijada soo socota:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Intaa waxaa dheer, gudaha Kubernetes waxaan ku socodsiineynaa waxaas oo dhan xaalado kala duwan, taas oo macnaheedu yahay inaan wali cabbiri karno culeyska oo aan si gooni ah u cabbirno.

Soo koobid

Fiiri sawirka weyn. Inta badan, dhibaatooyinkan oo dhan ee ku saabsan adeegyada yar yar waxay soo baxaan sababtoo ah qof ayaa qaatay hawshiisa, laakiin wuxuu rabay inuu "ku ciyaaro microservices".

Erayga "microservices" qaybta "micro" waa mid aan badnayn.. Waxay yihiin "micro" kaliya sababtoo ah way ka yar yihiin monolith weyn. Laakiin ha u malayn inay wax yar yihiin.

Iyo fikirka ugu dambeeya, aan ku soo laabano jaantuskii asalka ahaa:

Adeegga yar-yar: arrimaha cabbirka, xitaa haddii aad leedahay Kubernetes

Qoraal ku qoran (midig sare) waxay hoos ugu dhacdaa xaqiiqda xirfadaha kooxda samaynaysa mashruucaaga had iyo jeer waa aasaasiga - waxay door muhiim ah ka ciyaari doonaan doorashadaada inta u dhaxaysa adeegaha yar yar iyo monolith. Haddii kooxdu aysan lahayn xirfado ku filan, laakiin ay bilowdo samaynta adeeg-yaraha, sheekadu waxay hubaal ahaan doontaa dhimasho.

Muuqaalo iyo sawiro

Fiidiyowga hadalka (~ 50 daqiiqo; nasiib darro, ma soo gudbiso dareenka badan ee booqdayaasha, taas oo inta badan go'aamisay niyadda warbixinta, laakiin taasi waa sida ay tahay):

Soo bandhigida warbixinta:

PS

Warbixinno kale oo ku jira blog-keena:

Waxa kale oo laga yaabaa inaad xiisaynayso daabacadaha soo socda:

Source: www.habr.com

Add a comment