"Tafiya cikin takalma na" - jira, an yi musu alama?

Tun daga 2019, Rasha tana da doka kan lakabin dole. Dokar ba ta shafi duk ƙungiyoyin kayayyaki ba, kuma kwanakin da za a fara aiwatar da lakabin dole ga ƙungiyoyin samfura sun bambanta. Taba, takalma, da magunguna za su kasance na farko da za a yi wa lakabin dole; za a ƙara wasu samfuran daga baya, misali, turare, masaku, da madara. Wannan sabuwar sabuwar doka ta haifar da haɓaka sabbin hanyoyin IT waɗanda za su ba da damar bin diddigin duk tsarin rayuwa na samfur daga samarwa don siye ta ƙarshen mabukaci, ga duk mahalarta cikin tsarin: duka jihar kanta da duk ƙungiyoyin da ke siyar da kayayyaki tare da su. lakabi na wajibi.

A cikin X5, tsarin da zai bin diddigin kayan da aka yi wa lakabi da musayar bayanai tare da jihar da masu samar da kayayyaki ana kiransa "Marcus". Bari mu gaya muku cikin tsari da kuma wanda ya haɓaka shi, menene tarin fasahar sa, da kuma dalilin da ya sa muke da abin alfahari da shi.

"Tafiya cikin takalma na" - jira, an yi musu alama?

HighLoad na gaske

"Marcus" yana magance matsalolin da yawa, babban abu shine haɗin kai tsakanin tsarin bayanai na X5 da tsarin bayanan jihar don samfurori masu lakabi (GIS MP) don bin diddigin motsi na samfurori masu lakabi. Dandalin kuma yana adana duk lambobin lakabi da muka karɓa da duk tarihin motsin waɗannan lambobin akan abubuwa, kuma yana taimakawa kawar da sake ƙima na samfuran da aka yiwa alama. Ta yin amfani da misalin kayayyakin sigari, waɗanda ke cikin rukunin farko na kayayyakin da aka yi wa lakabi, babbar tirela guda ɗaya ce da ke ɗauke da sigari tana ɗauke da fakiti kusan 600, kowannensu yana da lambar sa na musamman. Kuma aikin tsarin mu shine bin diddigin da tabbatar da halaccin motsin kowane irin wannan fakitin tsakanin shaguna da shaguna, da kuma tabbatar da amincewar siyar da su ga mai siye. Kuma muna yin rikodin ma'amalar tsabar kuɗi kusan 000 a cikin awa ɗaya, kuma muna buƙatar yin rikodin yadda kowane fakitin ya shiga cikin shagon. Don haka, la'akari da duk motsin da ke tsakanin abubuwa, muna sa ran dubun-dubatar bayanai a kowace shekara.

Tawagar M

Duk da cewa ana ɗaukar Marcus aiki a cikin X5, ana aiwatar da shi ta amfani da tsarin samfur. Ƙungiyar tana aiki bisa ga Scrum. An fara aikin a lokacin rani na ƙarshe, amma sakamakon farko ya zo ne kawai a watan Oktoba - ƙungiyarmu ta kasance cikakke, an haɓaka tsarin gine-gine kuma an saya kayan aiki. Yanzu ƙungiyar tana da mutane 16, shida daga cikinsu suna da hannu a cikin ci gaban baya da gaba, uku daga cikinsu suna cikin nazarin tsarin. Ƙarin mutane shida suna shiga cikin aikin hannu, lodi, gwaji na atomatik, da kiyaye samfura. Bugu da ƙari, muna da ƙwararren SRE.

Ba masu haɓakawa kaɗai ke rubuta lamba a cikin ƙungiyarmu ba; kusan duk samarin sun san yadda ake tsarawa da rubuta autotests, rubutun loda da rubutun atomatik. Muna ba da kulawa ta musamman ga wannan, tunda ko da tallafin samfur yana buƙatar babban matakin sarrafa kansa. Kullum muna ƙoƙarin ba da shawara da taimaka wa abokan aikin da ba su yi shiri a baya ba, da kuma ba su wasu ƙananan ayyuka don yin aiki a kansu.

Sakamakon cutar amai da gudawa na coronavirus, mun tura dukkan ƙungiyar zuwa aiki mai nisa; Samar da duk kayan aikin don gudanar da haɓakawa, ginanniyar aikin aiki a Jira da GitLab ya ba da damar samun sauƙin wuce wannan matakin. Watanni da aka kashe a nesa sun nuna cewa aikin ƙungiyar bai sha wahala ba a sakamakon haka; ga mutane da yawa, jin daɗin aikin ya karu, kawai abin da ya ɓace shine sadarwar kai tsaye.

