"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Ho tloha ka 2019, Russia e bile le molao mabapi le ho ngolisoa ho tlamang. Molao ha o sebetse ho lihlopha tsohle tsa thepa, 'me matsatsi a ho kena ts'ebetsong ea li-laible tse tlamang bakeng sa lihlopha tsa lihlahisoa a fapane. Koae, lieta le meriana e tla ba tsona tsa pele tse tlamang ho ngolisoa; lihlahisoa tse ling li tla eketsoa hamorao, mohlala, litlolo, masela le lebese. Tlhabollo ena ea molao e khothalelitse nts'etsopele ea litharollo tse ncha tsa IT tse tla etsa hore ho khonehe ho latela ketane ea bophelo bohle ba sehlahisoa ho tloha tlhahiso ho ea ho theko ea bareki ba ho qetela, ho barupeluoa bohle ts'ebetsong: mmuso ka boyona le mekhatlo eohle e rekisang thepa ka thepa. ho ngola ka tlamo.

Ho X5, sistimi e tla sala morao thepa e ngolisitsoeng le ho fapanyetsana data le mmuso le barekisi e bitsoa "Marcus". Ha re u joetse ka tatellano hore na e ntlafalitsoe joang le hore na ke mang ea e ntlafalitseng, hore na tekhenoloji ea eona ke eng, le hore na ke hobaneng ha re na le seo re lokelang ho ba motlotlo ka sona.

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

'Nete e Phahameng

"Marcus" e rarolla mathata a mangata, e ka sehloohong ke tšebelisano-'moho pakeng tsa mekhoa ea tlhahisoleseding ea X5 le tsamaiso ea boitsebiso ba naha bakeng sa lihlahisoa tse ngotsoeng (GIS MP) ho latela motsamao oa lihlahisoa tse ngotsoeng. Sethala se boetse se boloka likhoutu tsohle tse ngolisitsoeng tse amohetsoeng ke rona le nalane eohle ea motsamao oa likhoutu tsena ho pholletsa le lintho, 'me se thusa ho felisa ho hlophisoa bocha ha lihlahisoa tse ngolisitsoeng. Ho sebelisoa mohlala oa lihlahisoa tsa koae, tse neng li kenyelelitsoe lihlopheng tsa pele tsa thepa e ngotsoeng, teraka e le ’ngoe feela e tletseng lisakerete e na le lipakete tse ka bang 600 000, tseo e ’ngoe le e ’ngoe ea tsona e nang le khoutu ea eona e ikhethang. 'Me mosebetsi oa tsamaiso ea rona ke ho lekola le ho netefatsa bonnete ba motsamao oa pakete e' ngoe le e 'ngoe e joalo lipakeng tsa matlo a polokelo le mabenkele, mme qetellong e netefatse ho amoheloa ha thekiso ea bona ho moreki oa ho qetela. 'Me re rekota chelete e ka bang 125 ka hora, hape re hloka ho tlaleha hore na pakete e' ngoe le e 'ngoe e joalo e kene joang ka lebenkeleng. Kahoo, ho ela hloko metsamao eohle lipakeng tsa lintho, re lebelletse lirekoto tse mashome a libilione ka selemo.

Sehlopha sa M

Leha taba ea hore Marcus e nkuoa e le projeke ka har'a X5, e ntse e kengoa ts'ebetsong ka mokhoa oa sehlahisoa. Sehlopha se sebetsa ho latela Scrum. Morero o qalile lehlabuleng le fetileng, empa liphello tsa pele li ile tsa tla feela ka October - sehlopha sa rona se ne se bokane ka ho feletseng, mohaho oa tsamaiso o ile oa ntlafatsoa 'me thepa ea rekoa. Hona joale sehlopha se na le batho ba 16, ba tšeletseng ba bona ba amehang ho nts'etsopele ea backend le frontend, bao ba bararo ba bona ba kenang tlhahlobo ea tsamaiso. Batho ba bang ba ts'eletseng ba kentse letsoho tšebetsong ea matsoho, ea mojaro, ea boiketsetso, le tlhokomelong ea lihlahisoa. Ho feta moo, re na le setsebi sa SRE.

