"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Tan iyo 2019, Ruushku wuxuu lahaa sharci ku saabsan calaamadaynta qasabka ah. Sharcigu ma khuseeyo dhammaan kooxaha alaabta, iyo taariikhaha la dhaqan galiyay calaamadaynta qasabka ah ee kooxaha alaabadu way kala duwan yihiin. Tubaakada, kabaha, iyo dawooyinka ayaa noqon doona kuwa ugu horreeya ee lagu saleeyo calaamadaynta qasabka ah; alaabooyinka kale ayaa lagu dari doonaa hadhow, tusaale ahaan, cadarka, dunta, iyo caanaha. Hal-abuurnimadan sharci-dejinta ayaa keentay horumarinta xalal cusub oo IT-ga kaas oo suurtogal ka dhigaya in la socdo dhammaan silsiladda nolosha ee badeecada laga soo saaro wax soo saarka si ay u iibsadaan macaamiisha dhammaadka ah, dhammaan ka qaybgalayaasha geeddi-socodka: labadaba gobolka laftiisa iyo dhammaan ururada wax ku iibiya alaabta calaamadayn qasab ah.

X5, nidaamka la socon doona badeecooyinka calaamadeysan iyo xogta isdhaafsiga ee gobolka iyo alaab-qeybiyeyaasha waxaa loo yaqaan "Marcus". Aan kuu sheegno siday u kala horreeyaan iyo cidda u horumarisay, waxa ay tignoolajiyada ku urursan tahay, iyo sababta aan u haysanno wax aan ku faano.

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

HighLoad dhabta ah

"Marcus" wuxuu xalliyaa dhibaatooyin badan, midda ugu weyn waa isdhexgalka ka dhexeeya nidaamyada macluumaadka X5 iyo nidaamka macluumaadka gobolka ee alaabta calaamadeysan (GIS MP) si ay ula socdaan dhaqdhaqaaqa alaabta calaamadeysan. Madalku waxa kale oo ay kaydisaa dhammaan koodka calaamadaynta ee aanu helnay iyo taariikhda oo dhan ee dhaqdhaqaaqa summadan walxaha, waxayna gacan ka geysataa baabi'inta dib-u-qiimaynta badeecadaha calaamadsan. Iyaga oo tusaale u soo qaatay waxyaabaha tubaakada, oo lagu daray kooxihii ugu horreeyay ee badeecadaha calaamadsan, hal baabuur oo sigaar ah ayaa ka kooban ilaa 600 oo baakidh, kuwaas oo mid kastaa leeyahay kood gaar ah. Hawsha nidaamkeenuna waa in aan dabagalno oo aan hubinno sharcinimada dhaqdhaqaaqa baakad kasta oo noocaas ah inta u dhaxaysa bakhaarrada iyo bakhaarada, iyo ugu dambayntii la xaqiijiyo oggolaanshaha iibkooda iibsadaha ugu dambeeya. Waxaannu diiwaangelinnaa ku dhawaad ​​000 oo xawaalad caddaan ah saacaddii, waxaanan sidoo kale u baahannahay inaan diiwaangelinno sida xirmo kasta oo noocaas ah u soo galay dukaanka. Sidaa darteed, iyadoo la tixgelinayo dhammaan dhaqdhaqaaqyada u dhexeeya walxaha, waxaan rajeyneynaa tobanaan balaayiin rikoodh ah sannadkii.

Kooxda M

In kasta oo xaqiiqda ah in Marcus loo tixgeliyo mashruuc gudaha X5, waxaa la hirgeliyay iyadoo la adeegsanayo habka wax soo saarka. Kooxdu waxay u shaqeysaa si waafaqsan Scrum. Mashruucu wuxuu bilaabmay xagaagii hore, laakiin natiijooyinka ugu horreeya waxay yimaadeen Oktoobar - kooxdayada si buuxda ayaa loo soo ururiyey, nidaamka qaab dhismeedka ayaa la sameeyay iyo qalab la iibsaday. Hadda kooxdu waxay leedahay 16 qof, lix ka mid ah waxay ku lug leeyihiin horumarinta dhabarka iyo hore, kuwaas oo saddex ka mid ah ay ku lug leeyihiin falanqaynta nidaamka. Lix qof oo kale ayaa ku lug leh buug-gacmeedka, rarka, tijaabada otomaatiga ah, iyo dayactirka alaabta. Intaa waxaa dheer, waxaan leenahay khabiir ku takhasusay SRE.

