“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Lati ọdun 2019, Russia ti ni ofin lori isamisi dandan. Awọn ofin ko ni waye si gbogbo awọn ẹgbẹ ti de, ati awọn ọjọ fun titẹsi sinu agbara ti dandan lebeli fun awọn ẹgbẹ ọja ti o yatọ si. Taba, bata, ati awọn oogun yoo jẹ akọkọ ti o wa labẹ isamisi ti o jẹ dandan; Imudara isofin yii ti ṣe idagbasoke idagbasoke ti awọn solusan IT tuntun ti yoo jẹ ki o ṣee ṣe lati tọpinpin gbogbo ẹwọn igbesi aye ti ọja lati iṣelọpọ lati ra nipasẹ alabara ipari, si gbogbo awọn olukopa ninu ilana: mejeeji ipinlẹ funrararẹ ati gbogbo awọn ajọ ti n ta ọja pẹlu dandan lebeli.

Ni X5, eto ti yoo tọpinpin awọn ọja ti o ni aami ati data paṣipaarọ pẹlu ipinlẹ ati awọn olupese ni a pe ni “Marcus”. Jẹ ki a sọ fun ọ ni aṣẹ bii ati tani ṣe idagbasoke rẹ, kini akopọ imọ-ẹrọ rẹ, ati idi ti a ni nkan lati gberaga.

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

HighLoad gidi

"Marcus" yanju ọpọlọpọ awọn iṣoro, akọkọ ni ibaraenisepo laarin awọn ọna ṣiṣe alaye X5 ati eto alaye ipinle fun awọn ọja ti o ni aami (GIS MP) lati tọpa iṣipopada ti awọn ọja ti o ni aami. Syeed naa tun tọju gbogbo awọn koodu isamisi ti o gba nipasẹ wa ati gbogbo itan-akọọlẹ ti gbigbe awọn koodu wọnyi kọja awọn nkan, ati pe o ṣe iranlọwọ imukuro atunkọ awọn ọja ti o ni aami. Lilo apẹẹrẹ awọn ọja taba, eyiti o wa ninu awọn ẹgbẹ akọkọ ti awọn ọja ti o ni aami, ẹru nla kan ti awọn siga ni nkan bii awọn akopọ 600, ọkọọkan wọn ni koodu alailẹgbẹ tirẹ. Ati pe iṣẹ-ṣiṣe ti eto wa ni lati tọpa ati rii daju ofin ti awọn agbeka ti iru idii kọọkan laarin awọn ile itaja ati awọn ile itaja, ati nikẹhin rii daju gbigba ti tita wọn si olura opin. Ati pe a ṣe igbasilẹ nipa awọn iṣowo owo 000 fun wakati kan, ati pe a tun nilo lati ṣe igbasilẹ bii iru idii kọọkan ṣe wọ ile itaja. Nitorinaa, ni akiyesi gbogbo awọn agbeka laarin awọn nkan, a n reti awọn mewa ti awọn ọkẹ àìmọye awọn igbasilẹ fun ọdun kan.

Ẹgbẹ M

Bíótilẹ o daju wipe Marcus ti wa ni ka ise agbese kan laarin X5, o ti wa ni imuse nipa lilo a ọja ona. Ẹgbẹ naa n ṣiṣẹ ni ibamu si Scrum. Ise agbese na bẹrẹ ni igba ooru to kọja, ṣugbọn awọn abajade akọkọ wa nikan ni Oṣu Kẹwa - ẹgbẹ tiwa ti kojọpọ ni kikun, eto faaji ti ni idagbasoke ati ti ra ohun elo. Bayi ẹgbẹ naa ni eniyan 16, mẹfa ninu wọn ni ipa ninu ẹhin ati idagbasoke iwaju, mẹta ninu wọn ni ipa ninu itupalẹ eto. Eniyan mẹfa diẹ sii ni ipa ninu afọwọṣe, fifuye, idanwo adaṣe, ati itọju ọja. Ni afikun, a ni alamọja SRE kan.

Kii ṣe awọn olupilẹṣẹ nikan kọ koodu ni ẹgbẹ wa; A ṣe akiyesi pataki si eyi, nitori paapaa atilẹyin ọja nilo ipele giga ti adaṣe. Nigbagbogbo a gbiyanju lati ni imọran ati ṣe iranlọwọ fun awọn ẹlẹgbẹ ti ko ṣe eto tẹlẹ, ati fun wọn ni awọn iṣẹ-ṣiṣe kekere kan lati ṣiṣẹ lori.

