Mis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustes

Tere!

Minu nimi on Mihhail, ma olen IT alal asekohtunik ettevĂ”ttes „Sportmaster”. Soovin jagada lugu, kuidas me toime tulime raskustega, mis tekkisid pandeemia ajal.

Uute olude esimestel pĂ€evadel peatus Sportmasteri traditsiooniline jaemĂŒĂŒk, samas kui meie veebikanali koormus, eriti kliendile kohaletoimetamise osas, suurenes 10 korda. MĂ”ne nĂ€dalaga muutsime meie tohutu offline-Ă€ri online-Ă€ri ja kohandasime teenust klientide vajadustega.

Tegelikult see, mis oli meie kÔrvaltegevus, muutus peamiseks Àritegevuseks. Iga veebitellimuse tÀhtsus suurenes ÀÀrmuslikult. Igast rublast, mille klient firmasse tÔi, tuli kinni hoida. 

Mis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustes

Klienditaotluste kiireks töötlemiseks avasime ettevÔtte peahoones tÀiendava kontaktkeskuse, mis vÔimaldab meil vastu vÔtta umbes 285 000 kÔnet nÀdalas. Samuti muutsime 270 poodi uue kontaktivaba ja ohutu töövormi, mis vÔimaldas klientidel tellimusi saada ning töötajatel oma töökohti hoida.

Transformatsiooni kÀigus seisime silmitsi kahe peamise probleemiga. Esiteks, meie veebiteenuste koormus kasvas oluliselt (kuidas me sellega hakkama saime, rÀÀgib Sergei). Teiseks, haruldaste (enne COVID-i) tehingute arv kasvas mÀrgatavalt, mis omakorda nÔudis kiiret automatiseerimist. Selle probleemi lahendamiseks pidime kiiresti suunama ressursse varasemalt peamistelt suundadelt. Kuidas me sellega toime tulime, rÀÀgib Elena.

Veebiteenuste kasutamine

Kolesnikov Sergei, vastutab e-poe ja mikroteenuste haldamise eest

Alates hetkest, mil meie jaemĂŒĂŒgipoed suleti kĂŒlastajatele, hakkasime mĂ€rkama selliste nĂ€itajate kasvu nagu kasutajate arv, meie rakenduses tehtud tellimuste arv ning rakenduste pĂ€ringute arv. 

Mis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustesTellimuste arv 18. kuni 31. mĂ€rtsiniMis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustesPĂ€ringute arv veebimaksete mikroteenusteleMis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustesVeebilehel vormistatud tellimuste arv

Esimesel graafikul nĂ€eme, et kasv oli umbes 14 korda, teisel — 4 korda. KĂ”ige vĂ€ljakutsuvamaks peame meie rakenduste vastuse aegade mÔÔdikut. 

Mis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustes

Sellel graafikul nÀeme frontide ja rakenduste vastuseid, ning oleme jÀreldanud, et mingit mÀrkimisvÀÀrset kasvu me ei mÀrganud.

Esiteks on see seotud sellega, et alustasime eeltöödega 2019. aasta lĂ”pus. Praegu on meie teenused reserveeritud, tagatud on talitluspidevuse taseme saavutamine fĂŒĂŒsilistel serveritel, virtualiseerimise sĂŒsteemidel, konteineritel ja teenustel nende sees. Samuti vĂ”imaldab meie serveriteressursside maht taluda korduvat koormust.

Peamine tööriist, mis aitas meid kogu selle olukorra juures, on meie jĂ€lgimissĂŒsteem. TĂ”si, veel hiljuti polnud meil ĂŒhtset sĂŒsteemi, mis vĂ”imaldaks koguda mÔÔdikuid kĂ”igilt kihtidelt, alates fĂŒĂŒsilise riistvara ja seadmete tasemest kuni Ă€rimÔÔdikuteni. 