Ha se batho ba ntlafatsang feela ba ngolang khoutu sehlopheng sa rona; hoo e batlang e le bashanyana bohle ba tseba ho hlophisa le ho ngola li-autotest, li-script tsa ho jarolla le lingoloa tsa boiketsetso. Re ela hloko ka ho khetheha ho sena, kaha esita le tšehetso ea lihlahisoa e hloka boemo bo phahameng ba ho iketsetsa lintho. Kamehla re leka ho eletsa le ho thusa basebetsi-'moho le bona ba e-s'o ka ba etsa mananeo pele, le ho ba fa mesebetsi e menyenyane eo ba lokelang ho e sebetsa.

Ka lebaka la seoa sa coronavirus, re fetisitse sehlopha sohle mosebetsing o hole; ho fumaneha ha lisebelisoa tsohle tsa taolo ea nts'etsopele, ts'ebetso e hahiloeng Jira le GitLab e entse hore ho khonehe ho feta sethaleng sena habonolo. Likhoeli tse sebelisitsoeng hole li bontšitse hore tlhahiso ea sehlopha ha ea ka ea senyeha ka lebaka leo; ho ba bangata, matšeliso mosebetsing a ile a eketseha, ntho feela e haellang e ne e le puisano e phelang.

Seboka sa sehlopha se hole

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Liboka nakong ea mosebetsi o ka thōko

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Thekenoloji stack ea tharollo

Sebaka sa polokelo se tloaelehileng le sesebelisoa sa CI/CD sa X5 ke GitLab. Re e sebelisa bakeng sa polokelo ea khoutu, tlhahlobo e tsoelang pele, le ho e fetisetsa ho li-server tsa liteko le tsa tlhahiso. Re boetse re sebelisa mokhoa oa ho hlahloba khoutu, ha bonyane basebetsi-'moho le 2 ba hloka ho amohela liphetoho tse entsoeng ke moqapi ho khoutu. Bahlahlobisisi ba khoutu e tsitsitseng SonarQube le JaCoCo ba re thusa ho boloka khoutu ea rona e hloekile le ho netefatsa boemo bo hlokahalang ba tlhahlobo ea yuniti. Liphetoho tsohle tsa khoutu li tlameha ho feta licheke tsena. Lingoliloeng tsohle tsa liteko tse tsamaisoang ka letsoho li tla etsoa ka tsela e iketsang.

Bakeng sa ts'ebetsong e atlehileng ea mekhoa ea khoebo ka "Marcus", re ile ra tlameha ho rarolla mathata a mangata a theknoloji, ka 'ngoe ka tatellano.

Mosebetsi oa 1. Tlhokahalo ea scalability e otlolohileng ea sistimi

Ho rarolla bothata bona, re khethile mokhoa oa microservice oa meralo. Ka nako e ts'oanang, ho ne ho le bohlokoa haholo ho utloisisa likarolo tsa boikarabello ba litšebeletso. Re ile ra leka ho li arola ka ts'ebetso ea khoebo, re ela hloko lintlha tse tobileng tsa mekhoa. Ka mohlala, ho amoheloa ntlong ea polokelo ha se ntho e tloaelehileng haholo, empa e le ts'ebetso e kholo haholo, eo ka nako eo ho hlokahalang ho fumana kapele ho tsoa ho molaoli oa naha tlhahisoleseding e mabapi le likarolo tsa thepa e amoheloang, palo ea eona ho pepa e le 'ngoe e fihlang ho 600000. , hlahloba tumello ea ho amohela sehlahisoa sena ka tlung ea polokelo 'me u khutlisetse boitsebiso bohle bo hlokahalang bakeng sa tsamaiso ea ho iketsetsa thepa ea polokelo. Empa thomello e tsoang matlong a polokelo e na le matla a maholo haholo, empa ka nako e ts'oanang e sebetsa ka bongata bo nyane ba data.