Taron ƙungiyar nesa

"Tafiya cikin takalma na" - jira, an yi musu alama?

Taro a lokacin aiki mai nisa

"Tafiya cikin takalma na" - jira, an yi musu alama?

Fasaha tari na mafita

Daidaitaccen ma'ajin ajiya da kayan aikin CI/CD don X5 shine GitLab. Muna amfani da shi don ajiyar lambar, ci gaba da gwaji, da turawa don gwadawa da samar da sabobin. Hakanan muna amfani da aikin bitar lambar, lokacin da aƙalla abokan aiki 2 ke buƙatar amincewa da canje-canjen da mai haɓaka ya yi zuwa lambar. Masu nazarin lambar a tsaye SonarQube da JaCoCo suna taimaka mana kiyaye lambar mu mai tsabta da tabbatar da matakin da ake buƙata na ɗaukar gwajin naúrar. Duk canje-canje ga lambar dole ne su bi ta waɗannan cak ɗin. Duk rubutun gwajin da aka yi da hannu ana sarrafa su daga baya.

Don nasarar aiwatar da hanyoyin kasuwanci ta hanyar "Marcus", dole ne mu magance matsalolin fasaha da yawa, game da kowane tsari.

Aiki 1. Bukatar scalability a kwance na tsarin

Don magance wannan matsalar, mun zaɓi hanyar microservice don gine-gine. A lokaci guda, yana da matukar muhimmanci a fahimci sassan alhakin ayyukan. Mun yi ƙoƙari mu raba su cikin ayyukan kasuwanci, la'akari da ƙayyadaddun hanyoyin. Misali karbuwa a rumbun ajiya ba abu ne mai yawan gaske ba, sai dai babban aiki ne, wanda a cikinsa ya zama dole a gaggauta samun bayanai daga hukumar gudanarwar jihar game da raka’o’in kayayyakin da ake karba, wanda adadinsu daya kai 600000. , Bincika yarda da karɓar wannan samfur a cikin ma'ajin kuma mayar da duk mahimman bayanai don tsarin sarrafa kansa na sito. Amma jigilar kaya daga ɗakunan ajiya yana da ƙarfin gaske, amma a lokaci guda yana aiki tare da ƙananan bayanai.

Muna aiwatar da duk ayyuka bisa tushen rashin ƙasa har ma muna ƙoƙarin rarraba ayyukan cikin gida zuwa matakai, ta amfani da abin da muke kira taken Kafka. Wannan shine lokacin da microservice ke aika saƙo zuwa kanta, wanda ke ba ku damar daidaita nauyi akan ƙarin ayyuka masu amfani da albarkatu kuma yana sauƙaƙe kiyaye samfur, amma ƙari akan wancan daga baya.

Mun yanke shawarar raba kayayyaki don hulɗa tare da tsarin waje zuwa ayyuka daban-daban. Wannan ya ba da damar warware matsalar yawan sauya APIs na tsarin waje, ba tare da kusan wani tasiri akan ayyuka tare da ayyukan kasuwanci ba.

"Tafiya cikin takalma na" - jira, an yi musu alama?

Ana tura duk microservices a cikin gungu na OpenShift, wanda ke magance duka matsalar sikelin kowane microservice kuma yana ba mu damar yin amfani da kayan aikin Gano Sabis na ɓangare na uku.

Aiki 2. Bukatar kula da babban kaya da musayar bayanai mai zurfi tsakanin sabis na dandamali: A lokacin kaddamar da aikin kadai, ana gudanar da ayyuka kusan 600 a sakan daya. Muna tsammanin wannan ƙimar za ta ƙaru zuwa 5000 ops/sec yayin da kantunan tallace-tallace ke haɗawa da dandalinmu.