Nitori ajakaye-arun ti coronavirus, a gbe gbogbo ẹgbẹ lọ si iṣẹ latọna jijin; Awọn oṣu ti o lo latọna jijin fihan pe iṣelọpọ ẹgbẹ ko jiya bi abajade;

Latọna egbe ipade

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Awọn ipade lakoko iṣẹ latọna jijin

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Technology akopọ ti ojutu

Ibi ipamọ boṣewa ati ohun elo CI/CD fun X5 jẹ GitLab. A lo fun ibi ipamọ koodu, idanwo lilọsiwaju, ati imuṣiṣẹ lati ṣe idanwo ati awọn olupin iṣelọpọ. A tun lo iṣe ti atunyẹwo koodu, nigbati o kere ju awọn ẹlẹgbẹ 2 nilo lati fọwọsi awọn ayipada ti olupilẹṣẹ ṣe si koodu naa. Awọn atunnkanka koodu aimi SonarQube ati JaCoCo ṣe iranlọwọ fun wa lati jẹ ki koodu wa di mimọ ati rii daju ipele ti o nilo ti agbegbe idanwo ẹyọkan. Gbogbo awọn iyipada si koodu gbọdọ lọ nipasẹ awọn sọwedowo wọnyi. Gbogbo awọn iwe afọwọkọ idanwo ti o ṣiṣẹ pẹlu ọwọ jẹ adaṣe ni atẹle.

Fun imuse aṣeyọri ti awọn ilana iṣowo nipasẹ “Marcus”, a ni lati yanju nọmba kan ti awọn iṣoro imọ-ẹrọ, nipa ọkọọkan ni ibere.

Iṣẹ-ṣiṣe 1. Awọn nilo fun petele scalability ti awọn eto

Lati yanju iṣoro yii, a yan ọna microservice si faaji. Ni akoko kanna, o ṣe pataki pupọ lati ni oye awọn agbegbe ti ojuse ti awọn iṣẹ naa. A gbiyanju lati pin wọn si awọn iṣẹ iṣowo, ni akiyesi awọn pato ti awọn ilana. Fun apẹẹrẹ, gbigba ni ile-itaja kii ṣe loorekoore, ṣugbọn iṣẹ ṣiṣe ti o tobi pupọ, lakoko eyiti o jẹ dandan lati yara gba lati ọdọ alaye olutọsọna ipinlẹ nipa awọn ẹya ti awọn ọja ti o gba, nọmba eyiti ninu ifijiṣẹ kan de ọdọ 600000. , ṣayẹwo gbigba gbigba ọja yii sinu ile itaja ati da gbogbo alaye pataki pada fun eto adaṣe ile ise. Ṣugbọn gbigbe lati awọn ile itaja ni kikankikan pupọ julọ, ṣugbọn ni akoko kanna n ṣiṣẹ pẹlu awọn iwọn kekere ti data.

A ṣe gbogbo awọn iṣẹ lori ipilẹ ti ko ni ipinlẹ ati paapaa gbiyanju lati pin awọn iṣẹ inu si awọn igbesẹ, ni lilo ohun ti a pe ni awọn koko-ọrọ ti ara ẹni Kafka. Eyi jẹ nigbati microservice kan fi ifiranṣẹ ranṣẹ si ararẹ, eyiti o fun ọ laaye lati ṣe iwọntunwọnsi fifuye lori awọn iṣẹ ṣiṣe aladanla awọn oluşewadi ati simplifies itọju ọja, ṣugbọn diẹ sii lori iyẹn nigbamii.

A pinnu lati ya awọn modulu fun ibaraenisepo pẹlu awọn eto ita si awọn iṣẹ lọtọ. Eyi jẹ ki o ṣee ṣe lati yanju iṣoro ti iyipada nigbagbogbo awọn API ti awọn ọna ita, pẹlu fere ko si ipa lori awọn iṣẹ pẹlu iṣẹ ṣiṣe iṣowo.

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Gbogbo awọn iṣẹ microservices ni a gbe lọ sinu iṣupọ OpenShift kan, eyiti o yanju mejeeji iṣoro ti iwọn iwọn microservice kọọkan ati gba wa laaye lati ma lo awọn irinṣẹ Awari Iṣẹ ẹnikẹta.