Re kenya tšebetsong lits'ebeletso tsohle ka mokhoa o se nang naha mme re bile re leka ho arola ts'ebetso ea kahare ka mehato, re sebelisa seo re se bitsang Kafka self-topics. Sena ke ha microservice e romella molaetsa ho eona, e leng se u lumellang ho leka-lekanya mojaro oa ts'ebetso e matla haholo ea lisebelisoa le ho nolofatsa tlhokomelo ea lihlahisoa, empa ho feta moo hamorao.

Re ile ra etsa qeto ea ho arola li-module bakeng sa ho sebelisana le litsamaiso tsa kantle ho litšebeletso tse arohaneng. Sena se ile sa etsa hore ho khonehe ho rarolla bothata ba ho fetola hangata li-API tsa litsamaiso tsa kantle, ho se na tšusumetso ho lits'ebeletso tse nang le ts'ebetso ea khoebo.

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Li-microservices tsohle li kentsoe ka har'a sehlopha sa OpenShift, se rarollang bothata ka bobeli ba ho lekanya microservice e 'ngoe le e' ngoe 'me se re lumella hore re se ke ra sebelisa lisebelisoa tsa batho ba boraro tsa Discovery Service.

Mosebetsi oa 2. Tlhokahalo ea ho boloka mojaro o phahameng le phapanyetsano e matla haholo ea data lipakeng tsa lits'ebeletso tsa sethala: Nakong ea mohato oa ho qala morero feela, ho etsoa mesebetsi e ka bang 600 ka motsotsoana. Re lebelletse hore boleng bona bo tla nyolohela ho 5000 ops/sec ha mabenkele a hokela sethaleng sa rona.

Bothata bona bo ile ba rarolloa ka ho tsamaisa sehlopha sa Kafka 'me hoo e ka bang ho tlohela ka ho feletseng ho sebelisana ha synchronous pakeng tsa microservices ea sethaleng. Sena se hloka tlhahlobo e hlokolosi ea litlhoko tsa sistimi, kaha ha se lits'ebetso tsohle tse ka bang tsa asynchronous. Ka nako e ts'oanang, ha re fetise liketsahalo feela ka broker, empa hape re fetisetsa tlhahisoleseding eohle e hlokahalang ea khoebo molaetsa. Kahoo, boholo ba molaetsa bo ka fihla li-kilobytes tse makholo a 'maloa. Moeli oa boholo ba molaetsa ka Kafka o hloka hore re bolele esale pele boholo ba molaetsa ka nepo, 'me haeba ho hlokahala, rea ba arola, empa karohano e utloahala, e amanang le ts'ebetso ea khoebo.
Ka mohlala, re arola thepa e fihlang ka koloi ka mabokoseng. Bakeng sa ts'ebetso ea synchronous, li-microservices tse arohaneng li abeloa 'me ho etsoa tlhahlobo e felletseng ea mojaro. Ho sebelisa Kafka ho re file phephetso e 'ngoe - ho leka ts'ebetso ea ts'ebeletso ea rona ho ela hloko ho kopanngoa ha Kafka ho etsa hore liteko tsohle tsa rona li se ke tsa lumellana. Re rarolle bothata bona ka ho ngola mekhoa ea rona ea ts'ebeliso re sebelisa Embedded Kafka Broker. Sena ha se felise tlhoko ea ho ngola liteko tsa yuniti bakeng sa mekhoa ea motho ka mong, empa re khetha ho leka linyeoe tse thata re sebelisa Kafka.

Ho ile ha lebisoa tlhokomelo e ngata tabeng ea ho latela lits'oants'o e le hore TraceId ea bona e se ke ea lahleha ha mekhelo e etsahala nakong ea ts'ebetso ea lits'ebeletso kapa ha e sebetsa le sehlopha sa Kafka. 'Me haeba ho ne ho se na mathata a khethehileng ka ea pele, joale tabeng ea bobeli re qobelloa ho ngolisa li-TraceIds tsohle tseo sehlopha se tlileng le tsona ebe re khetha e le' ngoe ho tsoela pele ho latela. Joale, ha u batla ka TraceId ea mantlha, mosebelisi o tla fumana habonolo hore na ho ts'oara ho tsoetse pele ka eng.