Kaliya maaha kuwa horumariya inay kooxdeena ku qoraan koodka; ku dhawaad ​​dhamaan raggu way yaqaaniin sida loo barnaamijiyo loona qoro autotests, qoraalada rarka iyo qoraalada otomaatiga ah. Waxaan bixinaa taxadar gaar ah tan, maadaama xitaa taageerada alaabtu ay u baahan tahay heer sare oo otomaatig ah. Waxaan had iyo jeer isku daynaa inaan la-talinno oo aan caawinno asxaabta aan horay u diyaarin, oo aan siino hawlo yaryar oo ay ku shaqeeyaan.

Faafida coronavirus awgeed, waxaan u wareejinay kooxda oo dhan shaqo fog; helitaanka dhammaan agabka maaraynta horumarka, socodka shaqada ee la dhisay ee Jira iyo GitLab ayaa suurtageliyay in si fudud looga gudbo marxaladan. Bilihii fogaa ee la qaatay waxay muujiyeen in wax soo saarka kooxdu aysan u dhibtoonin natiijada; qaar badan, raaxada shaqada ayaa kordhay, waxa kaliya ee maqan ayaa ahaa isgaarsiinta tooska ah.

Kulanka kooxda fog

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Kulamada inta lagu jiro shaqada fog

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Xirmada tignoolajiyada ee xalka

Kaydka caadiga ah iyo qalabka CI/CD ee X5 waa GitLab. Waxaan u isticmaalnaa kaydinta koodka, tijaabinta joogtada ah, iyo geynta si loo tijaabiyo loona soo saaro adeegayaasha. Waxaan sidoo kale isticmaalnaa dhaqanka dib u eegista koodka, marka ugu yaraan 2 asxaab ay u baahan yihiin inay ansixiyaan isbeddelada uu sameeyay horumariyaha koodka. Falanqeeyayaasha koodka joogtada ah ee SonarQube iyo JaCoCo waxay naga caawiyaan ilaalinta koodkayaga nadiifka ah oo aan hubinno heerka loo baahan yahay ee caymiska tijaabada unugga. Dhammaan isbeddellada koodka waa inay maraan hubinnadan. Dhammaan qoraallada tijaabada ah ee gacanta lagu maamulo ayaa markii dambe si toos ah loo sameeyaa.

Si loo hirgeliyo si guul leh hababka ganacsiga ee "Marcus", waxaan ku qasbanahay inaan xallino tiro ka mid ah dhibaatooyinka tignoolajiyada, oo ku saabsan mid kasta.

Hawsha 1. Baahida loo qabo scalability siman ee nidaamka

Si loo xalliyo dhibaatadan, waxaan dooranay hab adeeg-yar oo loogu talagalay dhismaha. Isla mar ahaantaana, aad bay muhiim u ahayd in la fahmo meelaha masuuliyadda adeegyada. Waxaan isku daynay inaan u qaybinno hawlaha ganacsiga, anagoo tixgelinayna waxyaabaha gaarka ah ee hababka. Tusaale ahaan, aqbalaadda bakhaarku maaha mid aad u badan, laakiin hawlgal aad u ballaaran, inta lagu jiro taas oo ay lagama maarmaan tahay in si degdeg ah looga helo maamulaha gobolka macluumaadka ku saabsan cutubyada alaabta la aqbalayo, tiradaas oo hal mar la geeyo 600000 , hubi oggolaanshaha aqbalitaanka alaabtan bakhaarka oo soo celi dhammaan macluumaadka lagama maarmaanka u ah nidaamka otomaatiga ah ee bakhaarka. Laakiin shixnadaha bakhaarrada ayaa leh awood aad u weyn, laakiin isla markaa waxay ku shaqeysaa tiro yar oo xog ah.

