"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Nanomboka tamin'ny taona 2019, nanana lalàna momba ny fametahana marika i Rosia. Tsy mihatra amin'ny vondrona entana rehetra ny lalàna, ary tsy mitovy ny daty hampiharana ny fametahana tsy maintsy atao ho an'ny vondrona vokatra. Paraky, kiraro ary fanafody no voalohany iharan'ny fametahana tsy maintsy atao; ny vokatra hafa dia ampiana any aoriana, ohatra, menaka manitra, lamba ary ronono. Ity fanavaozana ara-dalàna ity dia nanosika ny famolavolana vahaolana IT vaovao izay ahafahana manara-maso ny rojom-piainan'ny vokatra iray manomboka amin'ny famokarana ka hatramin'ny fividianana ny mpanjifa farany, ho an'ny mpandray anjara rehetra amin'ny dingana: na ny fanjakana na ny fikambanana rehetra mivarotra entana fametahana tsy maintsy atao.

Ao amin'ny X5, ny rafitra izay hanara-maso ny entana voamarika sy ny fifanakalozana angona amin'ny fanjakana sy ny mpamatsy dia antsoina hoe "Marcus". Andeha holazainay aminao ny fomba sy iza no namolavola azy, inona ny fitambaran'ny teknolojia, ary nahoana isika no manana zavatra hireharehana.

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Tena HighLoad

"Marcus" dia mamaha olana maro, ny lehibe indrindra dia ny fifandraisana fampidirana eo amin'ny rafitra fampahalalana X5 sy ny rafitry ny fampahalalam-baovaom-panjakana ho an'ny vokatra voamarika (GIS MP) hanaraha-maso ny fihetsiky ny vokatra misy marika. Ny sehatra ihany koa dia mitahiry ny kaody fametahana rehetra voarainay sy ny tantara manontolo momba ny fivezivezen'ireo kaody ireo amin'ny zavatra, ary manampy amin'ny fanafoanana ny fanavaozana ny vokatra misy marika. Amin'ny fampiasana ny ohatra amin'ny vokatra paraky, izay tafiditra ao amin'ny vondrona voalohany amin'ny entana misy marika, sigara iray kamiao iray monja dia misy fonosana 600 000 eo ho eo, izay samy manana ny kaody manokana. Ary ny andraikitry ny rafitray dia ny manara-maso sy manamarina ny maha-ara-dalàna ny fihetsiky ny fonosana tsirairay toy izany eo anelanelan'ny trano fanatobiana entana sy fivarotana, ary amin'ny farany dia manamarina ny fanekena ny fivarotana azy ireo amin'ny mpividy farany. Ary mirakitra vola 125 eo ho eo isan'ora izahay, ary mila mirakitra an-tsoratra ihany koa ny fomba nidiran'ny fonosana tsirairay tao amin'ny fivarotana. Noho izany, raha jerena ny hetsika rehetra eo amin'ny zavatra, dia manantena firaketana an-tapitrisa tapitrisa isan-taona isika.

Ekipa M

Na dia heverina ho tetikasa ao anatin'ny X5 aza i Marcus, dia ampiharina amin'ny fomba fiasa amin'ny vokatra izany. Ny ekipa dia miasa araka ny Scrum. Nanomboka tamin'ny fahavaratra lasa teo ny tetikasa, fa tamin'ny volana oktobra ihany ny vokatra voalohany - tafavory tanteraka ny ekipanay, novolavolaina ny rafitra rafitra ary novidina ny fitaovana. Ankehitriny dia manana olona 16 ny ekipa, ka ny enina amin'izy ireo dia mandray anjara amin'ny fampandrosoana backend sy frontend, ny telo amin'izy ireo dia tafiditra amin'ny famakafakana ny rafitra. Olona enina hafa no mandray anjara amin'ny manual, enta-mavesatra, fitiliana mandeha ho azy ary fikojakojana ny vokatra. Ankoatr'izay dia manana manam-pahaizana manokana momba ny SRE izahay.