Formaalselt oli ettevĂ”ttes seire olemas, kuid enamasti oli see hajutatud ning kuulus konkreetsete osakondade vastutusele. Tegelikult, kui juhtus mĂ”ni intsident, oli meil peaaegu kunagi ĂŒhtset arusaama selle kohta, mis tĂ€pselt juhtus, ei olnud teavitamist, ning see viis sageli ringi jooksmiseni probleemi leidmiseks ja lokaliseerimiseks selle edasisteks lahendamiseks.

MĂ”nes etapis mĂ”tlesime, et piisab, ja otsustasime, et vajame ĂŒhtset sĂŒsteemi, et nĂ€ha kogu pilti tervikuna. Meie tehnoloogiate peamine killustik sisaldab Zabbixi, mis on alarmide ja mÔÔdikute salvestamise keskus, Prometheust rakenduste mÔÔdikute kogumiseks ja salvestamiseks, Stack ELK logimise ja kogu seireandmete salvestamiseks, samuti Grafanat visualiseerimiseks, Swaggerit, Dockerit ja muid kasulikke ning tuttavaid vahendeid.

Kasutame mitte ainult turul olemasolevaid tehnoloogiaid, vaid arendame ka mĂ”ned ise. NĂ€iteks loome teenuseid sĂŒsteemide omavaheliseks integreerimiseks, see tĂ€hendab mingit API-d mÔÔdikute kogumiseks. Lisaks töötame vĂ€lja oma jĂ€lgimissĂŒsteeme — Ă€ri mÔÔdikute tasandil kasutame UI-testimist. Ja ka Telegramis bot, et meeskondi teavitada.

Ja veel pĂŒĂŒame muuta jĂ€lgimissĂŒsteemi meeskondadele kergesti kĂ€ttesaadavaks, et nad saaksid ise oma mÔÔdikuid salvestada ja nendega töötada, sealhulgas seadistada hĂ€ireid kitsastes mÔÔdikutel, millel pole laiemat kasutust. 

Kogu sĂŒsteemi piires pĂŒĂŒdleme me proaktiivsuse ja vĂ”imalikult kiire intsidendi lokaliseerimise poole. Lisaks on meie mikroteenuste ja sĂŒsteemide arv viimastel aegadel oluliselt kasvanud, mistĂ”ttu suureneb ka integratsioonide hulk. Intsidendi diagnostika protsessi optimeerimise raames arendame sĂŒsteemi, mis vĂ”imaldab teha rist-sĂŒsteemseid kontrollimisi ja esitada tulemusi, aidates leida peamised probleemid, mis on seotud impordiga ja sĂŒsteemide omavahelise interaktsiooniga. 

Muidugi on meil veel palju arenguruumi sĂŒsteemide ekspluateerimise valdkonnas, ja me töötame selle nimel aktiivselt. Rohkem teavet meie jĂ€lgimissĂŒsteemi kohta leiate siit. 

Tehnilised katsed 

Sergei Orlov, juhib veeb- ja mobiiliarenduse kompetentsikeskust

Alates fĂŒĂŒsiliste kaupluste sulgemisest oleme pidanud silmitsi seisma erinevate arenduslikke proovikivide ja raskustega. Esiteks, koormuse tĂ”us kui selline. On selge, et kui ei vĂ”eta tarvitusele meetmeid, vĂ”ib sĂŒsteem suurt koormust taluda pĂŒĂŒdes kurva plahvatusega kĂ”rvitsaks muutuda, kas tĂ€ielikult jĂ”udluse kaotada vĂ”i isegi tĂ€iesti töövĂ”imetuks muutuda.

Teine aspekt, mis on veidi vĂ€hem ilmne, seisneb selles, et kĂ”rge koormusega sĂŒsteemi tuli vĂ€ga kiiresti muuta, kohanedes Ă€riprotsesside muutustega. MĂ”nikord mitu korda pĂ€evas. paljudes ettevĂ”tetes on reegel, et suurte turundustegevuste ajal ei tohiks sĂŒsteemi mingeid muudatusi teha. Üldse mitte, las see töötab, kui see töötab.