Iṣẹ-ṣiṣe 2. iwulo lati ṣetọju fifuye giga ati paṣipaarọ data aladanla pupọ laarin awọn iṣẹ pẹpẹ: Lakoko ipele ifilọlẹ ise agbese nikan, nipa awọn iṣẹ 600 fun iṣẹju kan ni a ṣe. A nireti pe iye yii yoo pọ si si 5000 ops / iṣẹju-aaya bi awọn ile-itaja soobu ṣe sopọ si pẹpẹ wa.

Iṣoro yii ni a yanju nipasẹ gbigbe iṣupọ Kafka kan ati pe o fẹrẹ fi kọ ibaraenisepo amuṣiṣẹpọ laarin awọn iṣẹ microservices Syeed. Eyi nilo itupalẹ iṣọra pupọ ti awọn ibeere eto, nitori kii ṣe gbogbo awọn iṣẹ ṣiṣe le jẹ asynchronous. Ni akoko kanna, a ko ṣe atagba awọn iṣẹlẹ nikan nipasẹ alagbata, ṣugbọn tun gbejade gbogbo alaye iṣowo ti o nilo ninu ifiranṣẹ naa. Nitorinaa, iwọn ifiranṣẹ le de ọdọ awọn ọgọọgọrun kilobytes. Iwọn iwọn ifiranṣẹ ni Kafka nilo wa lati ṣe asọtẹlẹ iwọn ifiranṣẹ deede, ati pe ti o ba jẹ dandan, a pin wọn, ṣugbọn pipin jẹ ọgbọn, ti o ni ibatan si awọn iṣẹ iṣowo.
Fun apẹẹrẹ, a pin awọn ẹru ti o de sinu ọkọ ayọkẹlẹ sinu awọn apoti. Fun awọn iṣẹ amuṣiṣẹpọ, awọn iṣẹ microservices lọtọ ti wa ni ipin ati pe a ṣe idanwo fifuye ni kikun. Lilo Kafka ṣe afihan wa pẹlu ipenija miiran - idanwo iṣiṣẹ ti iṣẹ wa ni akiyesi isọpọ Kafka jẹ ki gbogbo awọn idanwo ẹyọkan wa jẹ asynchronous. A yanju iṣoro yii nipa kikọ awọn ọna iwulo tiwa nipa lilo alagbata Kafka ti a fi sii. Eyi ko ṣe imukuro iwulo lati kọ awọn idanwo ẹyọkan fun awọn ọna kọọkan, ṣugbọn a fẹ lati ṣe idanwo awọn ọran eka nipa lilo Kafka.

Ọpọlọpọ akiyesi ni a san si wiwa awọn akọọlẹ ki TraceId wọn ko ni sọnu nigbati awọn imukuro ba waye lakoko iṣẹ awọn iṣẹ tabi nigba ṣiṣẹ pẹlu ipele Kafka. Ati pe ti ko ba si awọn ọran pataki pẹlu ọkan akọkọ, lẹhinna ninu ọran keji a fi agbara mu lati wọle gbogbo TraceIds ti ipele wa pẹlu yan ọkan lati tẹsiwaju wiwa kakiri. Lẹhinna, nigba wiwa nipasẹ TraceId atilẹba, olumulo yoo ni irọrun rii pẹlu eyiti wiwa ti tẹsiwaju.

Iṣẹ-ṣiṣe 3. iwulo lati ṣafipamọ iye nla ti data: Diẹ ẹ sii ju 1 bilionu aami fun odun fun taba nikan wa si X5. Wọn nilo iraye si igbagbogbo ati iyara. Lapapọ, eto naa gbọdọ ṣe ilana nipa awọn igbasilẹ biliọnu mẹwa 10 ti itan gbigbe ti awọn ọja ti o ni aami wọnyi.

