Жаңа жағдайларда онлайн саудаға тез бейімделуге не көмектесті

Сәлем!

Менің атым Михаил, мен Sportmaster компаниясында IT жөніндегі директордың орынбасарымын. Мен пандемия кезінде туындаған қиындықтармен қалай күрескеніміз туралы тарихпен бөліскім келеді.

Жаңа шындықтардың алғашқы күндерінде Sportmaster-тің әдеттегі офлайн сауда форматы қатып қалды және біздің онлайн-арнадағы жүктеме, ең алдымен, клиенттің мекен-жайына жеткізу тұрғысынан 10 есе өсті. Бірнеше аптаның ішінде біз үлкен офлайн бизнесті онлайнға айналдырдық және қызметті клиенттеріміздің қажеттіліктеріне бейімдедік.

Негізінде, біздің қосымша жұмысымыз біздің негізгі бизнесімізге айналды. Әрбір онлайн тапсырыстың маңыздылығы өте жоғарылады. Клиенттің компанияға әкелген әрбір рубльді үнемдеу керек болды. 

Жаңа жағдайларда онлайн саудаға тез бейімделуге не көмектесті

Клиенттердің өтініштеріне жылдам жауап беру үшін біз компанияның бас кеңсесінде қосымша байланыс орталығын аштық, қазір аптасына 285 мыңға жуық қоңырауды қабылдай аламыз. Сонымен бірге біз 270 дүкенді контактісіз және қауіпсіз жұмыс істеудің жаңа форматына көшірдік, бұл тұтынушыларға тапсырыстарды қабылдауға және қызметкерлерге өз жұмыстарын сақтауға мүмкіндік берді.

Трансформация барысында біз екі негізгі мәселеге тап болдық. Біріншіден, біздің интернет-ресурстарымызға жүктеме айтарлықтай артты (Сергей сізге мұны қалай шешкенімізді айтып береді). Екіншіден, сирек (COVID-ға дейінгі) операциялар ағыны бірнеше есе артты, бұл өз кезегінде үлкен көлемде жылдам автоматтандыруды қажет етті. Бұл мәселені шешу үшін бізге бұрын негізгі болып келген аймақтардан ресурстарды жылдам аударуға тура келді. Елена сізге мұны қалай шешкенімізді айтып береді.

Онлайн қызметтерді пайдалану

Колесников Сергей, интернет-дүкен мен микросервистердің жұмысына жауапты

Біздің бөлшек сауда дүкендеріміз келушілерге жақындай бастаған сәттен бастап біз пайдаланушылар саны, біздің қолданбаға орналастырылған тапсырыстар саны және қолданбаларға сұраулар саны сияқты көрсеткіштердің өсуін жаза бастадық. 

Жаңа жағдайларда онлайн саудаға тез бейімделуге не көмектесті18 наурыздан 31 наурызға дейінгі тапсырыстар саныЖаңа жағдайларда онлайн саудаға тез бейімделуге не көмектестіОнлайн төлем микросервистеріне сұраныстар саныЖаңа жағдайларда онлайн саудаға тез бейімделуге не көмектестіВеб-сайтта орналастырылған тапсырыстар саны

Бірінші графикте өсу шамамен 14 есе, екіншісінде 4 есе болғанын көреміз. Біз қолданбаларымыздың жауап беру уақыты көрсеткішін ең индикативті деп санаймыз. 

Жаңа жағдайларда онлайн саудаға тез бейімделуге не көмектесті

Бұл графикте біз фронттар мен қосымшалардың жауабын көреміз және біз өзіміз үшін мұндай өсуді байқамағанымызды анықтадық.

Бұл бірінші кезекте дайындық жұмыстарын 2019 жылдың соңында бастағанымызға байланысты. Енді біздің қызметтеріміз сақталған, ақауларға төзімділік физикалық серверлер, виртуализация жүйелері, докерлер және олардағы қызметтер деңгейінде қамтамасыз етілген. Сонымен қатар, серверлік ресурстарымыздың сыйымдылығы бізге бірнеше жүктемелерге төтеп беруге мүмкіндік береді.