Meil oli aga sisuliselt lĂ”putu must reede, mille kĂ€igus tuli sĂŒsteemi muuta. Ja iga viga, probleem vĂ”i sĂŒsteemi tĂ”rge oleks Ă€ridele vĂ€ga kulukas.

Koheselt ĂŒtlen, et me suutsime nende katsumustega toime tulla, kĂ”ik sĂŒsteemid talusid koormust, skaleerusid hĂ”lpsasti ning tĂ”siseid tehnilisi tĂ”rkeid meil ei olnud.

On neli peamist alust, millele toetub sĂŒsteemi vĂ”ime taluda kĂ”rgeid jĂ€rske koormusi. Esimene neist on jĂ€lgimine, millest olete varem lugenud. Ilma korraliku jĂ€lgimissĂŒsteemita on sĂŒsteemi kitsaskohtade leidmine pea vĂ”imatu. Hea jĂ€lgimissĂŒsteem on nagu kodu riided — see peab olema mugav ja teile sobiv.

Teine aspekt on testimine. Me vĂ”tame seda teemat vĂ€ga tĂ”siselt: kirjutame klassikalisi ĂŒksuste, integratsiooni ja koormusteste ning palju muud igas sĂŒsteemis. Me koostame ka testimisstrateegia ja pĂŒĂŒame viia testimise taseme selliseks, et me ei peaks enam kĂ€sitsi kontrollimisi tegema.

Kolmas vaal on CI/CD Pipeline. Rakenduse saate-, testimis- ja juurutamisprotsessid peavad olema vĂ”imalikult automatiseeritud, kĂ€sitsi sekkumisi ei tohi olla. CI/CD Pipeline teema on piisavalt sĂŒgav ja ma puudutan seda vaid kergelt. Tuleb mainida, et meil on CI/CD Pipeline'i kontrollnimekiri, mille alusel lĂ€bib iga toote meeskond kompetentsikeskuste abiga.

Mis aitas meil kiiresti ĂŒle minna online-mĂŒĂŒgile uutes tingimustesSiin on kontrollnimekiri

Nii saavutatakse palju eesmĂ€rke. See hĂ”lmab API versioneerimist ja funktsioonide lĂŒlitamist, et vĂ€ltida versioonide ‘rongi’, samuti erinevate testide katmise saavutamist sellisel tasemel, et testimine oleks tĂ€ielikult automatiseeritud, juurutamine oleks sujuv jne.

Neljas vaal on arhitektuuri pÔhimÔtted ja tehnilised lahendused. Arhitektuurist saab rÀÀkida palju ja pikka aega, kuid soovin rÔhutada paari pÔhimÔtet, millele soovin tÀhelepanu juhtida.

Esiteks tuleb valida spetsialiseeritud tööriistad konkreetsete ĂŒlesannete jaoks. Jah, see kĂ”lab iseenesestmĂ”istetavalt, ja on selge, et naela tuleks taguda haamriga, samas kui kĂ€ekellade demonteerimiseks tuleks kasutada spetsiaalseid kruvikeerajaid. Kuid meie ajastul pĂŒĂŒavad paljud tööriistad universaliseeruda, et katta maksimaalne kasutajasegment: andmebaasid, vahemĂ€lud, raamistikud ja muu. NĂ€iteks, kui vĂ”tta andmebaas MongoDB, siis see toetab mitmeid dokumentide tehinguid, samas kui andmebaas Oracle toetab JSON-e. Ja nĂ€iliselt vĂ”iks öelda, et kĂ”ike vĂ”ib kasutada igaks otstarbeks. Kuid kui me rÀÀgime efektiivsusest, peame selgelt mĂ”istma iga tööriista tugevusi ja nĂ”rkusi ning kasutama neid vastavalt meie ĂŒlesannetele. 