Waxaan u hirgelinnaa dhammaan adeegyada si aan waddan lahayn, xitaa waxaan isku daynaa inaan u qaybinno hawlgallada gudaha tillaabooyin, annagoo adeegsanayna waxa aan ugu yeerno mawduucyada Kafka. Tani waa marka microservice-ku u diro fariin naftiisa, taas oo kuu ogolaanaysa inaad isku dheelitirto culeyska hawlo badan oo kheyraad ah oo fududeynaya dayactirka alaabta, laakiin wax badan oo ka dambeeya.

Waxaan go'aansanay inaan u kala saarno cutubyada isdhexgalka nidaamyada dibadda oo aan u kala saarno adeegyo gaar ah. Tani waxay suurtogal ka dhigtay in la xalliyo dhibaatada isbeddelka joogtada ah ee API-yada nidaamyada dibadda, iyada oo aan wax saameyn ah ku yeelanayn adeegyada leh shaqeynta ganacsi.

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Dhammaan adeegayaasha yar yar waxa la geeyaa kutlada OpenShift, taas oo xalisa labadaba dhibka cabirka adeeg kasta oo yar yar oo noo ogolaanaya in aynaan isticmaalin agabka Sahanka Adeegga dhinac saddexaad.

Hawsha 2. Baahida loo qabo in la joogteeyo culays sare iyo xog iswaydaarsi aad u xooggan oo u dhexeeya adeegyada boosteejada: Inta lagu jiro marxaladda bilawga mashruuca oo keliya, qiyaastii 600 oo hawlgal ayaa la sameeyaa ilbiriqsigiiba. Waxaan filaynaa in qiimahani uu kordho 5000 ops/sek sida dukaamada tafaariiqda ay ku xidhmaan goobteena.

Dhibaatadan waxaa lagu xalliyay iyadoo la geeyay kooxda Kafka oo ku dhawaad ​​gabi ahaanba iska dhaaftay is dhexgalka isku midka ah ee ka dhexeeya adeegyadda yar yar ee madal. Tani waxay u baahan tahay falanqayn aad u taxadar leh oo ku saabsan shuruudaha nidaamka, maadaama aysan dhammaan hawlgallada isku mid ahayn. Isla mar ahaantaana, kaliya ma gudbino dhacdooyinka iyada oo loo marayo dilaalka, laakiin sidoo kale waxaan u gudbinaa dhammaan macluumaadka ganacsiga loo baahan yahay ee fariinta. Sidaa darteed, cabbirka fariintu waxay gaari kartaa dhowr boqol oo kilobytes. Xadka cabbirka farriinta ee Kafka waxay nooga baahan tahay inaan si sax ah u saadaalino cabbirka farriinta, iyo haddii loo baahdo, waan kala qaybinnaa, laakiin qaybtu waa mid macquul ah, oo la xidhiidha hawlaha ganacsiga.
Tusaale ahaan, waxaan u qaybinnaa alaabada gaadhi ku timaada sanduuqyo. Hawlgallada isku midka ah, adeeg yar oo kala duwan ayaa loo qoondeeyey waxaana la sameeyaa tijaabo culus. Isticmaalka Kafka waxay ina soo bandhigtay caqabad kale - tijaabinta hawlgalka adeegeena iyada oo la tixgalinayo is dhexgalka Kafka waxay ka dhigaysaa dhammaan imtixaanada cutubkayada kuwo isku mid ah. Waxaan ku xalinay dhibaatadan annagoo qornay hababka tasiilaadka annaga oo adeegsanayna dallaalka Kafka-gaaban. Tani ma baabi'inayso baahida loo qabo in la qoro imtixaannada cutubyada hababka gaarka ah, laakiin waxaan doorbideynaa inaan tijaabino kiisaska adag iyadoo la adeegsanayo Kafka.

Fiiro gaar ah ayaa la siiyay raadinta qoryaha si aysan TraceId-kooda u lumin marka ka reebanaanshaha ay dhacaan inta lagu jiro hawlgalka adeegyada ama marka la shaqeynayo dufcada Kafka. Oo haddii aysan jirin arrimo gaar ah oo ku saabsan kii hore, ka dib kiiska labaad waxaa nagu qasbay inaan galno dhammaan TraceIds-yada ay dufcaddu la timid oo aan dooranno mid si aan u sii wadno raadinta. Kadib, marka lagu baadho TraceId-ka asalka ah, isticmaaluhu wuxuu si fudud u ogaan doonaa midka raadraaca lagu sii wado.