An magance wannan matsalar ta hanyar tura gungu na Kafka da kusan barin hulɗar aiki tare tsakanin ƙananan sabis na dandamali. Wannan yana buƙatar yin nazari sosai game da buƙatun tsarin, tunda ba duk ayyuka ba ne ke iya zama asynchronous. A lokaci guda, ba kawai muna watsa abubuwan da suka faru ta hanyar dillali ba, har ma muna watsa duk bayanan kasuwanci da ake buƙata a cikin saƙon. Don haka, girman saƙon zai iya kaiwa kilobytes ɗari da yawa. Matsakaicin girman saƙo a cikin Kafka yana buƙatar mu yi hasashen girman saƙon daidai, kuma idan ya cancanta, muna raba su, amma rabon yana da ma'ana, yana da alaƙa da ayyukan kasuwanci.
Misali, muna raba kayan da suka zo cikin mota cikin kwalaye. Don ayyukan aiki tare, ana keɓance ƙananan sabis na keɓaɓɓu kuma ana gudanar da cikakken gwajin nauyi. Amfani da Kafka ya gabatar mana da wani ƙalubale - gwada aikin sabis ɗinmu la'akari da haɗin Kafka yana sa duk gwajin naúrar mu ya kasance asynchronous. Mun magance wannan matsalar ta hanyar rubuta hanyoyin amfani da namu ta amfani da Dillalan Kafka. Wannan baya kawar da buƙatar rubuta gwaje-gwajen naúrar don hanyoyin mutum ɗaya, amma mun fi son gwada lokuta masu rikitarwa ta amfani da Kafka.

An mai da hankali sosai ga gano rajistan ayyukan don kada TraceId ɗin su ya ɓace lokacin da keɓancewa yayin aikin sabis ko lokacin aiki tare da rukunin Kafka. Idan kuma ba a sami wata matsala ta musamman da ta farko ba, to a karo na biyu an tilasta mana mu shiga duk TraceIds ɗin da rukunin ya zo da shi mu zaɓi ɗaya don ci gaba da ganowa. Sa'an nan, lokacin da ake nema ta asali TraceId, mai amfani zai iya ganowa da abin da aka ci gaba da ganowa.

Aiki 3. Bukatar adana adadi mai yawa na bayanai: Fiye da alamomin biliyan 1 a kowace shekara don taba sigari kaɗai sun zo X5. Suna buƙatar shiga akai-akai da sauri. Gabaɗaya, dole ne tsarin ya aiwatar da kusan bayanan biliyan 10 na tarihin motsi na waɗannan kaya masu alamar.

Don magance matsala ta uku, an zaɓi NoSQL database MongoDB. Mun gina shard na nodes 5 kuma kowane kumburi yana da Saitin Sabar 3. Wannan yana ba ku damar daidaita tsarin a kwance, ƙara sabbin sabobin zuwa gungu, da kuma tabbatar da haƙurin kuskurensa. Anan mun ci karo da wata matsala - tabbatar da ma'amala a cikin gungu na mongo, tare da la'akari da amfani da ƙananan ayyuka masu girman gaske. Misali, daya daga cikin ayyukan tsarin mu shine gano yunƙurin sake siyar da samfuran tare da lambobi iri ɗaya. Anan, mai rufi yana bayyana tare da kuskuren dubawa ko kuskuren ayyuka na masu kuɗaɗe. Mun gano cewa irin waɗannan kwafin na iya faruwa duka a cikin rukunin Kafka ɗaya da ake sarrafa su, kuma a cikin batches biyu ana sarrafa su a layi daya. Don haka, bincika kwafi ta hanyar tambayar bayanan bai ba da komai ba. Ga kowane microservice, mun warware matsalar daban dangane da dabarun kasuwanci na wannan sabis ɗin. Misali, don cak, mun ƙara cak a cikin tsari da sarrafa daban don bayyanar kwafi lokacin sakawa.

Don tabbatar da cewa aikin masu amfani tare da tarihin ayyukan ba su da wata hanya ta tasiri mafi mahimmanci - aikin tafiyar da harkokin kasuwancin mu, mun raba duk bayanan tarihi zuwa wani sabis na daban tare da bayanan daban, wanda kuma yana karɓar bayanai ta hanyar Kafka. . Ta wannan hanyar, masu amfani suna aiki tare da keɓaɓɓen sabis ba tare da shafar ayyukan da ke sarrafa bayanai don ayyuka masu gudana ba.

Aiki na 4: Sake sarrafawa da saka idanu akan layi:

A cikin tsarin da aka rarraba, matsaloli da kurakurai babu makawa suna tasowa a cikin samuwar bayanan bayanai, jerin gwano, da hanyoyin bayanan waje. A game da Marcus, tushen irin waɗannan kurakurai shine haɗin kai tare da tsarin waje. Ya zama dole a nemo hanyar da za ta ba da damar maimaita buƙatun don amsa kuskure tare da wasu ƙayyadaddun lokaci, amma a lokaci guda kar a daina sarrafa buƙatun nasara a cikin babban layi. Don wannan dalili, an zaɓi abin da ake kira "sake gwadawa kan batun". Ga kowane babban jigo, ana ƙirƙira batutuwa ɗaya ko fiye waɗanda ake aika saƙon kuskure kuma a lokaci guda ana kawar da jinkirin sarrafa saƙonni daga babban jigo. Tsarin hulɗa -

"Tafiya cikin takalma na" - jira, an yi musu alama?

Don aiwatar da irin wannan makirci, muna buƙatar abubuwa masu zuwa: don haɗa wannan bayani tare da bazara kuma ku guje wa kwafin lambar. Yayin hawan yanar gizo, mun ci karo da irin wannan bayani dangane da Spring BeanPostProccessor, amma ya zama kamar ba dole ba ne a gare mu. Ƙungiyarmu ta yi bayani mafi sauƙi wanda ke ba mu damar haɗawa cikin yanayin bazara don ƙirƙirar masu amfani da kuma ƙara Masu Sake gwadawa. Mun bayar da samfur na mu mafita ga Spring tawagar, za ka iya gani da shi a nan. Yawan Sake gwada masu amfani da kuma adadin ƙoƙari na kowane mabukaci an daidaita su ta hanyar sigogi, dangane da bukatun tsarin kasuwanci, kuma don duk abin da ke aiki, duk abin da ya rage shi ne ƙara annotation org.springframework.kafka.annotation.KafkaListener. , wanda ya saba da duk masu haɓaka bazara.

Idan ba za a iya sarrafa saƙon ba bayan duk ƙoƙarin sake gwadawa, yana zuwa DLT (matuƙar harafin matattu) ta amfani da Spring DeadLetterPublishingRecoverer. A buƙatar tallafi, mun faɗaɗa wannan aikin kuma mun ƙirƙiri wani sabis na daban wanda ke ba ku damar duba saƙonnin da aka haɗa a cikin DLT, stackTrace, traceId da sauran bayanai masu amfani game da su. Bugu da ƙari, an ƙara saka idanu da faɗakarwa ga duk batutuwa na DLT, kuma yanzu, a gaskiya, bayyanar saƙo a cikin wani batu na DLT shine dalili na nazari da gyara lahani. Wannan ya dace sosai - da sunan batun, nan da nan mun fahimci a wane mataki na tsari matsalar ta taso, wanda ya hanzarta neman tushen tushen sa.

"Tafiya cikin takalma na" - jira, an yi musu alama?

Kwanan nan, mun aiwatar da hanyar sadarwa wanda ke ba mu damar sake aika saƙonni ta amfani da goyon bayanmu bayan kawar da abubuwan da suka haifar da su (alal misali, maido da ayyuka na tsarin waje) kuma, ba shakka, kafa kuskuren da ya dace don bincike. Wannan shine inda batutuwan kanmu suka zo da amfani: don kar a sake kunna sarkar sarrafawa mai tsawo, zaku iya sake kunna shi daga matakin da ake so.

"Tafiya cikin takalma na" - jira, an yi musu alama?

Aiki na Platform

Dandalin ya riga ya fara aiki, kowace rana muna gudanar da jigilar kayayyaki da jigilar kaya, haɗa sabbin cibiyoyin rarrabawa da shaguna. A matsayin wani ɓangare na matukin jirgi, tsarin yana aiki tare da ƙungiyoyin samfurin "Tobacco" da "Takalma".

Dukkanin ƙungiyarmu suna shiga cikin gudanar da matukin jirgi, suna nazarin matsalolin da suka kunno kai kuma suna ba da shawarwari don inganta samfuranmu, daga inganta rajistan ayyukan zuwa canza matakai.

Domin kar mu sake maimaita kurakuran mu, duk shari'o'in da aka samu a lokacin matukin jirgi suna nunawa a cikin gwaje-gwaje na atomatik. Kasancewar babban adadin autotests da gwaje-gwajen naúrar yana ba ku damar gudanar da gwajin gwagwarmaya da shigar da hotfix a zahiri a cikin 'yan sa'o'i kaɗan.

Yanzu muna ci gaba da haɓakawa da haɓaka dandalinmu, kuma koyaushe muna fuskantar sabbin ƙalubale. Idan kuna sha'awar, za mu yi magana game da mafita a cikin talifofin da ke gaba.

source: www.habr.com

Add a comment