Tere!
Minu nimi on Mihhail, olen IT-direktori asetĂ€itja ettevĂ”ttes âSportmasterâ. Soovin jagada lugu sellest, kuidas me toime tulime koroonapandeemia ajal tekkinud vĂ€ljakutsedega.
Uute reaalsuste esimeses pĂ€eva meie tavapĂ€rane offline-mĂŒĂŒgiformaat âSportmasterisâ seiskus, ja koormus meie veebikanalile, eelkĂ”ige kohaletoimetamise osas, suurenes kĂŒmme korda. Paari nĂ€dala jooksul muutsime tohutu mahu offline-Ă€ri veebiks, kohandades teenuseid meie klientide vajadustega.
KokkuvĂ”ttes muutus see, mis oli meie kĂ”rvaltoiming, meie pĂ”hitegevuseks. Iga interneti tellimuse tĂ€htsus suurenes ÀÀrmiselt. Oli vajalik sĂ€ilitada iga rubla, mille klient ettevĂ”ttesse tĂ”i.Â

KliendipĂ€ringutele kiire vastamise tagamiseks avasime peakorteris lisakontaktikeskuse, ja nĂŒĂŒd suudame vastu vĂ”tta umbes 285 tuhat kĂ”net nĂ€dalas. Samal ajal muutsime 270 poodi uue kontaktivaba ja ohutu töö formati, mis vĂ”imaldas klientidel tellimusi vastu vĂ”tta ja töötajatel töökohti sĂ€ilitada.
Töötamise kÀigus tundsime kahte peamist probleemi. Esiteks, meie veebiresursside koormus suurenes jÀrsult (kuidas me sellega toime tulime, rÀÀgib Sergei). Teiseks, COVID-eelset haruldaste operatsioonide voog kasvas mitmekordselt, mis omakorda nÔudis suurt hulka kiiret automatiseerimist. Selle probleemi lahendamiseks pidime kiiresti suunama ressursse sektoritest, mis olid varem peamised. Kuidas me sellega hakkama saime - rÀÀgib Elena.
Veebiteenuste kasutamine
Koliesnikov Sergei, vastutab veebipoe ja mikroteenuste kasutamise eest
Sellest hetkest, kui meie jaekauplused hakkasid kĂŒlastajatele sulguma, oleme hakanud fikseerima kasvu sellistes nĂ€itajates nagu kasutajate arv, tellimuste arv, mis meie rakenduses vormistatakse, rakendustele saadetavate pĂ€ringute arv.Â
Tellimuste arv 18. kuni 31. mÀrtsini
PĂ€ringute arv veebimaksete mikroteenustele
Veebilehel vormistatud tellimuste arv
Esimesel graafikul nĂ€eme, et kasvĂ”i suurus on ligikaudu 14 korda, teisel - 4 korda. Meie arvates on kĂ”ige silmapaistvam selle juures meie rakenduste vastuse aeg.Â