Tsy ny mpamorona ihany no manoratra kaody ao amin'ny ekipanay; saika ny lehilahy rehetra no mahay mandrindra sy manoratra autotest, mametaka script ary script automatique. Mandinika manokana an'izany izahay, satria na ny fanohanana vokatra aza dia mitaky automatique avo lenta. Miezaka foana izahay manoro hevitra sy manampy ireo mpiara-miasa izay mbola tsy nanao fandaharana teo aloha, ary manome asa kely ho azy ireo.

Noho ny areti-mifindra amin'ny coronavirus dia namindra ny ekipa manontolo ho any amin'ny asa lavitra izahay; ny fisian'ny fitaovana rehetra ho an'ny fitantanana ny fampandrosoana, ny workflow naorina ao Jira sy GitLab dia nahafahana nandalo tamin'ity dingana ity. Nasehon'ny volana lavitr'ezaka fa tsy niharatsy ny vokatra nataon'ny ekipa vokatr'izany; ho an'ny maro, nitombo ny fampiononana any am-piasana, ny hany tsy ampy dia ny fifandraisana mivantana.

Fihaonana ekipa lavitra

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Fivoriana mandritra ny asa lavitra

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Teknolojia stack ny vahaolana

Ny fitahirizana mahazatra sy fitaovana CI/CD ho an'ny X5 dia GitLab. Ampiasainay izy io amin'ny fitahirizana kaody, fitiliana mitohy, ary fametrahana ho an'ny mpizara fitsapana sy famokarana. Ampiasainay ihany koa ny fomba famerenana ny kaody, rehefa misy mpiara-miasa 2 farafahakeliny mila manaiky ny fanovana nataon'ny mpamorona ny kaody. Ny mpanadihady kaody static SonarQube sy JaCoCo dia manampy anay hihazona ny kaodinay ho madio ary hiantoka ny haavon'ny fandrakofana fitsapana unit. Ny fanovana rehetra amin'ny kaody dia tsy maintsy mandalo amin'ireo fanamarinana ireo. Ny sora-panadinana rehetra izay mandeha amin'ny tanana dia mandeha ho azy avy eo.

Ho an'ny fampiharana mahomby ny fizotran'ny raharaham-barotra nataon'i "Marcus", dia tsy maintsy namaha olana ara-teknolojia maromaro izahay, momba ny tsirairay.

Asa 1. Ny filàna marindrano scalability ny rafitra

Mba hamahana ity olana ity dia nisafidy fomba fiasa microservice amin'ny maritrano izahay. Nandritra izany fotoana izany dia tena zava-dehibe ny mahatakatra ny sehatry ny andraikitry ny serivisy. Niezaka izahay ny hizara azy ireo amin'ny asa fandraharahana, amin'ny fiheverana ny antsipiriany momba ny dingana. Ohatra, ny fanekena ao amin'ny trano fanatobiana entana dia tsy dia matetika loatra, fa tena goavana be, izay ilaina ny hahazoana haingana avy amin'ny mpandamina ny fanjakana ny fampahalalana momba ireo singa ekena, ny isan'izy ireo amin'ny fandefasana iray dia mahatratra 600000. , jereo ny fanekena ny fanekena ity vokatra ity ao amin'ny trano fanatobiana entana ary avereno ny fampahalalana rehetra ilaina amin'ny rafitra automatique trano fanatobiana entana. Saingy ny fandefasana entana avy amin'ny trano fanatobiana entana dia manana hery lehibe kokoa, fa miaraka amin'izay koa dia miasa miaraka amin'ny angon-drakitra kely.

Manatanteraka ny serivisy rehetra amin'ny sehatra tsy misy fanjakana izahay ary manandrana mizara ny hetsika anatiny ho dingana, amin'ny fampiasana ilay antsointsika hoe lohahevitra momba ny tena Kafka. Izany dia rehefa mandefa hafatra ho azy ny microservice iray, izay ahafahanao mandanjalanja ny enta-mavesatra amin'ny asa mavesa-danja kokoa ary manatsotra ny fikojakojana ny vokatra, fa bebe kokoa amin'izany any aoriana.

