Cum să reziste la sarcini crescute pe sistem: vorbim despre pregătiri la scară largă pentru Black Friday

Hei Habr!

În 2017, în timpul Black Friday, încărcarea a crescut de aproape o dată și jumătate, iar serverele noastre au fost la limita. De-a lungul anului, numărul de clienți a crescut semnificativ și a devenit clar că, fără o pregătire preliminară atentă, platforma ar putea pur și simplu să nu reziste sarcinilor din 2018.

Ne-am stabilit cel mai ambițios obiectiv posibil: ne-am dorit să fim pe deplin pregătiți pentru orice, chiar și pentru cele mai puternice, val de activitate și am început să lansăm noi capacități în avans pe tot parcursul anului.

CTO Andrey Chizh (chizh_andrey) povestește cum ne-am pregătit pentru Black Friday 2018, ce măsuri am luat pentru a evita căderile și, bineînțeles, rezultatele unei pregătiri atât de atente.

Cum să reziste la sarcini crescute pe sistem: vorbim despre pregătiri la scară largă pentru Black Friday

Astăzi vreau să vorbesc despre pregătirile pentru Black Friday 2018. De ce acum, când majoritatea vânzărilor majore sunt în urmă? Am început să ne pregătim cu aproximativ un an înainte de evenimente de amploare, iar prin încercări și erori am găsit soluția optimă. Vă recomandăm să aveți grijă de anotimpurile calde din timp și să preveniți înșelătoriile care pot apărea în cel mai inoportun moment.
Materialul va fi util tuturor celor care vor să stoarce profitul maxim din astfel de stocuri, deoarece Latura tehnică a problemei nu este inferioară laturii de marketing aici.

Caracteristici ale traficului la vânzări mari

Contrar credinței populare, Black Friday nu este doar o zi pe an, ci aproape o săptămână întreagă: primele oferte de reducere ajung cu 7-8 zile înainte de vânzare. Traficul pe site începe să crească fără probleme pe parcursul săptămânii, atinge apogeul vineri și scade brusc sâmbătă la nivelurile obișnuite ale magazinului.

Cum să reziste la sarcini crescute pe sistem: vorbim despre pregătiri la scară largă pentru Black Friday

Acest lucru este important de luat în considerare: magazinele online devin deosebit de sensibile la orice „încetinire” a sistemului. În plus, linia noastră de buletine informative prin e-mail a cunoscut și o creștere semnificativă a numărului de trimiteri.

Este important din punct de vedere strategic pentru noi să trecem prin Black Friday fără accidente, pentru că... Cea mai importantă funcționalitate a site-urilor web și a newsletterelor magazinelor depinde de funcționarea platformei și anume:

  • Urmărirea și emiterea de recomandări de produse,
  • Emiterea de materiale conexe (de exemplu, imagini ale designului blocurilor de recomandare, cum ar fi săgeți, logo-uri, pictograme și alte elemente vizuale),
  • Furnizarea de imagini ale produselor de dimensiunea necesară (în aceste scopuri avem „ImageResizer” - un subsistem care descarcă o imagine de pe serverul magazinului, o comprimă la dimensiunea necesară și, prin serverele de cache, produce imagini de dimensiunea necesară pentru fiecare produs din fiecare bloc de recomandare).

De fapt, în timpul Black Friday 2019, sarcina serviciului a crescut cu 40%, i.e. numărul de evenimente pe care sistemul Retail Rocket le urmărește și le procesează pe site-urile magazinelor online a crescut de la 5 la 8 mii de solicitări pe secundă. Datorită faptului că ne pregăteam pentru încărcături mai serioase, am supraviețuit cu ușurință unui astfel de val.

Cum să reziste la sarcini crescute pe sistem: vorbim despre pregătiri la scară largă pentru Black Friday

Pregătire generală

Vinerea neagră este o perioadă aglomerată pentru toate comerțul cu amănuntul și comerțul electronic în special. Numărul de utilizatori și activitatea lor în acest moment crește semnificativ, așa că, ca întotdeauna, ne-am pregătit temeinic pentru această perioadă aglomerată. Să adăugăm aici faptul că avem multe magazine online conectate nu numai în Rusia, ci și în Europa, unde entuziasmul este mult mai mare și obținem un nivel de pasiune mai rău decât seria braziliană. Ce trebuie făcut pentru a fi pe deplin pregătit pentru sarcini crescute?

Lucrul cu serverele

Mai întâi, a fost necesar să aflăm de ce avem nevoie exact pentru a crește puterea serverului. Deja în august, am început să comandăm noi servere special pentru Black Friday - în total am adăugat 10 mașini suplimentare. Până în noiembrie erau complet în luptă.

În același timp, unele dintre mașinile de construcție au fost reinstalate pentru a fi utilizate ca servere de aplicații. I-am pregătit imediat să folosească diferite funcții: atât pentru emiterea de recomandări, cât și pentru serviciul ImageResizer, astfel încât, în funcție de tipul de încărcare, fiecare dintre ele să poată fi folosit pentru unul dintre aceste roluri. În modul normal, serverele Application și ImageResizer au funcții clar definite: primul emit recomandări, cel din urmă furnizează imagini pentru scrisori și blocuri de recomandări pe site-urile de cumpărături online. În pregătirea pentru Black Friday, s-a decis realizarea tuturor serverelor cu dublu scop pentru a echilibra traficul între ele în funcție de tipul de descărcare.