Осы оқиғада бізге көмектескен негізгі құрал біздің бақылау жүйеміз болды. Рас, соңғы кезге дейін бізде физикалық жабдықтар мен аппараттық құралдар деңгейінен бастап іскерлік көрсеткіштер деңгейіне дейін барлық деңгейлерде көрсеткіштерді жинауға мүмкіндік беретін бірыңғай жүйе болған жоқ. 

Формальды түрде компанияда мониторинг болды, бірақ әдетте ол шашыраңқы болды және нақты бөлімдердің жауапкершілігі аймағында болды. Шындығында, оқиға болған кезде бізде нақты не болғаны туралы жалпы түсінік болған жоқ, байланыс болмады және бұл көбінесе мәселені шешуге болатындай етіп табу және оқшаулау үшін шеңберлерде жүгіруге әкелді.

Бір кездері біз бұған төтеп беруіміз жеткілікті деп ойладық және шешім қабылдадық - бүкіл суретті толық көру үшін бізге бірыңғай жүйе қажет. Біздің стекке енгізілген негізгі технологиялар - ескерту және көрсеткіштерді сақтау орталығы ретіндегі Zabbix, қолданба көрсеткіштерін жинауға және сақтауға арналған Prometheus, бүкіл бақылау жүйесінен деректерді тіркеуге және сақтауға арналған Stack ELK, сонымен қатар визуализацияға арналған Grafana, Swagger, Docker. және басқа да пайдалы және сізге таныс нәрселер.

Сонымен қатар, біз нарықта бар технологияларды қолданып қана қоймай, өзіміздің кейбір технологияларымызды дамытамыз. Мысалы, біз жүйелерді бір-бірімен біріктіру қызметтерін жасаймыз, яғни көрсеткіштерді жинауға арналған API түрі. Оған қоса, біз өзіміздің бақылау жүйелерімізде жұмыс істеп жатырмыз - бизнес метрика деңгейінде біз UI сынақтарын қолданамыз. Сондай-ақ командаларды хабардар ету үшін Telegram-дағы бот.

Сондай-ақ, біз мониторинг жүйесін командаларға қол жетімді етуге тырысамыз, осылайша олар өз метрикаларын дербес сақтай алады және олармен жұмыс істей алады, соның ішінде кеңінен пайдаланылмайтын кейбір тар өлшемдер үшін ескертулерді орнату. 

Бүкіл жүйеде біз оқиғаларды мүмкіндігінше тезірек белсенділікке және оқшаулауға тырысамыз. Сонымен қатар, соңғы уақытта біздің микросервистеріміз бен жүйелеріміздің саны айтарлықтай өсті, сәйкесінше интеграциялар саны да өсті. Интеграция деңгейінде инциденттерді диагностикалау процесін оңтайландыру шеңберінде біз жүйеаралық тексерулерді жүргізуге және нәтижені көрсетуге мүмкіндік беретін жүйені әзірлеп жатырмыз, ол импортқа және жүйелердің өзара әрекеттесуіне байланысты негізгі мәселелерді табуға мүмкіндік береді. бір-бірін. 

Әрине, бізде әлі де операциялық жүйелер тұрғысынан өсуге және дамытуға мүмкіндік бар және біз бұл бойынша белсенді жұмыс істеп жатырмыз. Сіз біздің бақылау жүйеміз туралы толығырақ оқи аласыз осында

Техникалық сынақтар 

Орлов Сергей, веб және мобильді даму бойынша құзыретті орталықты басқарады

Физикалық дүкен жабыла бастағаннан бері біз даму тұрғысынан әртүрлі қиындықтарға тап болдық. Ең алдымен, жүктеменің жоғарылауы. Тиісті шаралар қабылданбаса, жүйеге үлкен жүктеме түскенде ол қайғылы жарылыспен асқабаққа айналуы немесе өнімділігін толығымен нашарлатуы немесе тіпті функционалдығын жоғалтуы анық.