Hawsha 3. Baahida loo qabo kaydinta xog badan: In ka badan 1 bilyan oo calaamado ah sannadkii sigaarka oo keliya ayaa yimaada X5. Waxay u baahan yihiin galaangal joogto ah oo degdeg ah. Wadar ahaan, nidaamku waa inuu farsameeyaa ilaa 10 bilyan oo diiwaannada taariikhda dhaqdhaqaaqa alaabtan calaamadeysan.

Si loo xalliyo dhibaatada saddexaad, xogta NoSQL MongoDB ayaa la doortay. Waxaan dhisnay jeex jeex ah 5 nood oo nood kastaa wuxuu leeyahay Set nuqul ka mid ah 3 server. Tani waxay kuu ogolaaneysaa inaad si toos ah u cabbirto nidaamka, adoo ku daraya adeegayaal cusub kooxda, oo aad hubiso dulqaadkeeda qaladka. Halkan waxaan kala kulanay dhibaato kale - hubinta wax kala iibsiga ee kooxda mongo, iyadoo la tixgelinayo isticmaalka adeegyada yar yar ee toosan. Tusaale ahaan, mid ka mid ah hawlaha nidaamkeenu waa in la aqoonsado isku dayga dib-u-ibinta alaabada leh koodka calaamadaynta. Halkan, dulsaarku waxa ay ka muuqdaan sawiro khaldan ama hawlo khaldan oo ay sameeyaan khasnajiyeyaashu. Waxaan ogaanay in nuqullada noocaan ah ay ku dhici karaan hal dufcadood oo Kafka ah oo la farsamaynayo, iyo laba dufcadood gudahooda oo si barbar socda loo farsameeyo. Sidaa darteed, hubinta nuqullada iyadoo la waydiinayo xogta xogta waxba ma aysan siin. Adeeg kasta oo yar yar, waxaan u xallinay dhibaatada si gooni ah iyadoo ku saleysan macquulnimada ganacsiga ee adeeggan. Tusaale ahaan, jeegaga, waxaanu ku darnay jeeg gudaha dufcaddii iyo habayn gaar ah oo loogu talagalay muuqaalka nuqullada marka la gelinayo.

Si loo hubiyo in shaqada isticmaalayaasha ee taariikhda hawlgallada aysan sinaba u saameynin waxa ugu muhiimsan - shaqeynta hababka ganacsigeena, waxaan u kala soocnay dhammaan xogta taariikhiga ah adeeg gaar ah oo leh xog gaar ah, kaas oo sidoo kale ka hela macluumaadka iyada oo loo marayo Kafka . Sidan, isticmaalayaashu waxay la shaqeeyaan adeeg go'doonsan iyagoon saameyn ku yeelan adeegyada ka baaraandega xogta hawlgallada socda.

Hawsha 4: Dib u habaynta safka iyo la socodka:

Nidaamyada la qaybiyay, dhibaatooyinka iyo khaladaadka ayaa si lama filaan ah uga soo baxa helitaanka xogta, safafka, iyo ilaha xogta dibadda. Marka laga hadlayo Marcus, isha khaladaadka noocaas ah waa isdhexgalka nidaamyada dibadda. Waxay ahayd lagama maarmaan in la helo xal u oggolaanaya codsiyada soo noqnoqda ee jawaabaha khaldan ee leh wakhti cayiman, laakiin isla mar ahaantaana aan la joojin codsiyada guusha leh ee safka weyn. Ujeedadan awgeed, fikradda waxa loogu yeero "ku celcelinta mowduuca ku salaysan" ayaa la doortay. Mawduuc kasta oo muhiim ah, hal ama in ka badan oo mawduucyo ah ayaa la abuuray kuwaas oo farriimaha khaldan loo diro isla mar ahaantaana dib u dhigista farriimaha mawduuca ugu muhiimsan waa la tirtiraa. Nidaamka isdhexgalka -

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Si loo hirgeliyo nidaamkan oo kale, waxaan u baahanahay kuwan soo socda: in lagu daro xalkan Gu'ga oo aan ka fogaano nuqulka koodka. Intii aan dhex-wareegayay shabakadda, waxaan la kulannay xal la mid ah oo ku saleysan Spring BeanPostProccessor, laakiin waxay noogu muuqatay mid aan loo baahnayn. Kooxdayadu waxay sameeyeen xal fudud oo noo ogolaanaya inaan ku dhex milno wareegga gu'ga si loo abuuro macaamiisha oo aan ku darno Dib-u-isku-dayga Macaamiisha. Waxa aanu u bandhignay nooc ka mid ah xalkayaga kooxda gu'ga, waad arki kartaa halkan. Tirada Dib-u-isku-dayga Macaamilka iyo tirada isku-dayga macaamiil kasta ayaa lagu habeeyey iyada oo loo marayo cabbirro, iyada oo ku xidhan baahida habka ganacsiga, iyo in wax walba ay shaqeeyaan, dhammaan waxa hadhay waa in lagu daro sharraxaadda org.springframework.kafka.annotation.KafkaListener , kaas oo ay yaqaanaan dhammaan horumariyeyaasha gu'ga.