Teiseks, sĂŒsteemide projekteerimisel peab iga keerukuse tĂ”us olema pĂ”hjendatud. Me peame seda pidevalt meeles pidama, madala seotuse pĂ”himĂ”te on kĂ”igile teada. Ma arvan, et seda tuleks kasutada nii konkreetse teenuse tasandil kui ka kogu sĂŒsteemi ja arhitektuuri maastiku tasandil. Samuti on oluline, et iga sĂŒsteemi komponent suudaks koormuse korral horisontaalselt skaleeruda. Kui see vĂ”ime on olemas, ei ole skaleerimine mingisugune probleem.

Kui rÀÀkida tehnilistest lahendustest, palusime tootegruppidel valmistada ette vÀrskendatud soovituste, ideede ja lahenduste kogum, mida nad on ellu viinud ettevalmistustes jÀrgmise koormuse laineks.

VahemÀlud

Kohalike ja jaotatud vahemĂ€lude valikusse tuleb lĂ€heneda teadlikult. MĂ”nikord on mĂ”istlik kasutada nii ĂŒhte kui teist sĂŒsteemi raames. NĂ€iteks on meil sĂŒsteeme, kus osa andmeid on sisuliselt vitriinivahemĂ€lu, st uuenduste allikas asub sĂŒsteemi taga ning sĂŒsteem ei muuda neid andmeid. Selle lĂ€henemise jaoks kasutame kohalikku Caffeine Cache'i. 

Ja on andmeid, mida sĂŒsteem aktiivselt muudetakse tööprotsessis, ja siin rakendame me jaotatud vahemĂ€lu Hazelcastiga. Selline lĂ€henemine vĂ”imaldab meil kasutada jaotatud vahemĂ€lu eeliseid seal, kus need on tĂ”eliselt vajalikud, ja minimeerida teenuste kulu Hazelcasti klastrite andmete ringlusele seal, kus me saame ilma selleta hakkama. Oleme vahemĂ€ludest palju kirjutanud. siit ja siit.

Lisaks andis Hazelcasti serialiseerija vahetamine Kryole meile ĂŒsna hea kasvu. Ja ĂŒleminek ReplicatedMapilt IMapile koos Near Cache'iga Hazelcastis vĂ”imaldas meil minimeerida andmete liikumist klastris. 

VĂ€ike nĂ”uanne: massilise vahemĂ€lu tĂŒhistamise korral on mĂ”nikord rakendatav taktika teise vahemĂ€lu soojendamisega ning sellele ĂŒleminekuga. Tundub, et sel juhul peaksime saama topeltmĂ€lu kasutuse, kuid praktikas nende sĂŒsteemide puhul, kus sarnast on praktiseeritud, vĂ€henes mĂ€lu kasutamine.

Reaktiivne korrus

Kasutame reaktiivset tehnoloogiat juba piisavalt paljudes sĂŒsteemides. Meie puhul on need Webflux vĂ”i Kotlin koos korutaatidega. Erakordselt hĂ€sti sobib reaktiivne tehnoloogia kohtadesse, kus ootame aeglaseid sisend-vĂ€ljund operatsioone. NĂ€iteks aeglaste teenuste kĂ”ned, failisĂŒsteemiga töötamine vĂ”i andmesalvestussĂŒsteemide kasutamine.

KĂ”ige olulisem pĂ”himĂ”te on vĂ€ltida blokeerivaid kĂ”nesid. Reaktiivsete raamistikude taga töötab vĂ€ikestes kogustes elavaid teenusevooge. Kui me ettevaatlikult ei kĂ€itu ja teeme otsese blokeeriva kĂ”ne, nagu nĂ€iteks JDBC-draiveri kĂ”ne, siis sĂŒsteem lihtsalt peatub. 

PĂŒĂŒdke muuta vead oma omadeks runtime exception’iteks. TĂ”eline programmi tĂ€itmisvoog lĂ€heb reaktiivsetesse raamistikesse, koodi tĂ€itmine muutub mittelineaarseks. SeetĂ”ttu on probleeme steki jĂ€lgede kaudu vĂ€ga keeruline diagnoosida. Lahenduseks on selgete, objektiivsete runtime exception’ite loomine iga vea jaoks.

Elasticsearch