Екінші аспект, аздап айқынырақ, жоғары жүктемедегі жүйені бизнес-процестердің өзгеруіне бейімделе отырып, өте тез өзгертуге тура келді. Кейде күніне бірнеше рет. Көптеген компанияларда маркетингтік белсенділік көп болса, жүйеге ешқандай өзгеріс енгізудің қажеті жоқ деген ереже бар. Ешқайсысы жоқ, ол жұмыс істегенше жұмыс істей берсін.

Бізде шексіз қара жұма болды, оның барысында жүйені өзгерту қажет болды. Және жүйедегі кез келген қате, мәселе немесе сәтсіздік бизнес үшін өте қымбатқа түседі.

Болашаққа қарап, біз бұл сынақтарды жеңе алдық, барлық жүйелер жүктемеге төтеп берді, оңай масштабталады және біз ешқандай жаһандық техникалық ақауларға тап болған жоқпыз деп айта аламын.

Жүйенің жоғары асқын жүктемелерге төтеп беру қабілеті төрт тірек бар. Олардың біріншісі - мониторинг, ол туралы сіз жоғарыда оқисыз. Кірістірілген бақылау жүйесі болмаса, жүйенің кедергілерін табу мүмкін емес. Жақсы бақылау жүйесі үй киіміне ұқсайды, ол сізге ыңғайлы және ыңғайлы болуы керек.

Екінші аспект - тестілеу. Біз бұл мәселені өте байсалды түрде қабылдаймыз: біз әр жүйе үшін классикалық бірліктерді, интеграциялық сынақтарды, жүктеме сынақтарын және басқаларын жазамыз. Біз сондай-ақ тестілеу стратегиясын жазып жатырмыз және сонымен бірге тестілеу деңгейін қолмен тексеруді қажет етпейтін деңгейге дейін арттыруға тырысамыз.

Үшінші тірек - CI/CD құбыры. Қолданбаны құру, тестілеу және орналастыру процестері мүмкіндігінше автоматтандырылған болуы керек; қолмен араласу болмауы керек. CI/CD құбырының тақырыбы өте терең, мен оған қысқаша тоқталамын. Бізде CI/CD Pipeline бақылау тізімі бар екенін айта кеткен жөн, оны әрбір өнім тобы құзыреттілік орталықтарының көмегімен өткізеді.

Жаңа жағдайларда онлайн саудаға тез бейімделуге не көмектестіМіне, бақылау парағы

Осылайша көптеген мақсаттарға қол жеткізіледі. Бұл API нұсқасы және шығарылым пойызын болдырмау және әртүрлі сынақтарды тестілеу толығымен автоматтандырылған, орналастырулар біркелкі және т.б. болатын деңгейде қамтуға қол жеткізу.

Төртінші тірек – архитектуралық принциптер мен техникалық шешімдер. Біз сәулет өнері туралы көп айта аламыз, бірақ мен назар аударғым келетін бірнеше қағидатты атап өткім келеді.

Біріншіден, нақты тапсырмалар үшін арнайы құралдарды таңдау керек. Иә, бұл анық естіледі және шегелерді балғамен соғу керек, ал қол сағаттарын арнайы бұрағыштармен бөлшектеу керек. Бірақ біздің дәуірде көптеген құралдар пайдаланушылардың максималды сегментін қамту үшін әмбебаптандыруға ұмтылады: дерекқорлар, кэштер, фреймворктар және қалғандары. Мысалы, MongoDB дерекқорын алсаңыз, ол көп құжатты транзакциялармен жұмыс істейді, ал Oracle дерекқоры json бағдарламасымен жұмыс істейді. Және бәрін бәріне қолдануға болатын сияқты. Бірақ егер біз өнімділікті жақтайтын болсақ, онда біз әрбір құралдың күшті және әлсіз жақтарын анық түсініп, тапсырмалар класы үшін қажет құралдарды пайдалануымыз керек. 

Екіншіден, жүйелерді жобалау кезінде күрделіліктің әрбір артуы негізделуі керек. Біз мұны үнемі есте ұстауымыз керек, төмен байланыс принципі бәріне белгілі. Оны белгілі бір қызмет деңгейінде де, бүкіл жүйе деңгейінде де, сәулеттік ландшафт деңгейінде де қолдану керек деп есептеймін. Жүйенің әрбір құрамдас бөлігін жүктеме жолы бойымен көлденең масштабтау мүмкіндігі де маңызды. Егер сізде бұл қабілет болса, масштабтау қиын болмайды.