Apoi am adăugat două servere mari pentru Kafka (Apache Kafka) și am obținut un cluster de 5 mașini puternice. Din păcate, totul nu a mers atât de bine cum ne-am dori: în timpul procesului de sincronizare a datelor, două mașini noi au ocupat întreaga lățime a canalului de rețea și a trebuit să ne dăm seama urgent cum să efectuăm procesul de adăugare rapid și în siguranță pentru intreaga infrastructura. Pentru a rezolva această problemă, administratorii noștri au fost nevoiți să-și sacrifice cu curaj weekend-urile.

Lucrul cu date

Pe lângă servere, am decis să optimizăm fișierele pentru a ușura încărcarea și un pas important pentru noi a fost traducerea fișierelor statice. Toate fișierele statice care au fost găzduite anterior pe servere au fost mutate în S3 + Cloudfront. Ne dorim să facem acest lucru de mult timp, deoarece încărcarea de pe server era aproape de valorile limită, iar acum a apărut o mare oportunitate.

Cu o săptămână înainte de Black Friday, am mărit timpul de stocare în cache a imaginii la 3 zile, astfel încât dacă ImageResizer se prăbușește, imaginile stocate anterior în cache să fie preluate din cdn. De asemenea, a redus sarcina pe serverele noastre, deoarece cu cât imaginea este stocată mai mult timp, cu atât mai rar trebuie să cheltuim resurse pentru redimensionare.

Și nu în ultimul rând: cu 5 zile înainte de Black Friday, a fost anunțat un moratoriu privind implementarea oricărei funcționalități noi, precum și asupra oricărei lucrări cu infrastructura - toată atenția este îndreptată spre a face față sarcinilor crescute.

Planuri de răspuns la situații dificile

Indiferent de cât de de înaltă calitate este preparatul, fakaps-urile sunt întotdeauna posibile. Și am dezvoltat 3 planuri de răspuns pentru posibile situații critice:

  • reducerea sarcinii,
  • dezactivarea unor servicii,
  • oprirea completă a serviciului.

Planul A: Reduceți sarcina. Ar fi trebuit activat dacă, din cauza unei creșteri a încărcăturii, serverele noastre au depășit termenele de răspuns acceptabile. În acest caz, am pregătit mecanisme pentru reducerea treptată a încărcăturii prin comutarea unei părți din trafic pe serverele Amazon, care pur și simplu ar răspunde la toate solicitările cu „200 OK” și ar da un răspuns gol. Am înțeles că aceasta a fost o degradare a calității serviciului, dar alegerea între faptul că serviciul nu funcționează deloc sau nu prezintă recomandări pentru aproximativ 10% din trafic este evidentă.

Planul B: Dezactivați serviciile. Degradarea implicită parțială a serviciului. De exemplu, reducerea vitezei de calcul a recomandărilor personale pentru a descărca unele baze de date și canale de comunicare. În modul normal, recomandările sunt calculate în timp real, creând o versiune diferită a magazinului online pentru fiecare vizitator, dar în condiții de încărcare crescută, reducerea vitezei permite altor servicii de bază să continue să funcționeze.

Planul C: în cazul Armaghedonului. Dacă apare o defecțiune completă a sistemului, am pregătit un plan care ne va permite să fim deconectați în siguranță de la clienții noștri. Cumpărătorii din magazine pur și simplu nu vor mai vedea recomandări; performanța magazinului online nu va avea de suferit în niciun fel. Pentru a face acest lucru, ar trebui să resetam fișierul nostru de integrare, astfel încât noii utilizatori să nu mai interacționeze cu serviciul. Adică, am dezactiva codul nostru principal de urmărire, serviciul ar înceta să colecteze date și să calculeze recomandări, iar utilizatorul ar vedea pur și simplu o pagină fără blocuri de recomandare. Pentru toți cei care au primit anterior un fișier de integrare, am oferit opțiunea de a comuta înregistrarea DNS la Amazon și stub-ul 200 OK.

Rezultatele

Am manipulat întreaga încărcătură chiar și fără a fi nevoie să folosim mașini de construcție suplimentare. Și datorită pregătirii în avans, nu am avut nevoie de niciunul dintre planurile de răspuns dezvoltate. Dar toată munca depusă este o experiență neprețuită care ne va ajuta să facem față celor mai neașteptate și uriașe afluxuri de trafic.
Ca și în 2017, încărcarea serviciului a crescut cu 40%, iar numărul utilizatorilor din magazinele online a crescut cu 60% de Black Friday. Toate dificultățile și greșelile au apărut în perioada pregătitoare, ceea ce ne-a salvat pe noi și pe clienții noștri de situații neprevăzute.

Cum te descurci cu Black Friday? Cum vă pregătiți pentru sarcini critice?

Sursa: www.habr.com

Adauga un comentariu