Mosebetsi oa 3. Tlhokahalo ea ho boloka palo e kholo ea data: Li-label tse fetang bilione ka selemo bakeng sa koae feela li tla ho X1. Li hloka phihlello ea kamehla le kapele. Ka kakaretso, sistimi e tlameha ho sebetsana le lirekoto tse ka bang limilione tse likete tse 5 tsa nalane ea motsamao oa thepa ena e ngotsoeng.

Ho rarolla bothata ba boraro, ho ile ha khethoa database ea NoSQL MongoDB. Re hahile shard ea li-node tse 5 mme node ka 'ngoe e na le Replica Set ea li-server tse 3. Sena se o lumella ho lekanya sistimi ka mokhoa o otlolohileng, ho eketsa li-server tse ncha sehlopheng, le ho netefatsa mamello ea eona ea liphoso. Mona re ile ra kopana le bothata bo bong - ho netefatsa ts'ebetso ho sehlopha sa mongo, ho nahanoa ka ts'ebeliso ea li-microservices tse otlolohileng. Mohlala, o mong oa mesebetsi ea sistimi ea rona ke ho tsebahatsa liteko tsa ho rekisa hape lihlahisoa tse nang le likhoutu tse tšoanang. Mona, likoahelo li hlaha ka likhechana tse fosahetseng kapa ts'ebetso e fosahetseng ea batho ba kenyang chelete. Re fumane hore likopi tse joalo li ka etsahala ka har'a sehlopha se le seng sa Kafka se ntseng se sebetsoa, ​​'me ka har'a lihlopha tse peli li ntse li sebetsoa ka ho tšoana. Kahoo, ho hlahloba likopi ka ho botsa database ha hoa fana ka letho. Bakeng sa microservice ka 'ngoe, re rarolle bothata ka thoko ho latela mohopolo oa khoebo oa ts'ebeletso ena. Mohlala, bakeng sa licheke, re kentse cheke ka har'a batch le ts'ebetso e arohaneng bakeng sa ponahalo ea likopi ha re kenya.

Ho etsa bonnete ba hore mosebetsi oa basebelisi le histori ea ts'ebetso ha o ame ka tsela leha e le efe ntho ea bohlokoa ka ho fetisisa - ts'ebetso ea mekhoa ea rona ea khoebo, re arolelitse data eohle ea histori ka tšebeletso e arohaneng le database e arohaneng, eo hape e fumanang boitsebiso ka Kafka. . Ka tsela ena, basebelisi ba sebetsa ka ts'ebeletso e ikhethileng ntle le ho ama lits'ebeletso tse sebetsanang le data bakeng sa ts'ebetso e tsoelang pele.

Mosebetsi oa 4: Etsa lethathamo la ho sebetsa hape le ho beha leihlo:

Litsamaisong tse ajoang, mathata le liphoso li hlaha ka mokhoa o ke keng oa qojoa mabapi le ho fumaneha ha li-database, mela le mehloli ea data e kantle. Tabeng ea Marcus, mohloli oa liphoso tse joalo ke ho kopanya le mekhoa ea ka ntle. Ho ne ho hlokahala ho fumana tharollo e tla lumella likōpo tse pheta-phetoang bakeng sa likarabo tse fosahetseng ka nako e itseng e behiloeng, empa ka nako e ts'oanang u se ke ua emisa ho sebetsana le likopo tse atlehileng moleng o ka sehloohong. Bakeng sa morero ona, ho ile ha khethoa seo ho thoeng ke "topic based try". Bakeng sa sehlooho se seng le se seng sa sehlooho, ho bōptjoa sehlooho se le seng kapa tse ngata tse lekang hape tseo melaetsa e fosahetseng e romelloang ho tsona 'me ka nako e ts'oanang ho lieha ho sebetsana le melaetsa e tsoang sehloohong se seholo ho tlosoa. Sekema sa likamano -

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Ho kenya ts'ebetsong morero o joalo, re ne re hloka tse latelang: ho kopanya tharollo ena le Spring le ho qoba ho pheta-pheta khoutu. Ha re ntse re phetla marang-rang, re ile ra fumana tharollo e tšoanang e thehiloeng ho Spring BeanPostProccessor, empa e ne e bonahala e le boima ho sa hlokahale ho rona. Sehlopha sa rona se entse tharollo e bonolo haholoanyane e re lumellang ho ikamahanya le nako ea Selemo bakeng sa ho theha bareki le ho eketsa Leka Basebelisi. Re fane ka mohlala oa tharollo ea rona ho sehlopha sa Spring, u ka e bona mona. Palo ea Basebelisi ba Leka hape le palo ea liteko bakeng sa moreki e mong le e mong li lokisoa ka mekhahlelo, ho latela litlhoko tsa ts'ebetso ea khoebo, le hore ntho e 'ngoe le e' ngoe e sebetse, ho setseng ke ho eketsa tlhaloso org.springframework.kafka.annotation.KafkaListener , e tsebahalang ho bohle ba ntlafatsang Selemo.

Haeba molaetsa o ne o sa khone ho sebetsoa ka mor'a liteko tsohle tsa ho leka hape, o ea ho DLT (sehlooho sa lengolo le shoeleng) ho sebelisoa Spring DeadLetterPublishingRecoverer. Ka kopo ea tšehetso, re atolositse ts'ebetso ena mme ra theha ts'ebeletso e fapaneng e u lumellang ho bona melaetsa e kenyellelitsoeng ho DLT, stackTrace, traceId le lintlha tse ling tsa bohlokoa ka tsona. Ho phaella moo, tlhokomelo le litlhokomeliso li ile tsa kenngoa lihloohong tsohle tsa DLT, 'me hona joale, ha e le hantle, ponahalo ea molaetsa sehloohong sa DLT ke lebaka la ho hlahloba le ho lokisa phoso. Sena se loketse haholo - ka lebitso la sehlooho, hang-hang re utloisisa hore na bothata bo hlahile mohato ofe oa ts'ebetso, e leng ho potlakisang ho batla sesosa sa eona.

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Haufinyane tjena, re kentse tšebetsong sebopeho se re lumellang ho romella melaetsa ka ts'ehetso ea rona kamora ho felisa lisosa tsa bona (mohlala, ho khutlisa ts'ebetso ea sistimi ea kantle) mme, ehlile, ho theha sekoli se ts'oanang bakeng sa tlhahlobo. Mona ke moo lihlooho tsa rona tsa botho li tlang hantle: e le hore u se ke ua qala hape ketane e telele ea ho sebetsa, u ka e qala hape ho tloha mohato o lakatsehang.

"Ho tsamaea lieta tsa ka" - ema, na li tšoailoe?

Ts'ebetso ea Sethala

Sethala se se se ntse se sebetsa hantle, letsatsi le leng le le leng re tsamaisa thepa le thepa, re hokahanya litsi tse ncha tsa kabo le mabenkele. E le karolo ea mofofisi, tsamaiso e sebetsa le lihlopha tsa lihlahisoa tsa "Koae" le "Shoes".

Sehlopha sa rona kaofela se kenya letsoho ho tsamaiseng bafofisi ba lifofane, se sekaseka mathata a hlahang le ho etsa litlhahiso tsa ho ntlafatsa sehlahisoa sa rona, ho tloha ho ntlafatsa lits'oants'o ho isa lits'ebetsong tse fetohang.

E le hore re se ke ra pheta liphoso tsa rona, linyeoe tsohle tse fumanoang nakong ea sefofane li bontšoa litekong tse ikemetseng. Ho ba teng ha palo e kholo ea li-autotest le liteko tsa yuniti ho u lumella ho etsa tlhahlobo ea khatello ea maikutlo le ho kenya hotfix ka hare ho lihora tse 'maloa.

Hona joale re tsoela pele ho ntlafatsa le ho ntlafatsa sethala sa rona, 'me re lula re tobana le mathata a macha. Haeba u thahasella, re tla bua ka tharollo ea rona lihloohong tse latelang.

Source: www.habr.com

Eketsa ka tlhaloso