Haddi fariinta aan la habayn karin ka dib isku dayga dhan ee ku celiska ah, waxa ay aadaysaa DLT (mawduuca xarafka dhintay) iyadoo la isticmaalayo Spring DeadLetterPublishingRecoverer. Codsiga taageerada, waxaanu ballaarinay shaqadan waxaana aanu abuurnay adeeg gaar ah oo kuu ogolaanaya inaad aragto fariimaha ku jira DLT, stackTrace, traceId iyo macluumaadka kale ee waxtarka leh ee iyaga ku saabsan. Intaa waxaa dheer, la socodka iyo digniinaha ayaa lagu daray dhammaan mawduucyada DLT, iyo hadda, dhab ahaantii, muuqaalka fariinta ee mawduuca DLT waa sabab lagu falanqeeyo oo loo hagaajiyo cillad. Tani waa mid aad u habboon - magaca mawduuca, waxaan isla markiiba fahamsanahay tallaabada geeddi-socodka dhibaatadu kacday, taas oo si weyn u dedejisa raadinta sababta asaasiga ah.

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Dhawaanahan, waxaan hirgelinay interface kaas oo noo ogolaanaya inaan dib u dirno farriimaha annaga oo adeegsanayna taageeradayada ka dib markii la tirtiro sababaha (tusaale ahaan, soo celinta shaqeynta nidaamka dibadda) iyo, dabcan, sameynta cillad u dhiganta falanqaynta. Tani waa halka mawduucyadayada is-gaarsiinta ay ku anfacaan: si aan dib loogu bilaabin silsilad wax-qabad dheer, waxaad dib uga bilaabi kartaa tallaabada aad rabto.

"Ku socoshada kabahayga" - sug, ma la calaamadeeyay?

Hawlgalka Platform

Madalku waxa ay mar horeba ku jirtay hawlo wax soo saar leh, maalin kasta waxa aanu fulinaa keenista iyo shixnadaha, waxa aanu isku xidhaa xarumaha cusub ee qaybinta iyo dukaamada. Iyada oo qayb ka ah duuliyaha, nidaamku wuxuu la shaqeeyaa kooxaha wax soo saarka "Tubakada" iyo "Kabaha".

Kooxdayada oo dhami waxay ka qaybqaataan samaynta duuliyayaasha, waxay falanqeeyaan dhibaatooyinka soo ifbaxaya waxayna soo jeedinayaan talooyin lagu horumarinayo alaabtayada, laga soo bilaabo hagaajinta diiwaannada ilaa hababka beddelka.

Si aynaan u soo celin khaladaadkeena, dhammaan kiisaska la helo intii lagu jiray duuliyaha waxay ka muuqdaan imtixaanno otomaatig ah. Joogitaanka tiro badan oo ah autotests iyo unugyada unugyada waxay kuu ogolaaneysaa inaad sameyso baaritaanka dib u celinta oo aad ku rakibto hotfix dhab ahaantii dhowr saacadood gudahood.

Hadda waxaan sii wadeynaa horumarinta iyo hagaajinta barnaamijkeena, oo aan si joogto ah ula kulanno caqabado cusub. Haddii aad xiisaynayso, waxaanu kaga hadli doonaa xalalkayaga maqaallada soo socda.

Source: www.habr.com

Add a comment