Sellel graafikul nÀeme, et nii front-end kui rakenduste vastused ei ole mÀrgatavat kasvu toonud.
See on peamiselt tingitud sellest, et alustasime ettevalmistustöid 2019. aasta lĂ”pus. Praegu on meie teenused reserveeritud ning tagatud on fĂŒĂŒsiliste serverite, virtualiseerimissĂŒsteemide ja konteinerite tasemel tĂ”rketaluvus. Samuti suudavad meie serverivĂ”imsused taluda korduvaid koormusi.
Peamine tööriist, mis aitas meid kogu selle protsessi kĂ€igus, oli meie jĂ€lgimissĂŒsteem. TĂ”si, veel hiljuti puudus meil ĂŒhtne sĂŒsteem, mis vĂ”imaldaks koguda mÔÔdikuid kĂ”igil tasanditel, alates fĂŒĂŒsilise varustuse ja riistvara tasemest kuni Ă€ri mÔÔdikute tasemeni.Â
Kuigi ettevĂ”ttes oli formaalselt jĂ€lgimine olemas, oli see reeglina hajutatud ja vastutuseks olid konkreetsed osakonnad. Tegelikult, kui juhtus mĂ”ni intsident, ei olnud meil peaaegu kunagi ĂŒhtset arusaama sellest, mis tĂ€pselt juhtus, ei olnud teavitamist ning see viis sageli ringikĂ”ndimisele probleemi paikamiseks ja lahendamiseks.
MĂ”nes mĂ”ttes jĂ”udsime jĂ€reldusele, et on aeg lĂ”petada see talumine â meil on vaja ĂŒhtset sĂŒsteemi, et nĂ€ha kogu pilti. Meie tehnoloogiakuhjas on peamised tehnoloogiad Zabbix, mis on alarmeerimise ja mÔÔdikute hoiustamise keskus, Prometheus rakenduste mÔÔdikute kogumiseks ja hoidmiseks, Stack ELK logimise ja kogu jĂ€lgimissĂŒsteemi andmete hoidmiseks ning Grafana visualiseerimiseks, samuti Swagger, Docker ja teised tuttavad ja kasulikud vahendid.
Kasutame mitte ainult turul olevaid tehnoloogiaid, vaid arendame ka mĂ”ningaid asju ise. NĂ€iteks loome teenuseid sĂŒsteemide omavaheliseks integreerimiseks, see tĂ€hendab teatud API-d mÔÔdikute kogumiseks. Lisaks töötame oma jĂ€lgimissĂŒsteemide kallal â Ă€ri mÔÔdikute tasemel kasutame UI-teste. Samuti oleme loonud Telegrami boti meeskondade teavitamiseks.
PĂŒĂŒdleme ka selle poole, et jĂ€lgimissĂŒsteem oleks meeskondadele kergesti kĂ€ttesaadav, et nad saaksid iseseisvalt oma mÔÔdikuid hoida ja nendega töötada, sealhulgas seadistada teatud kitsastes mÔÔdikutest alarme, millel ei ole ulatuslikku rakendust.Â
Kogu sĂŒsteemi raames pĂŒĂŒdleme proaktiivsuse ja kiireima vĂ”imaliku intsidentide lokaliseerimise poole. Samuti on meie mikroteenuste ja sĂŒsteemide arv viimase aja jooksul oluliselt kasvanud, seega suureneb ka integratsioonide arv. Protsesside diagnostika optimeerimise raames arendame sĂŒsteemi, mis vĂ”imaldab teostada rist-sĂŒsteemseid kontrolle ja kuvada tulemusi, mis aitavad leida pĂ”hiprobleeme, mis on seotud impordiga ja sĂŒsteemidevahelise koostööga.Â
Muidugi on meil veel ruumi kasvada ja areneda sĂŒsteemide haldamises ning me teeme selle nimel aktiivselt tööd. Lisainfot meie jĂ€lgimissĂŒsteemi kohta saab lugeda .Â
Tehnilised katsedÂ
Sergei Orlov, juhib veeb- ja mobiiliarenduse kompetentsikeskust
Alates fĂŒĂŒsiliste poodide sulgemisest oleme pidanud silmitsi seisma erinevate vĂ€ljakutsetega arenduse vaatenurgast. Esiteks koormuse jĂ€rsk tĂ”us. On selge, et kui ei tehta vastavaid meetmeid, siis vĂ”ib sĂŒsteem kĂ”rge koormuse korral kurva plahvatusega kĂ”rvitsaks muutuda, kas tĂ€ielikult degradeeruda tootlikkuses vĂ”i hoopis oma töövĂ”imet kaotada.
Teine aspekt, veidi vĂ€hem ilmne, seisneb selles, et kĂ”rge koormusega sĂŒsteemi tuli vĂ€ga kiiresti muuta, kohandades seda Ă€rihoogude muutustega. MĂ”nikord mitu korda pĂ€evas. Paljudes ettevĂ”tetes kehtib reegel, et suurtel turundustegevustel ei tohiks sĂŒsteemis mingeid muudatusi teha. Ăldse mitte, las töötab, kui töötab.
Meil oli pĂ”himĂ”tteliselt lĂ”putu must reede, mille kĂ€igus tuli sĂŒsteemi muuta. Ja iga viga, probleem vĂ”i tĂ”rge sĂŒsteemis maksaks Ă€ri kalliks.
Eelnevalt öeldes, saame kinnitada, et meil Ă”nnestus nendel katsetel toime tulla, kĂ”ik sĂŒsteemid talusid koormust, kohandusid kergesti ja suuri tehnilisi tĂ”rkeid meil ei olnud.
On systeemi suutlikkuse suurte pingete kestmiseks toetuvad neli peamist pillarohtu. Esimene neist on monitooring, millest olete natuke varem lugenud. Ilma korralikult ĂŒles ehitatud monitooringusĂŒsteemita on peaaegu vĂ”imatu leida sĂŒsteemi kitsaskohti. Hea monitooringusĂŒsteem on nagu mugavad koduriided, see peab olema mugav ja teie vajadustele kohandatud.
Teine aspekt on testimine. Me vĂ”tame seda vĂ€ga tĂ”siselt: kirjutame klassikalisi ĂŒhik- ja integreerimisteste, koormusteste ja palju muud iga sĂŒsteemi jaoks. Samuti koostame testimistrategia ja pĂŒĂŒdleme selle poole, et viia testimise tase selleni, et me enam ei vajaks kĂ€sitsi kontrolle.
Kolmas pillihoidja on CI/CD torujuhe. Rakenduse ehitamise, testimise ja juurutamise protsessid peavad olema maksimaalselt automatiseeritud, seal ei tohiks olla kĂ€sitsi sekkumisi. CI/CD torujuhe on piisavalt sĂŒgav teema ning ma kĂ€sitlen seda vaid pinnapealselt. Tuleb vaid mainida, et meil on CI/CD torujuhi kontrollnimekiri, mille abil toimub iga toote meeskonna lĂ€bivaatamine kompetentsikeskustes.
Ja siin on kontrollnimekiri
Sellega saavutatakse vĂ€ga palju eesmĂ€rke. See on API versioonimine, funktsioonide lĂŒlitamine, et vĂ€ltida ĂŒlekoormatud vĂ€ljalaskepĂ€evi ja erinevate testide katte saavutamine sellisel tasemel, et testimine oleks tĂ€ielikult automatiseeritud, juurutamised oleks sujuvad jne.
Neljas pillihoidja on arhitektuuripÔhimÔtted ja tehnilised lahendused. Arhitektuurist vÔiks pikalt ja laialdaselt rÀÀkida, kuid soovin rÔhutada mÔningaid pÔhimÔtteid, millele tahaksin tÀhelepanu juhtida.
Esiteks tuleb valida spetsialiseeritud tööriistad konkreetsete ĂŒlesannete jaoks. Jah, see kĂ”lab ilmse tĂ”ena, ja on selge, et naelu tuleb lĂŒĂŒa haamriga, samas kui kellade lahtivĂ”tmiseks on vaja spetsiaalseid kruvikeerajaid. Kuid meie ajastul pĂŒrgivad paljud tööriistad universaalsuse poole, et katta vĂ”imalikult suur kasutajate segment: andmebaasid, vahemĂ€olid, raamistike ja muu puhul. NĂ€iteks, kui vĂ”tta andmebaas MongoDB, siis see töötab mitme dokumendi tehingutega, samas kui andmebaas Oracle töötab json failidega. Ja tundub, et kĂ”ike saab kasutada igasugusteks otstarveteks. Kuid kui me hoolime sooritusest, peame selgelt mĂ”istma iga tööriista tugevusi ja nĂ”rkusi ning kasutama just neid, mis sobivad meie ĂŒlesande klassile.Â
Teiseks, sĂŒsteemide projekteerimisel peab iga keerukuse tĂ”us olema pĂ”hjendatud. Me peame seda pidevalt meeles pidama, madala sidususe pĂ”himĂ”te on kĂ”igile teada. Ma usun, et seda tuleb rakendada nii konkreetse teenuse tasemel, kogu sĂŒsteemi tasemel kui ka arhitektuurilises maastikus. Samuti on oluline iga sĂŒsteemi komponendi horisontaalse skaleerimise vĂ”ime koormuse ajal. Kui omada seda vĂ”imet, ei valmista skaleerimine mingit raskust.
Kui rÀÀkida tehnilistest lahendustest, palusime tootmisrĂŒhmadel valmistada ette vĂ€rske soovituste, ideede ja lahenduste kogum, mida nad on ellu viinud jĂ€rgmise koormuslaine ettevalmistamise kĂ€igus.
VahemÀlud
Tuleb teadlikult lĂ€heneda kohapealsete ja jaotatud vahemĂ€lte valikule. MĂ”nikord on mĂ”istlik kasutada mĂ”lemat ĂŒhe sĂŒsteemi raames. NĂ€iteks meil on sĂŒsteeme, kus osa andmeid on sisuliselt vitriinja paigaldatav vahemĂ€lu, see tĂ€hendab, et uuenduste allikas asub sĂŒsteemi taga ja need sĂŒsteemid neid andmeid ei muuda. Sellise lĂ€henemise jaoks kasutame kohalikku Caffeine Cache-i.Â
Aga on ka andmeid, mida sĂŒsteem aktiivselt töötamise ajal muudab, ja siin rakendame jaotatud vahemĂ€lu Hazelcastiga. Selline lĂ€henemine vĂ”imaldab meil kasutada jaotatud vahemĂ€lu eeliseid seal, kus need tĂ”eliselt vajalikud on, ja minimeerida teeninduskulusid andmete ringluses Hazelcasti klastris seal, kus me saame ilma selleta hakkama. Oleme vahemĂ€lude kohta palju kirjutanud. ja .
Lisaks andis Hazelcasti serialiseerija vahetus Kryole meile mĂ€rkimisvÀÀrse kasvu. Samuti vĂ”imaldas Hazelcasti ĂŒleminek ReplicatedMapilt IMapile + Near Cachel andmete liikumise minimeerimist klastris.Â
VĂ€ike nĂ”uanne: massilise vahemĂ€lu tĂŒhjendamise korral vĂ”ib mĂ”nikord rakendada teise vahemĂ€lu soojendamise takti, millele jĂ€rgneb sellele ĂŒleminek. Tundub, et selle lĂ€henemise korral peaksime saama topeltmĂ€lu tarbimise, kuid praktikas, nendes sĂŒsteemides, kus seda on praktiseeritud, vĂ€henes mĂ€lutarbimine.
Reaktiivne kiht
Kasutame reaktiivset kihti juba piisavalt suurel hulgal sĂŒsteemides. Meie puhul on see Webflux vĂ”i Kotlin koorusidega. Eriti hĂ€sti sobib reaktiivne kiht seal, kus ootame aeglaseid sisend-vĂ€ljundoperatsioone. NĂ€iteks aeglaste teenuste kutsumine, failisĂŒsteemist vĂ”i salvestussĂŒsteemidest töötamine.
KĂ”ige olulisem pĂ”himĂ”te on vĂ€ltida blokeerivaid kutseid. Reaktiivsete raamistikud all töötavad vĂ€hesed elavad teenuse niidid. Kui lubame endale ettevaatamatult teha otsese blokeeriva kutse, nagu nĂ€iteks JDBC-draiveri kutse, peatub sĂŒsteem lihtsalt.Â
PĂŒĂŒdke muuta vead oma kĂ€ivitusaja eranditeks. TĂ”eline programmi teostamine lĂ€heb reaktiivsetesse raamistikudesse, koodi teostamine muutub mittelineaarseks. Selle tagajĂ€rjel on vĂ€ga keeruline diagnoosida probleeme virnastamiste kaudu. Lahendus on iga vea jaoks arusaadavate objektiivsete kĂ€itusaegsete erandite loomine.
Elasticsearch
Elasticsearchi kasutamisel Ă€rge valige kasutamata andmeid. See on pĂ”himĂ”tteliselt ka vĂ€ga lihtne nĂ”uanne, kuid enamus inimesi unustab selle. Kui tuleb valida korraga rohkem kui 10 000 kirjet, tuleb kasutada Rullimist. Kui teha analoogia, on see veidi sarnane rikka andmebaasi kursoriga.Â
Ărge kasutage postfilterit ilma vajaduseta. Suurte andmete puhul pĂ”hivalikus koormab see operatsioon andmebaasi vĂ€ga tugevalt.Â
Kasutage bulk-operatsioone seal, kus see on kohaldatav.
API
API projekteerimisel kaaluge nĂ”udeid edastatavate andmete minimoimiseks. See on eriti oluline front-endiga seondumisel: just seal, kus me ĂŒletame meie andmekeskuste kanalid ja töötame juba kanali kaudu, mis ĂŒhendab meid kliendiga. Kui sellel on kĂ”ige vĂ€iksemad probleemid, pĂ”hjustab liiga kĂ”rge liiklus negatiivset kasutajakogemust.
Ja lÔpuks, Àrge laske kogu andmemassi voolata, vaid lÀhenemise lepingule tarbijate ja tarnijate vahel peaks olema selge.
Organisatsiooniline transformatsioon
Elena Eroƥkina, IT-direktori asetÀitja
Hetkel, mil karantiin toimus ja vajadus kiiruselt suurendada online-teenuste arendust ning rakendada omnichannel teenuseid, olime juba organisatsioonilise transformatsiooni protsessis.Â
Osa meie struktuurist viidi ĂŒle töötama toote lĂ€henemise pĂ”himĂ”tete ja praktikate kohaselt. Moodustati meeskonnad, mis nĂŒĂŒd vastutavad iga toote toimimise ja arengu eest. Nendes meeskondades on töötajad 100% hĂ”ivatud ja korraldavad oma tööd scrumi vĂ”i kanbani jĂ€rgi, sĂ”ltuvalt sellest, mis neile sobib, seadistavad juurutamise protsessi, rakendavad tehnilisi praktikaid, kvaliteedihaldust ja palju muud.
Kuna suur osa neist tootemeeskondadest asus meil just online- ja omnichannel-teenuste valdkonnas, vĂ”imaldas see meil lĂŒhikese ajaga (ausalt öeldes, vaid kahe pĂ€evaga) ĂŒle minna kaug töötamise reĆŸiimile ilma efektiivsuse kaotuseta. HĂ€sti seadistatud protsess vĂ”imaldas kiiresti uute töötingimustega kohaneda ja hoida kĂ”rget uusi funktsionaalsuse pakkumise tempo.
Lisaks tekkis meil vajadus tugevdada neid meeskondi, mis asuda online-Ă€ri esirinnas. Sel hetkel sai selgeks, et saame seda teha ainult sisemiste ressursside arvelt. Umbes 50 inimest kahe nĂ€dalaga vahetasid ala, kus nad varem töötasid, ja integreerusid uue toote kallal töötamisse.Â
Selleks ei olnud vaja mingeid erilisi juhtimispingutusi, kuna koos enda protsessi korraldamise, toote tehnilise tĂ€iustamise ja kvaliteedihalduse praktikatega Ă”petame oma meeskondi iseorienteeruma â juhtima oma tootmisprotsessi ilma administratiivsete ressurssideta.
Juhtimisressursi oleme suutnud suunata just sinna, kus see hetkel vajalik oli â koostöös Ă€rihuvidega: Mis on hetkel meie kliendi jaoks oluline, millised funktsioonid peavad esimesena ellu viidud olema, mida tuleb teha, et suurendada meie vĂ”imet tellimuste kohaletoimetamiseks ja töötlemiseks. KĂ”ik see ning selge rollimudel vĂ”imaldas meil sel perioodil koormata meie vÀÀrtuse loomise tootmisvooge sellega, mis on tĂ”eliselt oluline ja vajalik.Â
Selge on see, et kaugelt töötades ja kiirete muudatustega, kui igaĂŒhe osalus mĂ”jutab ettevĂ”tte tulemusi, ei saa tugineda pelgalt sisetunde jĂ€lgimisele, nĂ€iteks âKas meil kĂ”ik sujub? Tundub, et pĂ€ris hĂ€sti.â Vajame objektiivseid tootmisprotsessi mÔÔdikuid. Meil on need olemas, need on kergesti kĂ€tte saadavad kĂ”igile, kes huvituvad tootmeeskondade mÔÔdikest. EnnekĂ”ike nendele, kes kuuluvad meeskonda, Ă€rile, osakondadele ja juhtkonnale.
Iga kahe nĂ€dala tagant toimub koosolek igas meeskonnas, kus 10 minut jooksul analĂŒĂŒsitakse mÔÔdikuid, tuvastatakse tootmisprotsessi kitsaskohad ja töötatakse vĂ€lja ĂŒhiselt lahendused: mida saame teha, et need kitsaskohad kĂ”rvaldada. Sellega koos on vĂ”imalik kohe kĂŒsida abi juhtkonnalt, kui mĂ”ni tuvastatud probleem jÀÀb meeskondadeulatusest vĂ€lja, vĂ”i kolleegide ekspertiisilt, kes on vĂ”ib-olla sarnaste probleemidega juba kokku puutunud.
Kuid samas mÔistame, et meie eesmÀrkide, millest me lÀhtume, kiireks saavutamiseks peame me veel palju Ôppima ja rakendama seda igapÀevases töös. Just praegu jÀtkame toote lÀhenemise laienemist teistele meeskondadele ja uutele toodetele. Selleks oleme pidanud Ôppima uut online-koolituse formaati metodoloogide jaoks.
Metodoloogid, kes aitavad meeskondadel protsesse ĂŒles ehitada, suhtlemist korraldada ja töö efektiivsust tĂ”sta, on tegelikult muutuste agendid. Just praegu töötavad meie esimese kursuse lĂ”petanud meeskondadega ja aitavad neil edukaks saada.Â
Ma arvan, et olukord, milles me praegu oleme, avab meile sellised vÔimalused ja perspektiivid, mida me vÔib-olla veel tÀielikult ei teadvusta. Kuid see kogemus ja praktika, mida me hetkel saame, tÔestab, et oleme valinud Ôige arengu tee, ei jÀta tulevikus neid uusi vÔimalusi kasutamata ning suudame tÔhusalt vastata nendele vÀljakutsetele, mis seisavad «Sportmasteri» ees.
JĂ€reldused
Selle keerulise aja jooksul oleme formuleerinud peamised pÔhimÔtted, millele tuginevad tarkvaraarendused ja mis, arvan, kehtivad iga ettevÔtte jaoks, mis sellega tegeleb.
Inimesed. See on see, mille ĂŒmber kĂ”ik pöörleb. Töötajad peavad oma tööst rÔÔmu tundma, mĂ”istma ettevĂ”tte ja nende toodete eesmĂ€rke, millega nad tegelevad. Ja loomulikult saavad nad professionaalselt areneda.Â
Tehnoloogia. Oluline on, et ettevĂ”te lĂ€heneks kĂŒpselt oma teknoloogilistele vahenditele ja kasvataks oma oskusi seal, kus see tĂ”eliselt vajalik on. See kĂ”lab vĂ€ga lihtsalt ja iseenesestmĂ”istetavalt. Ja vĂ€ga tihti jÀÀb tĂ€helepanuta.
Protsessid. Oluline on Ôigesti korraldada tootegruppide ja oskuskeskuste tööd, et luua sujuv koostöö ÀriettevÔttega, töötades selle eest partnerina.
Ăldiselt on me sellega enam-vĂ€hem ellu jÀÀnud. Kaasaegne teesi on taas kord kinnitust leidnud, teravalt pihta lĂŒĂŒes.
Isegi kui oled tohutu jaekett, millel on palju poode ja hulgaliselt kohalike linnade, arenda oma veebi. See ei ole lihtsalt tĂ€iendav mĂŒĂŒgikanal vĂ”i ilus rakendus, mille kaudu saab midagi osta (ja veel sellepĂ€rast, et konkurentidel on ka ilus). See ei ole lihtsalt varuvĂ”imalus, mis aitab tormi ĂŒle elada.
See on hÀdavajalik. Milles peavad olema valmis mitte ainult teie tehnilised vahendid ja infrastruktuur, vaid ka inimesed ja protsessid. Kiiresti mÀlu ja ruumi juurde ostmine, uute instantside kÀivitamine ja muu sarnane on vÔimalik mÔne tunni jooksul. Kuid inimesi ja protsesse tuleb selleks eelnevalt ette valmistada.
Allikas: habr.com