Láti yanjú ìṣòro kẹta, a yan ibi ìpamọ́ data MongoDB NoSQL. A ní ìpín márùn-ún, àti ìpín kọ̀ọ̀kan ní Àtúnṣe Set ti àwọn olupin mẹ́ta. Èyí ń jẹ́ kí a lè ṣe ìwọ̀n sí ètò náà ní ìlà-ìlà nípa fífi kún un. awọn olupin tuntun sínú ìṣọ̀pọ̀ náà kí a sì rí i dájú pé ó ní ìfaradà àṣìṣe. Níbí, a rí ìṣòro mìíràn: rírí i dájú pé ìṣòwò wà nínú ìṣọ̀pọ̀ Mongo nígbà tí a ń lo àwọn iṣẹ́ kékeré tí a lè yípadà ní ìlà. Fún àpẹẹrẹ, ọ̀kan lára ​​​​àwọn iṣẹ́-ṣíṣe ètò wa ni láti ṣàwárí àwọn ìgbìyànjú láti ṣe àdàkọ àwọn ọjà pẹ̀lú àwọn kódì àmì kan náà. Èyí ń yọrí sí ìdàpọ̀ pẹ̀lú àwọn àyẹ̀wò tí kò tọ́ tàbí àwọn iṣẹ́ owó tí kò tọ́. A ṣàwárí pé irú àwọn àdàkọ bẹ́ẹ̀ lè ṣẹlẹ̀ láàrín ìṣọ̀pọ̀ Kafka kan ṣoṣo tí a ń ṣe àgbékalẹ̀ àti láàrín àwọn ìṣọ̀pọ̀ méjì tí ó jọra. Nítorí náà, ṣíṣàyẹ̀wò fún àwọn àdàkọ nípa ṣíṣe ìbéèrè lórí ibi ìpamọ́ dátà kò mú àbájáde wá. Fún iṣẹ́ kékeré kọ̀ọ̀kan, a yanjú ìṣòro náà lọ́tọ̀ọ̀tọ̀ ní ìbámu pẹ̀lú ọgbọ́n iṣẹ́ náà. Fún àpẹẹrẹ, fún àwọn ìwé ẹ̀rí, a fi àyẹ̀wò kún inú ìṣọ̀pọ̀ náà àti ṣíṣàtúnṣe ọ̀tọ̀ọ̀tọ̀ fún àwọn àdàkọ nígbà tí a bá fi sí i.

Lati rii daju pe iṣẹ awọn olumulo pẹlu itan-akọọlẹ awọn iṣẹ ko ni ipa ni eyikeyi ọna pataki julọ - iṣẹ ṣiṣe ti awọn ilana iṣowo wa, a ti yapa gbogbo data itan sinu iṣẹ lọtọ pẹlu ibi ipamọ data lọtọ, eyiti o tun gba alaye nipasẹ Kafka . Ni ọna yii, awọn olumulo n ṣiṣẹ pẹlu iṣẹ ti o ya sọtọ laisi ni ipa awọn iṣẹ ti o ṣe ilana data fun awọn iṣẹ ṣiṣe ti nlọ lọwọ.

Iṣẹ-ṣiṣe 4: Atunse isinyin ati abojuto:

Ninu awọn eto pinpin, awọn iṣoro ati awọn aṣiṣe yoo waye ni wiwa awọn data data, awọn ila, ati awọn orisun data ita. Ninu ọran ti Marcus, orisun ti iru awọn aṣiṣe jẹ iṣọpọ pẹlu awọn eto ita. O jẹ dandan lati wa ojutu kan ti yoo gba awọn ibeere leralera fun awọn idahun aṣiṣe pẹlu diẹ ninu akoko isọye, ṣugbọn ni akoko kanna ko da ṣiṣe awọn ibeere aṣeyọri ni isinyi akọkọ. Fun idi eyi, ohun ti a pe ni “atunyẹwo orisun koko” ti yan. Fun koko akọkọ kọọkan, ọkan tabi diẹ ẹ sii awọn koko-ọrọ tun gbiyanju ni a ṣẹda si eyiti awọn ifiranṣẹ aṣiṣe ti firanṣẹ ati ni akoko kanna idaduro ni ṣiṣiṣẹ awọn ifiranṣẹ lati koko-ọrọ akọkọ ti yọkuro. Ilana ibaraenisepo -

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Lati ṣe iru ero bẹ, a nilo atẹle yii: lati ṣepọ ojutu yii pẹlu Orisun omi ati yago fun ẹda koodu. Lakoko ti o n lọ kiri lori ayelujara, a wa iru ojutu kan ti o da lori Orisun omi BeanPostProccessor, ṣugbọn o dabi enipe ko wulo fun wa. Ẹgbẹ wa ti ṣe ojutu ti o rọrun ti o gba wa laaye lati ṣepọ sinu ọna orisun omi fun ṣiṣẹda awọn alabara ati afikun afikun Awọn onibara Tun gbiyanju. A funni ni apẹrẹ ti ojutu wa si ẹgbẹ Orisun omi, o le rii nibi. Nọmba ti Awọn onibara Tun gbiyanju ati nọmba awọn igbiyanju fun alabara kọọkan ni a tunto nipasẹ awọn ayeraye, da lori awọn iwulo ti ilana iṣowo, ati fun ohun gbogbo lati ṣiṣẹ, gbogbo ohun ti o ku ni lati ṣafikun annotation org.springframework.kafka.annotation.KafkaListener , eyi ti o jẹ faramọ si gbogbo Orisun omi Difelopa.