Nanapa-kevitra izahay ny hanasaraka ny maody ho an'ny fifandraisana amin'ny rafitra ivelany ho tolotra samihafa. Izany dia nahafahana namaha ny olan'ny fiovan'ny API matetika amin'ny rafitra ivelany, ary saika tsy misy fiantraikany amin'ny serivisy misy fiasa ara-barotra.

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Ny microservices rehetra dia napetraka ao anaty cluster OpenShift, izay mamaha ny olana amin'ny fampitomboana ny microservice tsirairay ary mamela antsika tsy hampiasa fitaovana Service Discovery avy amin'ny antoko fahatelo.

Asa 2. Ny filàna fitazonana enta-mavesatra be sy fifanakalozam-baovao mafonja eo amin'ny serivisy amin'ny sehatra: Mandritra ny dingana fanokafana ny tetikasa fotsiny dia 600 eo ho eo isan-tsegondra no atao. Manantena izahay fa hiakatra hatramin'ny 5000 ops/sec io sanda io rehefa mifandray amin'ny sehatra misy anay ny fivarotana varotra.

Ity olana ity dia voavaha tamin'ny alàlan'ny fametrahana cluster Kafka ary saika hialana tanteraka amin'ny fifandraisana mirindra eo amin'ny microservices amin'ny sehatra. Mitaky famakafakana tsara ny fepetra takian'ny rafitra izany, satria tsy ny asa rehetra no mety ho asynchronous. Mandritra izany fotoana izany, tsy mamindra hetsika amin'ny alàlan'ny broker ihany izahay, fa mampita ny fampahalalana momba ny raharaham-barotra rehetra amin'ny hafatra. Noho izany, ny haben'ny hafatra dia mety hahatratra kilobytes an-jatony. Ny fetran'ny haben'ny hafatra ao amin'ny Kafka dia mitaky antsika haminavina marina ny haben'ny hafatra, ary raha ilaina dia zarainay izy ireo, fa ny fizarana dia lojika, mifandraika amin'ny asa fandraharahana.
Zarainay anaty baoritra, ohatra, ny entana tonga ao anaty fiara. Ho an'ny asa synchronous dia omena microservices misaraka ary atao ny fitiliana entana feno. Ny fampiasana Kafka dia nanolotra fanamby iray hafa ho anay - ny fitiliana ny fampandehanan'ny serivisinay amin'ny fiheverana ny fampidirana Kafka dia mahatonga ny andranay rehetra ho asynchronous. Namaha ity olana ity izahay tamin'ny fanoratana ny fomba fampiasanay manokana amin'ny fampiasana Embedded Kafka Broker. Tsy manafoana ny filàna manoratra andrana ho an'ny fomba tsirairay izany, fa aleonay mitsapa tranga sarotra amin'ny fampiasana Kafka.

Nifantoka betsaka tamin'ny fanaraha-maso ny logs mba tsy ho very ny TraceId-ny rehefa misy ny maningana mandritra ny fampandehanan-draharaha na rehefa miasa miaraka amin'ny andiany Kafka. Ary raha tsy nisy olana manokana tamin'ny voalohany, dia amin'ny tranga faharoa dia voatery manoratra ny TraceId rehetra izay nisy ny andiany ary misafidy iray hanohizana ny fanaraha-maso. Avy eo, rehefa mikaroka amin'ny TraceId tany am-boalohany, dia ho hitan'ny mpampiasa mora foana ny nanohizan'ny trace.