Elasticsearchi kasutamisel vÀltige kasutamata andmete valimist. See on, pÔhimÔtteliselt, vÀga lihtne nÔuanne, kuid sageli unustatakse seda. Kui tuleb korraga valida rohkem kui 10 000 kirjet, tuleks kasutada Scrolli. Kui tuua paralleel, sarnaneb see veidi relatsioonilise andmebaasi kursori kasutamisega. 

Ärge kasutage postfilteri ilma vajaduseta. Suurte andmehulkade korral peamise valiku puhul koormab see operatsioon andmebaasi vĂ€ga tugevalt. 

Kasutage seal, kus see on kohane, bulk-operatsioone.

API

API projekteerimisel arvestage nÔudmisi edastatavate andmete minimeerimise osas. See on eriti oluline front-endiga seondumisel: just sellel ristmikul liigume vÀlja meie andmekeskuste kanalitest ja töötame juba kanalil, mis seob meid kliendiga. Kui seal esinevad isegi kÔige vÀiksemad probleemid, pÔhjustab liiga kÔrge liiklus negatiivset kasutajakogemust.

Ja lÔpuks, Àrge visake kogu andmehulk vÀlja, olge tÀpsed lepingus tarbijate ja pakkujate vahel.

Organisatsiooniline transformatsioon

Elenna Eroshkina, IT asedirektor

Quarantine took place, and the need to rapidly increase the pace of online development and implement omnichannel services arose, our organizational transformation was already underway. 

Part of our structure was transitioned to operate based on product management principles and practices. Teams were formed that are now responsible for the functioning and development of each product. Employees in these teams are fully engaged and organize their work using Scrum or Kanban, depending on what works best for them, set up deployment pipelines, implement technical practices, quality assurance practices, and much more.

By a happy coincidence, the majority of these product teams were already focused on online and omnichannel services. This allowed us to transition to remote work mode in a very short time (seriously, literally within two days) without losing efficiency. The established process enabled quick adaptation to new working conditions while maintaining a high pace of delivering new functionality.

Lisaks on meil olnud vajadus tugevdada neid meeskondi, mis on online-Àritegevuse eesliinil. Sel hetkel sai selgeks, et saame seda teha ainult sisemiste ressursside arvelt. Ligikaudu 50 inimest vahetas kahe nÀdala jooksul oma senist töövaldkonda ja astus uue, neile seni tundmatu toote arendusse. 

Selleks ei olnud vaja mingeid erik tehtud juhtimisjĂ”upingutusi, kuna oma protsessi korraldamise, toote tehnilise tĂ€iustamise ja kvaliteedikindluse praktikaga koos Ă”petame oma meeskondi eneseorganiseerimisele — juhendame neid oma tootmisprotsessi juhtima ilma administratiivsete ressursside kaasamiseta.

Meie juhtimisressursid suudame suunata just sinna, kus see hetkel vajalik on, — koostöös Ă€ri ja teiste partneritega: Mis on hetkel meie kliendi jaoks oluline, milline funktsionaliteet peaks esmajĂ€rjekorras rakenduma, mida on vaja teha, et suurendada meie tellimuste tĂ€itmise ja töötlemise suutlikkust. KĂ”ik see ja selge rollimudel lubasid meil sel perioodil koormata meie vÀÀrtuse loomise tootmisvooge sellega, mis tĂ”eliselt oluline ja vajalik on. 

Selge on see, et kaugtöös ja kiirete muutuste tempos, kus igaĂŒhe panus mĂ”jutab Ă€ritulemusi, ei saa toetuda ainult sisetunde pĂ”hjalikele kĂŒsimustele, nagu 'Kas me kĂ”ik teeme hĂ€sti? Jah, nagu tundub, on kĂ”ik korras.' On vajalikud objektiivsed mÔÔdikud tootmisprotsessist. Need on meil olemas ja kergesti kĂ€ttesaadavad kĂ”igile, kes huvituvad tooteteamade mÔÔdikutest. Esiteks meeskonnale endale, Ă€riĂŒhingule, kaasosalistele ja juhtkonnale.