Ti ifiranṣẹ naa ko ba le ni ilọsiwaju lẹhin gbogbo awọn igbiyanju igbiyanju, o lọ si DLT (akọkọ lẹta ti o ku) ni lilo Orisun omi DeadLetterPublishingRecoverer. Ni ibeere ti atilẹyin, a faagun iṣẹ ṣiṣe yii ati ṣẹda iṣẹ lọtọ ti o fun ọ laaye lati wo awọn ifiranṣẹ ti o wa ninu DLT, stackTrace, traceId ati alaye to wulo miiran nipa wọn. Ni afikun, ibojuwo ati awọn itaniji ni a ṣafikun si gbogbo awọn koko-ọrọ DLT, ati ni bayi, ni otitọ, hihan ifiranṣẹ kan ninu koko DLT jẹ idi lati ṣe itupalẹ ati ṣatunṣe abawọn kan. Eyi jẹ irọrun pupọ - nipasẹ orukọ koko-ọrọ, a loye lẹsẹkẹsẹ ni igbesẹ ti ilana naa ni iṣoro naa dide, eyiti o ṣe iyara wiwa fun idi root rẹ.

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Laipẹ julọ, a ti ṣe imuse wiwo kan ti o fun ọ laaye lati firanṣẹ awọn ifiranṣẹ nipa lilo awọn ipa atilẹyin wa, lẹhin imukuro awọn okunfa wọn (fun apẹẹrẹ, mimu-pada sipo iṣẹ ṣiṣe ti eto ita) ati, nitorinaa, iṣeto abawọn ti o baamu fun itupalẹ. Eyi ni ibiti awọn koko-ọrọ ti ara ẹni wa ni ọwọ: ki o má ba tun bẹrẹ pq processing pipẹ, o le tun bẹrẹ lati igbesẹ ti o fẹ.

“Nrin ninu bata mi” - duro, ṣe wọn samisi bi?

Platform Isẹ

Syeed ti wa ni iṣẹ iṣelọpọ, lojoojumọ a ṣe awọn ifijiṣẹ ati awọn gbigbe, sopọ awọn ile-iṣẹ pinpin tuntun ati awọn ile itaja. Gẹgẹbi apakan ti awaoko, eto naa n ṣiṣẹ pẹlu awọn ẹgbẹ ọja “Taba” ati “Bata”.

Gbogbo ẹgbẹ wa ṣe alabapin ninu ṣiṣe awọn awakọ awakọ, ṣe itupalẹ awọn iṣoro ti n yọ jade ati ṣe awọn imọran fun ilọsiwaju ọja wa, lati ilọsiwaju awọn igbasilẹ si awọn ilana iyipada.

Ni ibere ki o má ba tun awọn aṣiṣe wa ṣe, gbogbo awọn ọran ti a rii lakoko awaoko jẹ afihan ni awọn idanwo adaṣe. Iwaju nọmba nla ti awọn adaṣe adaṣe ati awọn idanwo ẹyọ gba ọ laaye lati ṣe idanwo ipadasẹhin ati fi hotfix sori ẹrọ gangan laarin awọn wakati diẹ.

Bayi a tẹsiwaju lati dagbasoke ati ilọsiwaju pẹpẹ wa, ati nigbagbogbo koju awọn italaya tuntun. Ti o ba nifẹ, a yoo sọrọ nipa awọn ojutu wa ninu awọn nkan atẹle.

orisun: www.habr.com

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster