Ciò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioni

Hello!

Mi chjamu Mikhail, sò u Direttore Diputatu di l'IT in a cumpagnia Sportmaster. Vogliu sparte a storia di cumu avemu trattatu cù e sfide chì sò ghjunte durante a pandemia.

In i primi ghjorni di a nova realità, u formatu di cummercializazioni offline di Sportmaster si congelava, è a carica nantu à u nostru canale in linea, principalmente in termini di consegna à l'indirizzu di u cliente, hà aumentatu 10 volte. In pocu settimane, avemu trasfurmatu una gigantesca attività offline in una online è adattatu u serviziu à i bisogni di i nostri clienti.

In fondu, ciò chì era essenzialmente a nostra operazione laterale hè diventata u nostru core business. L'impurtanza di ogni ordine in linea hè cresciutu assai. Era necessariu di salvà ogni rublu chì u cliente hà purtatu à a cumpagnia. 

Ciò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioni

Per risponde rapidamente à e dumande di i clienti, avemu apertu un centru di cuntattu supplementu in l'uffiziu principale di a cumpagnia, è avà ponu riceve circa 285 mila chjama à settimana. À u listessu tempu, avemu spustatu 270 magazzini à un novu formatu operativu senza cuntattu è sicuru, chì permette à i clienti di riceve ordini è di l'impiegati per mantene u so travagliu.

Durante u prucessu di trasfurmazioni, avemu scontru dui prublemi principali. Prima, a carica nantu à e nostre risorse in linea hè aumentata significativamente (Sergey vi dicerà cumu avemu trattatu questu). Siconda, u flussu di operazioni rare (pre-COVID) hè aumentatu parechje volte, chì à u turnu necessitava una grande quantità di automatizazione rapida. Per risolve stu prublema, avemu avutu a trasfiriri rapidamente risorse da e zone chì prima eranu i principali. Elena vi dicerà cumu avemu trattatu questu.

Funzionamentu di servizii in linea

Kolesnikov Sergey, rispunsevuli di u funziunamentu di a tenda online è microservices

Da u mumentu chì i nostri magazzini di vendita anu cuminciatu à chjude à i visitori, avemu cuminciatu à registrà un aumentu di metrica cum'è u numeru di utilizatori, u numeru di ordini posti in a nostra applicazione, è u numeru di richieste à l'applicazioni. 

Ciò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioniNumero di ordini da u 18 di marzu à u 31 di marzuCiò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioniNumaru di dumande à i microservizi di pagamentu in lineaCiò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioniU numeru di ordini fatti nantu à u situ web

In u primu gràficu vedemu chì l'aumentu era circa 14 volte, in u sicondu - 4 volte. Cunsideremu chì a metrica di u tempu di risposta di e nostre applicazioni hè a più indicativa. 

Ciò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioni

In questu graficu vedemu a risposta di i fronti è l'applicazioni, è per noi stessi avemu determinatu chì ùn avemu micca nutatu alcuna crescita cum'è tali.

Questu hè principalmente per u fattu chì avemu principiatu u travagliu preparatori à a fine di 2019. Avà i nostri servizii sò riservati, a tolleranza di difetti hè assicurata à u livellu di i servitori fisichi, i sistemi di virtualizazione, i dockers è i servizii in elli. À u listessu tempu, a capacità di i nostri risorse di u servitore ci permette di sustene parechje carichi.

U strumentu principale chì ci hà aiutatu in tutta sta storia era u nostru sistema di surviglianza. True, finu à pocu tempu ùn avemu micca avutu un sistema unicu chì ci permette di cullà metrica in tutti i strati, da u livellu di l'equipaggiu fisicu è u hardware à u livellu di metrica di l'affari. 

Formalmenti, ci era u monitoraghju in a cumpagnia, ma in regula era spargugliatu è era in l'area di rispunsabilità di dipartimenti specifichi. In fatti, quandu un incidente hè accadutu, ùn avemu quasi mai avutu una cunniscenza cumuna di ciò chì hè accadutu esattamente, ùn ci era micca cumunicazione, è spessu questu hà purtatu à curriri in circhuli per truvà è isolà u prublema in modu chì puderia esse risoltu.

À un certu puntu, avemu pensatu è decisu chì avemu avutu abbastanza di suppurtà questu - avemu bisognu di un sistema unificatu per vede tutta a stampa in tuttu. I principali tecnulugii chì sò inclusi in a nostra pila sò Zabbix cum'è un centru di almacenamentu d'alerta è metrica, Prometheus per a cullizzioni è l'almacenamiento di metriche di l'applicazioni, Stack ELK per u logu è l'almacenamiento di dati da tuttu u sistema di monitoraghju, è ancu Grafana per a visualizazione, Swagger, Docker. è altri utili è cose chì sò familiari per voi.

À u listessu tempu, avemu usatu micca solu ticnoluggìa dispunibbili nant'à u mercatu, ma dinù sviluppà qualchi di i nostri. Per esempiu, facemu servizii per l'integrazione di sistemi cù l'altri, vale à dì, un tipu di API per a cullizzioni di metriche. In più, avemu travagliatu nantu à i nostri propri sistemi di surviglianza - à u livellu di metrica di l'imprese utilizemu teste UI. È ancu un bot in Telegram per avvisà e squadre.

Pruvamu ancu di rende u sistema di surviglianza accessibile à e squadre in modu chì puderanu almacenà è travaglià indipindente cù e so metriche, cumprese l'installazione di alerti per alcune metriche strette chì ùn sò micca largamente usate. 

In tuttu u sistema, strivemu per a proattività è a localizazione di incidenti u più prestu pussibule. Inoltre, u numeru di i nostri microservizi è sistemi hè cresciutu significativamente recentemente, è u numeru di integrazioni hè cresciutu per quessa. È cum'è parte di ottimisà u prucessu di diagnostichi di incidenti à u livellu di l'integrazione, sviluppemu un sistema chì permette di fà cuntrolli di u sistema incruciatu è di vede u risultatu, chì permette di truvà i prublemi principali assuciati à l'impurtazioni è l'interazzione di i sistemi cù mutuu. 

Di sicuru, avemu sempre spaziu per cresce è sviluppà in termini di sistemi operativi, è avemu travagliatu attivamente nantu à questu. Pudete leghje più nantu à u nostru sistema di surviglianza ccà

Prove tecniche 

Orlov Sergey, dirige u centru di cumpetenza per u sviluppu web è mobile

Dapoi u principiu di a chjusura di i magazini fisici, avemu affruntatu diverse sfide da una perspettiva di sviluppu. Prima di tuttu, l'aumentu di carica cum'è tali. Hè chjaru chì s'ellu ùn hè micca pigliatu e misure appropritate, allora quandu una carica alta hè appiicata à u sistema, pò trasfurmà in una zucca cù un bang triste, o degrada completamente in u rendiment, o ancu perde a so funziunalità.

U sicondu aspettu, un pocu menu ovvi, hè chì u sistema sottu una carica alta hà da esse cambiatu assai rapidamente, adattendu à i cambiamenti in i prucessi di cummerciale. Calchì volta parechje volte à ghjornu. Parechje cumpagnie anu una regula chì s'ellu ci hè assai attività di cummercializazione, ùn ci hè bisognu di fà cambiamenti à u sistema. Nisunu à tutti, lasciate travaglià finu à ch'ella funziona.

È avemu essenzialmente avutu un Black Friday infinitu, durante u quale era necessariu cambià u sistema. È ogni errore, prublema o fallimentu in u sistema seria assai costu per l'affari.

In u futuru, diceraghju chì avemu riesciutu à affruntà queste teste, tutti i sistemi resistenu à a carica, sò stati facilmente scalati, è ùn avemu micca sperimentatu alcunu fallimentu tecnicu globale.

Ci sò quattru pilastri nantu à quale si basa a capacità di u sistema di resistà carichi elevati. U primu di elli hè u monitoraghju, chì avete lettu ghjustu sopra. Senza un sistema di surviglianza integratu, hè quasi impussibile di truvà i colli di u sistema. Un bon sistema di surviglianza hè cum'è a ropa di casa; duverebbe esse còmode è adattatu per voi.

U sicondu aspettu hè a prova. Pigliemu stu puntu assai seriu: scrivemu unità classiche, testi di integrazione, teste di carica è assai altri per ogni sistema. Scrivemu ancu una strategia di teste, è à u stessu tempu pruvemu à aumentà u livellu di teste à u puntu chì ùn avemu più bisognu di cuntrolli manuali.

U terzu pilastru hè CI/CD Pipeline. I prucessi di custruisce, pruvà è implementà una applicazione deve esse automatizata quant'è pussibule; ùn deve esse micca intervenzione manuale. U tema di CI / CD Pipeline hè abbastanza prufonda, è l'aghju toccu solu in breve. Hè vale a pena nutà chì avemu una lista di cuntrollu CI / CD Pipeline, chì ogni squadra di produttu passa cù l'aiutu di i centri di cumpetenza.

Ciò chì ci hà aiutatu à adattà rapidamente à u cummerciu in linea in e novi cundizioniÈ quì hè a lista di cuntrollu

In questu modu, parechji scopi sò ottenuti. Questa hè a versione di l'API è a funzione di basculazione per evità u trenu di liberazione, è ottene una copertura di diverse teste à un livellu tali chì a prova hè cumplettamente automatizata, implementazioni sò senza saldatura, è cusì.

U quartu pilastru hè principii architetturali è soluzioni tecniche. Pudemu parlà assai di l'architettura per un bellu pezzu, ma vogliu enfatizà un paru di principii chì mi piacerebbe fucalizza.

Prima, vi tocca à sceglie arnesi spicializati per compiti specifichi. Iè, sona ovvi, è hè chjaru chì e unghie deve esse guidate cù un martellu, è i braccialetti anu da esse disassemblati cù cacciavite speciale. Ma in a nostra età, assai arnesi strive per l'universalizazione per copre u segmentu massimu di l'utilizatori: basa di dati, cache, frameworks è u restu. Per esempiu, se pigliate a basa di dati MongoDB, travaglia cù transazzione multi-documentu, è a basa di dati Oracle travaglia cù json. È pare chì tuttu pò esse usatu per tuttu. Ma s'ellu ci vole à a produtividade, allora avemu bisognu di capiscenu chjaramente i punti di forza è di debule di ogni strumentu è aduprà quelli chì avemu bisognu per a nostra classa di attività. 

Siconda, quandu u disignu di sistemi, ogni aumentu di cumplessità deve esse ghjustificatu. Avemu da mantene sempre questu in mente; u principiu di l'accoppiamentu bassu hè cunnisciutu da tutti. Credu chì deve esse appiicata à u livellu di un serviziu specificu, è à u livellu di u sistema sanu, è à u livellu di u paisaghju architettonicu. A capacità di scala orizzontalmente ogni cumpunente di u sistema longu u percorsu di carica hè ancu impurtante. Sè vo avete sta capacità, scaling ùn sarà difficiule.

Parlendu di suluzioni tecniche, avemu dumandatu à e squadre di produttu di preparà un novu settore di raccomandazioni, idee è suluzioni, chì anu implementatu in preparazione per a prossima onda di carichi di travagliu.

Keshi

Hè necessariu avvicinà cunsciente l'scelta di cache lucali è distribuiti. Calchì volta hè sensu di utilizà tramindui in u stessu sistema. Per esempiu, avemu sistemi in quale alcune di e dati sò essenzialmente un cache di vetrina, vale à dì, a fonte di l'aghjurnamenti si trova daretu à u sistema stessu, è i sistemi ùn cambianu micca. sta dati. Per questu approcciu usemu Caffeine Cache locale. 

E ci sò dati chì u sistema cambia attivamente durante l'operazione, è quì avemu digià aduprà una cache distribuita cù Hazelcast. Stu approcciu ci permette di utilizà i beneficii di una cache distribuita induve sò veramente necessarii, è minimizzà i costi di serviziu di circulazione di dati di cluster Hazelcast induve pudemu fà senza. Avemu scrittu assai nantu à i cache. ccà и ccà.

Inoltre, cambià u serializzatore à Kryo in Hazelcast ci hà datu un bonu impulsu. È a transizione da ReplicatedMap à IMap + Near Cache in Hazelcast ci hà permessu di minimizzà u muvimentu di dati in u cluster. 

Un pocu cunsigliu: in casu di invalidazione di cache di massa, a tattica di scaldà a seconda cache è poi cambià à questu hè qualchì volta applicabile. Sembra chì cù questu approcciu duvemu ottene u doppiu cunsumu di memoria, ma in pratica, in quelli sistemi induve questu era praticatu, u cunsumu di memoria hè diminuitu.

Stack reattivu

Utilizemu a pila reattiva in un gran numaru di sistemi. In u nostru casu, questu hè Webflux o Kotlin cù coroutines. A pila reattiva hè soprattuttu bona induve aspittemu operazioni lenti di input-output. Per esempiu, chjama à i servizii lenti, travagliendu cù u sistema di schedari o sistemi di almacenamento.

U principiu più impurtante hè di evità di bluccà e chjama. I quadri reattivi anu un picculu numeru di fili di serviziu in diretta chì currenu sottu u cappucciu. Se ci permettemu senza cura di fà una chjama di bloccu direttu, cum'è una chjama di u driver JDBC, u sistema si ferma solu. 

Pruvate di trasfurmà l'errori in a vostra propria eccezzioni di runtime. U flussu attuale di l'esekzione di u prugramma passa à i quadri reattivi, è l'esekzione di codice diventa non lineare. In u risultatu, hè assai difficiuli di diagnosticà i prublemi cù tracce di stack. È a suluzione quì seria di creà eccezzioni di runtime chjaru è obiettivu per ogni errore.

Elasticsearch

Quandu aduprate Elasticsearch, ùn selezziunate micca dati inutilizati. Questu, in principiu, hè ancu un cunsigliu assai simplice, ma più spessu questu hè ciò chì hè scurdatu. Sè avete bisognu di selezziunà più di 10 mila dischi à u tempu, avete bisognu di utilizà Scroll. Per utilizà una analogia, hè un pocu cum'è un cursore in una basa di dati relazionale. 

Ùn aduprate micca u postfiltru, salvu micca necessariu. Cù grandi dati in a mostra principale, sta operazione carica assai a basa di dati. 

Aduprate operazioni di massa induve applicabile.

API

Quandu cuncepisce una API, include esigenze per minimizzà i dati trasmessi. Questu hè sopratuttu veru in cunnessione cù u fronte: hè in questa junction chì andemu oltre i canali di i nostri centri di dati è sò digià travagliatu nantu à u canali chì ci cunnetta cù u cliente. S'ellu hà u minimu prublema, troppu trafficu provoca una sperienza d'utilizatore negativa.

È finarmenti, ùn scaccià micca un saccu di dati, sia chjaru nantu à u cuntrattu trà i cunsumatori è i fornituri.

Trasformazione urganisazione

Eroshkina Elena, Diputatu Direttore di IT

À u mumentu chì a quarantena hè accaduta, è hè ghjunta a necessità di aumentà drasticamente u ritmu di u sviluppu in linea è di intruduce servizii omnicanale, eramu digià in u prucessu di trasfurmazioni urganisazione. 

Parte di a nostra struttura hè stata trasferita à u travagliu secondu i principii è e pratiche di l'approcciu di u produttu. Sò stati formati squadre chì sò oghji rispunsevuli di u funziunamentu è u sviluppu di ogni pruduttu. L'impiegati in tali squadre sò 100% implicati è strutturanu u so travagliu cù Scrum o Kanban, secondu ciò chì hè preferibile per elli, stallà un pipeline di implementazione, implementendu pratiche tecniche, pratiche di assicurazione di qualità, è assai di più.

Per furtuna, a maiò parte di e nostre squadre di produttu eranu in l'area di servizii in linea è omnicanale. Questu ci hà permessu di passà à u modu di travagliu remoto in u più brevi tempu pussibule (seriu, literalmente in dui ghjorni) senza perdita di efficienza. U prucessu persunalizatu ci hà permessu di adattà rapidamente à e novi cundizioni di travagliu è di mantene un ritmu abbastanza altu di consegna di novi funziunalità.

Inoltre, avemu bisognu di rinfurzà quelli squadre chì sò in a fruntiera di l'affari in linea. À quellu mumentu hè diventatu chjaru chì pudemu fà solu cù risorse internu. E circa 50 persone in duie simane anu cambiatu l'area induve travagliavanu prima è anu participatu à travaglià in un pruduttu chì era novu per elli. 

Questu ùn hà micca bisognu di alcunu sforzu di gestione speciale, perchè cù l'urganizazione di u nostru propiu prucessu, a migliione tecnica di u pruduttu è e pratiche d'assicuranza di qualità, insegnemu à i nostri squadre à autourganizà - per gestisce u so propiu prucessu di produzzione senza implicazione di risorse amministrative.

Pudemu focalizà e nostre risorse di gestione esattamente induve era necessariu in quellu mumentu - nantu à a coordinazione cù l'affari: ciò chì hè impurtante per u nostru cliente avà, chì funziunalità deve esse implementatu prima, ciò chì deve esse fattu per aumentà a nostra capacità di throughput. per furnisce è processà ordini. Tuttu chistu è un mudellu di rolu chjaru hà permessu durante stu periodu di carricà i nostri flussi di valore di produzzione cù ciò chì hè veramente impurtante è necessariu. 

Hè chjaru chì cù u travagliu remotu è un altu ritmu di cambiamentu, quandu l'indicatori di l'affari dipendenu da a participazione di tutti, ùn pudete micca s'appoghjanu solu à i sentimenti interni da a serie "Tuttu va bè cun noi? Iè, pare bè ". E metriche oggettive di u prucessu di produzzione sò necessarii. Avemu questi, sò dispunibuli per tutti quelli chì anu interessatu à e metriche di e squadre di produttu. Prima di tuttu, a squadra stessu, l'affari, i subcontrattori è a gestione.

Una volta ogni duie simane, un statutu hè tenutu cù ogni squadra, induve e metriche sò analizate per 10 minuti, i colli di bottiglia in u prucessu di produzzione sò identificati, è si sviluppa una suluzione cumuna: ciò chì si pò fà per eliminà questi colli di bottiglia. Quì pudete subitu dumandà aiutu da a gestione se ogni prublema identificata hè fora di a zona di influenza di e squadre, o l'expertise di i culleghi chì pò avè digià scontru un prublema simili.

Tuttavia, avemu capitu chì per accelerà parechje volte (è questu hè esattamente u scopu chì avemu stabilitu per noi stessi), avemu sempre bisognu di amparà assai è implementà in u nostru travagliu di ogni ghjornu. Avà cuntinuemu à scala u nostru approcciu di produttu à altre squadre è novi prudutti. Per fà questu, avemu avutu à ammaistrà un novu formatu per noi - una scola in linea di metodologi.

I metodologi, e persone chì aiutanu e squadre à custruisce un prucessu, stabiliscenu cumunicazioni è migliurà l'efficienza di u travagliu, sò essenzialmente agenti di cambiamentu. Avà, i graduati di a nostra prima cohorte travaglianu cù squadre è aiutanu à avè successu. 

Pensu chì a situazione attuale apre per noi opportunità è prospettive chì forse noi stessi ùn simu ancu cunzignati. Ma l'esperienza è a pratica chì avemu guadagnatu avà cunfirma chì avemu sceltu a strada ghjusta di u sviluppu, ùn mancaremu micca sti novi opportunità in u futuru è puderemu risponde in modu cusì efficace à e sfide chì Sportmaster hà da affruntà.

scuperti

Duranti stu tempu difficiule, avemu formulatu i principii principali nantu à quale u sviluppu di u software si basa, chì, pensu, serà pertinenti per ogni cumpagnia chì si tratta di questu.

populu. Questu hè ciò chì tuttu si basa. L'impiegati devenu gudiri u so travagliu è capiscenu i scopi di a cumpagnia è i scopi di i prudutti chì travaglianu. E, sicuru, puderanu sviluppà prufessiunale. 

Tecnulugia. Hè necessariu per a cumpagnia di piglià un approcciu maturu per travaglià cù a so pila di tecnulugia è di custruisce cumpetenze induve hè veramente necessariu. Sona assai simplice è evidenti. È assai spessu ignoratu.

I prucessi. Hè impurtante d'urganizà bè u travagliu di i squadre di produttu è i centri di cumpetenza, per stabilisce interaczione cù l'affari per travaglià cun ellu cum'è un cumpagnu.

In generale, hè quasi cumu sopravvivemu. A tesi principale di u nostru tempu hè stata cunfirmata una volta di più, cù un clicu rivuluvutu nantu à a fronte

Ancu s'è vo site una grande impresa offline cù parechje magazzini è una mansa di cità induve operate, sviluppate a vostra attività in linea. Questu ùn hè micca solu un canale di vendita supplementu o una bella applicazione per mezu di quale pudete ancu cumprà qualcosa (è ancu perchè i cuncurrenti anu ancu belli). Questu ùn hè micca un pneumaticu di ricambiu per aiutà vi a tempesta.

Questu hè una necessità assoluta. Per quale ùn solu e vostre capacità tecniche è infrastruttura deve esse preparatu, ma ancu e vostre persone è prucessi. Dopu tuttu, pudete cumprà rapidamente memoria supplementu, spaziu, implementà novi casi, etc. in un paru d'ore. Ma e persone è i prucessi anu da esse preparatu per questu in anticipu.

Source: www.habr.com

Add a comment