Asa 3. Ilaina ny mitahiry angon-drakitra betsaka: Maherin'ny 1 lavitrisa marika isan-taona ho an'ny sigara fotsiny no tonga amin'ny X5. Mitaky fidirana tsy tapaka sy haingana izy ireo. Amin'ny fitambarany, ny rafitra dia tsy maintsy manao firaketana momba ny 10 lavitrisa momba ny tantaran'ny fihetsehan'ireo entana misy marika ireo.

Mba hamahana ny olana fahatelo dia nofidina ny angon-drakitra NoSQL MongoDB. Nanangana sombin-tsarimihetsika 5 izahay ary ny node tsirairay dia manana Replica Set an'ny mpizara 3. Izany dia ahafahanao manenjana ny rafitra mitsivalana, manampy mpizara vaovao amin'ny cluster, ary miantoka ny fandeferana ny fahadisoana. Eto izahay dia nisedra olana iray hafa - miantoka ny fifampiraharahana amin'ny kluster mongo, amin'ny fiheverana ny fampiasana microservices mitsivalana. Ohatra, ny iray amin'ireo andraikitry ny rafitray dia ny mamantatra ny fikasana hamidy indray ny vokatra miaraka amin'ny kaody fametahana marika mitovy. Eto, ny overlay dia miseho miaraka amin'ny scans diso na asa diso ataon'ny cashier. Hitanay fa ny dika mitovy toy izany dia mety hitranga ao anatin'ny andiany Kafka iray karakaraina, ary ao anatin'ny andiany roa karakaraina mifanitsy. Noho izany, ny fanamarinana ny dika mitovy amin'ny fangatahana ny angon-drakitra dia tsy nanome na inona na inona. Ho an'ny microservice tsirairay dia namaha ny olana misaraka izahay mifototra amin'ny lojika fandraharahana amin'ity serivisy ity. Ohatra, ho an'ny seky, dia nampiana taratasim-bola tao anaty batch sy fanodinana misaraka ho an'ny fisehon'ny dika mitovy rehefa mampiditra.

Mba hahazoana antoka fa ny asan'ny mpampiasa miaraka amin'ny tantaran'ny asa dia tsy misy fiantraikany amin'ny zava-dehibe indrindra - ny fampandehanana ny fizotran'ny raharaham-barotra, dia nanasaraka ny angona ara-tantara rehetra ho serivisy misaraka miaraka amin'ny angon-drakitra manokana, izay mandray vaovao amin'ny alàlan'ny Kafka ihany koa. . Amin'izany fomba izany, ny mpampiasa dia miara-miasa amin'ny serivisy mitoka-monina tsy misy fiantraikany amin'ny serivisy izay manodina angona ho an'ny asa mitohy.

Asa 4: Fanodinana sy fanaraha-maso ny filaharana:

Ao amin'ny rafitra mizara, tsy azo ihodivirana ny olana sy ny lesoka amin'ny fisian'ny angon-drakitra, filaharana ary loharano angon-drakitra ivelany. Raha ny momba an'i Marcus, ny loharanon'ny fahadisoana toy izany dia ny fampidirana ireo rafitra ivelany. Ilaina ny mitady vahaolana izay mamela ny fangatahana miverimberina ho an'ny valiny diso miaraka amin'ny fe-potoana voafaritra, fa miaraka amin'izay koa dia tsy mitsahatra ny fanodinana ny fangatahana mahomby amin'ny filaharana lehibe. Ho an'ity tanjona ity dia nofidiana ilay antsoina hoe "retry mifototra amin'ny lohahevitra". Ho an'ny lohahevitra fototra tsirairay dia misy lohahevitra iray na maromaro avereno atao izay handefasana hafatra diso ary miaraka amin'izay koa ny fahatarana amin'ny fanodinana hafatra avy amin'ny lohahevitra fototra. Rafitra fifandraisana -

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Mba hampiharana ny tetika toy izany dia mila ireto manaraka ireto izahay: hampiditra ity vahaolana ity amin'ny Lohataona ary hisorohana ny dika mitovy. Raha nitety ny tranokala izahay dia nahita vahaolana mitovy amin'izany mifototra amin'ny Spring BeanPostProccessor, saingy toa manahirana anay izany. Nanamboatra vahaolana tsotra kokoa ny ekipanay izay ahafahantsika miditra ao amin'ny tsingerin'ny Lohataona hamoronana mpanjifa ary ampio koa ny mpanjifa Avereno atao. Nanolotra prototype ny vahaolana ho an'ny ekipa Lohataona izahay, hitanao izany eto. Ny isan'ny Mpanjifa Andramo indray sy ny isan'ny andrana ho an'ny mpanjifa tsirairay dia amboarina amin'ny alàlan'ny masontsivana, miankina amin'ny filan'ny fizotran'ny fandraharahana, ary mba hahombiazan'ny zava-drehetra, ny hany sisa tavela dia ny manampy ny annotation org.springframework.kafka.annotation.KafkaListener , izay mahazatra ny mpamorona Lohataona rehetra.

Raha toa ka tsy azo karakaraina ilay hafatra rehefa avy nanandrana indray, dia mankany amin'ny DLT (lohahevitra maty taratasy) amin'ny fampiasana Spring DeadLetterPublishingRecoverer. Noho ny fangatahan'ny fanohanana dia nanitatra ity fampiasa ity izahay ary namorona serivisy mitokana izay ahafahanao mijery ireo hafatra tafiditra ao amin'ny DLT, stackTrace, traceId ary fampahalalana mahasoa hafa momba azy ireo. Ankoatra izany, ny fanaraha-maso sy ny fanairana dia nampiana ny lohahevitra DLT rehetra, ary ankehitriny, raha ny marina, ny fisehoan'ny hafatra amin'ny lohahevitra DLT dia antony iray handinihana sy hanitsiana ny lesoka. Tena mety izany - amin'ny anaran'ilay lohahevitra, takatsika avy hatrany hoe inona no dingana amin'ny fizotran'ny olana, izay manafaingana ny fitadiavana ny fotony.

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Vao haingana izahay dia nametraka interface tsara izay ahafahantsika mandefa hafatra amin'ny alàlan'ny fanohananay rehefa avy nanafoana ny anton'izy ireo (ohatra, mamerina ny fiasan'ny rafitra ivelany) ary mazava ho azy, mametraka ny lesoka mifanaraka amin'izany ho an'ny fanadihadiana. Eto no misy ny foto-kevitry ny tenantsika: mba tsy hamerenana ny rojo fanodinana lava dia azonao atao ny mamerina azy amin'ny dingana tianao.

"Mandeha amin'ny kiraroko" - andraso, voamarika ve izy ireo?

Fampandehanana ny sehatra

Efa ao anatin’ny asa mamokatra ny sehatra, isan’andro dia manao fanaterana sy fandefasana entana, mampifandray ivon-toerana sy fivarotana vaovao. Ao anatin'ny mpanamory, ny rafitra dia miara-miasa amin'ny vondrona vokatra "Paraky" sy "kiraro".

Ny ekipanay manontolo dia mandray anjara amin'ny fitarihana mpanamory, manadihady ireo olana mipoitra ary manolotra soso-kevitra hanatsarana ny vokatray, manomboka amin'ny fanatsarana ny logs ka hatramin'ny fanovana ny dingana.

Mba tsy hamerenana ny fahadisoantsika, ny tranga rehetra hita nandritra ny mpanamory dia hita taratra amin'ny fitsapana mandeha ho azy. Ny fisian'ny autotest sy ny andrana unit dia ahafahanao manao fitiliana regression ary mametraka hotfix ara-bakiteny ao anatin'ny ora vitsivitsy.

Ankehitriny dia manohy mampivelatra sy manatsara ny sehatray izahay, ary miatrika fanamby vaovao tsy tapaka. Raha liana ianao, dia hiresaka momba ny vahaolanay ao amin'ny lahatsoratra manaraka.

Source: www.habr.com

Add a comment