Техникалық шешімдер туралы айтатын болсақ, біз өнім топтарынан жұмыс жүктемесінің келесі толқынына дайындық кезінде жүзеге асырған ұсыныстардың, идеялардың және шешімдердің жаңа жиынтығын дайындауды сұрадық.

Кеши

Жергілікті және таратылған кэштерді таңдауға саналы түрде жақындау қажет. Кейде бір жүйеде екеуін де пайдалану мағынасы бар.Мысалы, бізде деректердің бір бөлігі шын мәнінде витриналық кэш болып табылатын жүйелер бар, яғни жаңартулар көзі жүйенің артында орналасқан және жүйелер өзгермейді. бұл деректер. Бұл тәсіл үшін біз жергілікті кофеин кэшін қолданамыз. 

Жүйе жұмыс кезінде белсенді түрде өзгеретіні туралы деректер бар, және біз қазірдің өзінде Hazelcast-пен бөлінген кэшті пайдаланып жатырмыз. Бұл тәсіл бізге таратылған кэштің артықшылықтарын шын мәнінде қажет жерде пайдалануға және Hazelcast кластер деректерінің айналымына қызмет көрсету шығындарын азайтуға мүмкіндік береді, біз онсыз да жасай аламыз. Біз кэштер туралы көп жаздық. осында и осында.

Сонымен қатар, Hazelcast-тегі сериализаторды Kryo-ға өзгерту бізге жақсы серпін берді. Ал Hazelcast ішіндегі ReplicatedMap-тен IMap + Near Cache-ке көшу бізге кластер бойынша деректер қозғалысын азайтуға мүмкіндік берді. 

Кішкене кеңес: кэш жаппай жарамсыз болған жағдайда, кейде екінші кэшті жылыту, содан кейін оған ауысу тактикасы қолданылады. Бұл тәсілмен біз екі есе жадты тұтынуды алуымыз керек сияқты, бірақ іс жүзінде бұл тәжірибеде қолданылған жүйелерде жадты тұтыну төмендеді.

Реактивті стек

Біз реактивті стекті көптеген жүйелерде қолданамыз. Біздің жағдайда бұл Webflux немесе корутиндері бар Котлин. Реактивті стек әсіресе енгізу-шығару операциялары баяу күтілетін жерде жақсы. Мысалы, баяу қызметтерге қоңыраулар, файлдық жүйемен немесе сақтау жүйелерімен жұмыс істеу.

Ең маңызды принцип - қоңырауларды блоктауды болдырмау. Реактивті фреймворктарда қалпақ астында жұмыс істейтін тірі қызмет көрсету ағындарының аз саны бар. JDBC драйверінің қоңырауы сияқты тікелей блоктау қоңырауын жасауға абайсызда рұқсат берсек, жүйе жай тоқтап қалады. 

Қателерді өзіңіздің орындау уақытындағы ерекше жағдайға айналдырып көріңіз. Бағдарламаны орындаудың нақты ағыны реактивті фреймворктарға ауысады, ал кодтың орындалуы сызықты емес болады. Нәтижесінде стек іздері арқылы ақауларды диагностикалау өте қиын. Мұнда шешім әрбір қате үшін нақты, объективті орындалу уақытының ерекшеліктерін жасау болар еді.

Elasticearch

Elasticsearch пайдаланған кезде пайдаланылмаған деректерді таңдамаңыз. Бұл, негізінен, өте қарапайым кеңес, бірақ көбінесе бұл ұмытылады. Бір уақытта 10 мыңнан астам жазбаларды таңдау қажет болса, Scroll функциясын пайдалану керек. Аналогияны пайдалану үшін ол реляциялық дерекқордағы курсорға ұқсайды. 

Қажет болмаса, кейінгі сүзгіні пайдаланбаңыз. Негізгі үлгідегі үлкен деректермен бұл әрекет дерекқорды айтарлықтай жүктейді. 

Қажет болса, жаппай операцияларды пайдаланыңыз.

API

API құрастырған кезде, жіберілетін деректерді азайтуға қойылатын талаптарды қосыңыз. Бұл әсіресе майданға қатысты: дәл осы торапта біз деректер орталықтарының арналарынан шығып, бізді клиентпен байланыстыратын арнада жұмыс істеп жатырмыз. Егер оның ең аз проблемасы болса, тым көп трафик теріс пайдаланушы тәжірибесін тудырады.

Соңында, көптеген деректерді тастамаңыз, тұтынушылар мен жеткізушілер арасындағы келісім-шарт туралы анық болыңыз.

Ұйымдастырушылық түрлендіру

Ерошкина Елена, директордың ақпараттық технологиялар жөніндегі орынбасары

Карантин орнап, онлайн даму қарқынын күрт арттыру және омниканалды қызметтерді енгізу қажеттілігі туындаған сәтте біз ұйымдастырушылық қайта құру процесінде болдық. 

Біздің құрылымның бір бөлігі өнім тәсілінің принциптері мен тәжірибесіне сәйкес жұмысқа ауыстырылды. Қазір әрбір өнімнің жұмысына және дамуына жауап беретін командалар құрылды. Мұндай командалардағы қызметкерлер 100% қатысады және олар үшін қолайлы нәрсеге, орналастыру құбырын орнатуға, техникалық тәжірибелерді енгізуге, сапаны қамтамасыз ету тәжірибесіне және т.б. байланысты Scrum немесе Kanban арқылы жұмысын құрылымдайды.

Бақытымызға орай, біздің өнім командаларының негізгі бөлігі онлайн және омниканалды қызметтер саласында болды. Бұл бізге тиімділікті жоғалтпай, мүмкіндігінше қысқа мерзімде (байыпты, сөзбе-сөз екі күнде) қашықтан жұмыс режиміне ауысуға мүмкіндік берді. Теңшелген процесс бізге жаңа жұмыс жағдайларына тез бейімделуге және жаңа функцияларды жеткізудің айтарлықтай жоғары қарқынын сақтауға мүмкіндік берді.

Сонымен қатар, біз онлайн бизнестің шекарасында тұрған командаларды күшейтуіміз керек. Сол кезде мұны тек ішкі ресурстар арқылы ғана жүзеге асыра алатынымыз белгілі болды. Ал 50-ге жуық адам екі аптаның ішінде бұрын жұмыс істеген саласын өзгертіп, өздері үшін жаңа өніммен жұмыс істеуге араласты. 

Бұл басқарудың арнайы күш-жігерін қажет етпеді, өйткені біз өзіміздің процесті ұйымдастырумен, өнімді техникалық жетілдірумен және сапаны қамтамасыз ету тәжірибесімен қатар, біз өз командаларымызды өзін-өзі ұйымдастыруға - әкімшілік ресурстарды тартпай-ақ, өздерінің өндірістік процесін басқаруға үйретеміз.

Біз басқару ресурстарын дәл сол сәтте қажет болған жерге - бизнеспен үйлестіруге бағыттай алдық: Біздің клиент үшін дәл қазір не маңызды, бірінші кезекте қандай функционалдылықты енгізу керек, өткізу қабілетін арттыру үшін не істеу керек тапсырыстарды жеткізу және өңдеу. Осының барлығы және нақты үлгі өнегесі осы кезеңде біздің өндірістік құн ағындарын шын мәнінде маңызды және қажетті нәрселермен жүктеуге мүмкіндік берді. 

Қашықтан жұмыс істеу және өзгерістердің жоғары қарқыны кезінде, бизнес көрсеткіштері әркімнің қатысуына байланысты болғанда, сіз «Бізде бәрі жақсы ма? Иә, жақсы сияқты». Өндіріс процесінің объективті өлшемдері қажет. Бізде бұлар бар, олар өнім топтарының көрсеткіштеріне қызығушылық танытатын кез келген адамға қол жетімді. Ең алдымен, команданың өзі, бизнес, қосалқы мердігерлер және басшылық.

Екі аптада бір рет әрбір командамен мәртебе өткізіледі, онда көрсеткіштер 10 минут бойы талданады, өндіріс процесіндегі кедергілер анықталады және бірлескен шешім әзірленеді: бұл кедергілерді жою үшін не істеу керек. Бұл жерде кез келген анықталған мәселе топтардың әсер ету аймағынан немесе ұқсас мәселеге тап болған әріптестердің тәжірибесінен тыс болса, дереу басшылықтан көмек сұрай аласыз.

Дегенмен, біз бірнеше рет жеделдету үшін (және бұл біздің алдымызға қойған мақсат) әлі де көп нәрсені үйреніп, оны күнделікті жұмысымызда жүзеге асыруымыз керек екенін түсінеміз. Дәл қазір біз өнімге деген көзқарасымызды басқа топтарға және жаңа өнімдерге кеңейтуді жалғастырудамыз. Ол үшін бізге жаңа формат – әдіскерлердің онлайн мектебін меңгеру керек болды.

Әдіскерлер, командаларға процесті құруға, байланыс орнатуға және жұмыс тиімділігін арттыруға көмектесетін адамдар негізінен өзгерістер агенттері болып табылады. Дәл қазір біздің бірінші топтың түлектері командалармен жұмыс істеп, олардың табысқа жетуіне көмектесуде. 

Менің ойымша, қазіргі жағдай біз үшін, мүмкін, өзіміз әлі толық біле бермейтін мүмкіндіктер мен перспективалар ашады. Бірақ дәл қазір жинап жатқан тәжірибе мен тәжірибе біздің дамудың дұрыс жолын таңдағанымызды, біз болашақта бұл жаңа мүмкіндіктерді жіберіп алмаймыз және Sportmaster алдында тұрған қиындықтарға дәл солай тиімді жауап бере алатынымызды растайды.

қорытындылар

Осы қиын кезеңде біз бағдарламалық жасақтаманы әзірлеуге негізделген негізгі принциптерді тұжырымдадық, менің ойымша, бұл мәселемен айналысатын әрбір компания үшін өзекті болады.

адамдар. Барлығы осыған сүйенеді. Қызметкерлер өз жұмысынан ләззат алуы және компанияның мақсаттары мен олар жұмыс істейтін өнімдердің мақсаттарын түсінуі керек. Және, әрине, олар кәсіби түрде дами алар еді. 

Технология. Компания өзінің технологиялық стекімен жұмыс істеуге жетілген көзқараспен қарауы және шын мәнінде қажет жерде құзыреттерді қалыптастыруы қажет. Бұл өте қарапайым және түсінікті естіледі. Және өте жиі еленбейді.

Процестер. Өнім топтары мен құзырет орталықтарының жұмысын дұрыс ұйымдастыру, онымен серіктес ретінде жұмыс істеу үшін бизнеспен өзара әрекеттестік орнату маңызды.

Жалпы, біз осылай аман қалдық. Заманымыздың басты тезисі маңдайынан қағып, тағы да расталды

Сіз көптеген дүкендер мен сіз жұмыс істейтін көптеген қалалары бар үлкен офлайн бизнес болсаңыз да, онлайн бизнесіңізді дамытыңыз. Бұл жай ғана қосымша сату арнасы немесе әдемі қолданба емес, ол арқылы сіз бірдеңе сатып ала аласыз (сонымен қатар бәсекелестердің әдемілері де бар). Бұл дауылға қарсы тұруға көмектесетін жай ғана қосалқы шина емес.

Бұл абсолютті қажеттілік. Ол үшін сіздің техникалық мүмкіндіктеріңіз бен инфрақұрылымыңыз ғана емес, адамдарыңыз бен процестеріңіз де дайын болуы керек. Бір-екі сағатта қосымша жадты, бос орынды тез сатып алуға, жаңа даналарды орналастыруға және т.б. болады. Бірақ адамдар мен процестер бұған алдын ала дайындалуы керек.

Ақпарат көзі: www.habr.com

пікір қалдыру