Iga kahe nĂ€dala tagant toimub iga meeskonna koosolek, kus 10 minuti jooksul analĂŒĂŒsitakse nĂ€itajaid, tuvastatakse tootmisprotsessi kitsaskohad ja leitakse ĂŒhiselt lahendusi, et neid kitsaskohti kĂ”rvaldada. Siinkohal on vĂ”imalik otse paluda juhtkonna abi, kui mĂ”ni tuvastatud probleem jÀÀb meeskondade mĂ”jupiirist vĂ€lja vĂ”i vajab kolleegide spetsiifilist teadmiste abi, kes on vĂ”ib-olla juba sarnaste probleemidega kokku puutunud.

KĂŒll aga mĂ”istame, et meie eesmĂ€rgi, nimelt kiiruselt mitmekordistumise saavutamiseks, peame me Ă”ppima ja rakendama palju uusi teadmisi igapĂ€evases töös. Just praegu laiendame toote lĂ€henemist teistele meeskondadele ja uutele toodetele. Selleks oleme pidanud Ă”ppima uut, meile seni tundmatut online-koolitajate formaati.

Koolitajad, kes aitavad meeskondadel protsesse ĂŒles ehitada, suhtlemist korraldada ja tööhĂ”ivet tĂ”sta, on sisuliselt muutuste agendid. Just praegu töötavad meie esimese lennu lĂ”petajad meeskondadega, aidates neil edukaks saada. 

Ma arvan, et praegune olukord avab meile vÔimalusi ja perspektiive, millest me vÔib-olla veel tÀielikult aru ei saa. Kuid see kogemus ja praktika, mida me praegu omandame, kinnitavad, et oleme valinud Ôige arengu suuna, et saaksime tulevikus kasutada neid uusi vÔimalusi ning tÔhusalt vastata ootustele, mis «Sportmasteri» ees seisavad.

JĂ€reldused

Selle keerulise aja jooksul oleme sÔnastanud peamised printsiibid, millel pÔhineb tarkvara arendamine, mis, nagu ma usun, on asjakohased igasugusele ettevÔttele, mis sellega tegeleb.

InimesedSee on see, mille peal kÔik pÔhineb. Töötajad peavad saama oma tööst rÔÔmu tunda, mÔistma ettevÔtte eesmÀrke ja tooteid, millega nad tegelevad. Ja loomulikult peaksid nad saama ka professionaalselt areneda. 

TehnoloogiaOn vajalik, et ettevĂ”te lĂ€heneks oma tehnoloogia virnale kĂŒpselt ja kasvataks oskusi seal, kus see tĂ”eliselt vajalik on. See kĂ”lab vĂ€ga lihtsalt ja tĂ”eliselt ilmse asjana. Ja seda ignoreeritakse vĂ€ga sageli.

Protsessid. Oluline on Ôigesti korraldada toote meeskondade ja ekspertkeskuste tööd ning luua koostöö Àriga, et suhelda nendega kui partneritega.

Üldiselt saime kuidagi hakkama. TĂ€napĂ€eva peamine tees kinnitust leidis veel korra, vali kĂ”lksatus peas.

Isegi kui oled tohutu offline-Ă€ri, millel on palju poode ja hulk linnu, kus tegevust tĂ€histad, arenda oma online kohalolekut. See pole vaid lisamĂŒĂŒgikanal ega ilus rakendus, mille kaudu midagi osta (ja ka seetĂ”ttu, et konkurentidel on samuti ilus). See ei ole varuvariant, mis aitab tormi ĂŒle elada.

See on tÀiesti vajalik. Selleks peavad olema valmis mitte ainult teie tehnilised ressursid ja infrastruktuur, vaid ka inimesed ja protsessid. LÔppude lÔpuks on kiiresti lisada mÀluruumi, ruumi, avada uusi instantsse ja muud lihtsalt. Kuid inimesi ja protsesse tuleb selliseks ette valmistada eelnevalt.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster