Kako izdržati povećana opterećenja sustava: govorimo o velikim pripremama za Crni petak

Hej Habr!

U 2017., tijekom Crnog petka, opterećenje je poraslo gotovo jedan i pol puta, a naši su poslužitelji bili na svom limitu. Tijekom godine broj klijenata značajno je porastao i postalo je jasno da bez pažljive preliminarne pripreme platforma možda jednostavno neće izdržati opterećenja 2018.

Postavili smo najambiciozniji mogući cilj: željeli smo biti potpuno spremni za sve, pa i najsnažnije valove aktivnosti i počeli smo unaprijed pokretati nove kapacitete tijekom cijele godine.

Naš tehnički direktor Andrey Chizh (chizh_andrey) govori o tome kako smo se pripremali za Crni petak 2018., koje smo mjere poduzeli da bismo izbjegli padove i, naravno, o rezultatima tako pažljive pripreme.

Kako izdržati povećana opterećenja sustava: govorimo o velikim pripremama za Crni petak

Danas želim razgovarati o pripremama za Crni petak 2018. Zašto sada, kada je većina velikih rasprodaja iza nas? Počeli smo se pripremati otprilike godinu dana prije velikih događanja, te smo kroz pokušaje i pogreške pronašli optimalno rješenje. Preporučamo da se unaprijed pobrinete za vruće sezone i spriječite prijevare koje bi mogle iskrsnuti u najnepovoljnijem trenutku.
Materijal će biti koristan svima koji žele izvući maksimalnu dobit od takvih dionica, jer Tehnička strana pitanja ovdje nije inferiorna u odnosu na marketinšku stranu.

Značajke prometa na velikim rasprodajama

Suprotno uvriježenom mišljenju, Crni petak nije samo jedan dan u godini, već gotovo cijeli tjedan: prvi popusti stižu 7-8 dana prije rasprodaje. Promet na web-mjestu počinje glatko rasti tijekom tjedna, doseže svoj vrhunac u petak i prilično naglo pada u subotu na uobičajenu razinu trgovine.

Kako izdržati povećana opterećenja sustava: govorimo o velikim pripremama za Crni petak

Ovo je važno uzeti u obzir: online trgovine postaju posebno osjetljive na bilo kakva "usporavanja" u sustavu. Osim toga, naš redak biltena putem e-pošte također je doživio značajan porast u broju prijava.

Strateški nam je važno da Black Friday prođemo bez sudara, jer... Najvažnija funkcionalnost web stranica i newslettera trgovine ovisi o radu platforme, a to su:

  • Praćenje i izdavanje preporuka proizvoda,
  • Izdavanje povezanih materijala (na primjer, slike dizajna blokova preporuka, kao što su strelice, logotipi, ikone i drugi vizualni elementi),
  • Pružanje slika proizvoda tražene veličine (za te potrebe imamo “ImageResizer” - podsustav koji preuzima sliku sa poslužitelja trgovine, komprimira je na traženu veličinu i putem poslužitelja za predmemoriranje proizvodi slike potrebne veličine za svaki proizvod u svaki blok preporuke).

Naime, tijekom Crnog petka 2019. opterećenje usluge poraslo je za 40%, tj. broj događaja koje sustav Retail Rocket prati i obrađuje na stranicama online trgovina povećao se s 5 na 8 tisuća zahtjeva u sekundi. Zbog činjenice da smo se pripremali za ozbiljnija opterećenja, lako smo preživjeli takav val.

Kako izdržati povećana opterećenja sustava: govorimo o velikim pripremama za Crni petak

Opća obuka

Crni petak je radno vrijeme za svu maloprodaju, a posebno za e-trgovinu. Broj korisnika i njihova aktivnost u ovo vrijeme značajno raste, pa smo se, kao i uvijek, temeljito pripremili za ovo radno vrijeme. Dodajmo ovdje činjenicu da imamo mnogo internetskih trgovina povezanih ne samo u Rusiji, već iu Europi, gdje je uzbuđenje mnogo veće, a imamo razinu strasti goru od brazilskih serija. Što je potrebno učiniti kako bismo bili potpuno spremni za povećana opterećenja?

Rad sa serverima

Prvo je bilo potrebno saznati što nam točno treba za povećanje snage poslužitelja. Već u kolovozu počeli smo naručivati ​​nove servere posebno za Crni petak - ukupno smo dodali 10 dodatnih strojeva. Do studenog su bili u potpunosti u borbi.

U isto vrijeme, neki od strojeva za izgradnju ponovno su instalirani za korištenje kao aplikacijski poslužitelji. Odmah smo ih pripremili za korištenje različitih funkcija: kako za izdavanje preporuka, tako i za ImageResizer servis, kako bi se svaki od njih, ovisno o vrsti opterećenja, mogao koristiti za jednu od ovih uloga. U normalnom načinu rada poslužitelji Application i ImageResizer imaju jasno definirane funkcije: prvi izdaje preporuke, drugi isporučuje slike za pisma i blokove preporuka na web stranicama za online kupnju. U pripremi za Crni petak, odlučeno je da se svi poslužitelji naprave dvostruke namjene kako bi se promet između njih uravnotežio ovisno o vrsti preuzimanja.

Zatim smo dodali dva velika poslužitelja za Kafku (Apache Kafka) i dobili klaster od 5 moćnih strojeva. Nažalost, nije sve išlo glatko kako bismo željeli: tijekom procesa sinkronizacije podataka dva su nova stroja zauzela cijelu širinu mrežnog kanala i morali smo hitno smisliti kako proces dodavanja izvesti brzo i sigurno za cjelokupnu infrastrukturu. Kako bi riješili ovaj problem, naši administratori morali su hrabro žrtvovati svoje vikende.

Rad s podacima

Osim poslužitelja, odlučili smo optimizirati datoteke kako bismo rasteretili, a veliki korak za nas je bio prijevod statičkih datoteka. Sve statičke datoteke koje su prethodno bile smještene na poslužiteljima premještene su na S3 + Cloudfront. Dugo smo to željeli napraviti jer je opterećenje servera bilo blizu graničnih vrijednosti, a sada se ukazala odlična prilika.

Tjedan dana prije Crnog petka, povećali smo vrijeme predmemoriranja slika na 3 dana, tako da bi se slike u predmemoriji, ako se ImageResizer sruši, dohvatile s cdn-a. Također je smanjio opterećenje na našim poslužiteljima, jer što je slika dulje pohranjena, to rjeđe moramo trošiti resurse na promjenu veličine.

I za kraj, ali ne manje važno: 5 dana prije Crnog petka najavljen je moratorij na implementaciju bilo koje nove funkcionalnosti, kao i na bilo kakav rad s infrastrukturom - sva je pozornost usmjerena na suočavanje s povećanim opterećenjima.

Planovi za odgovor na teške situacije

Koliko god priprema bila kvalitetna, fakapi su uvijek mogući. I razvili smo 3 plana odgovora za moguće kritične situacije:

  • smanjenje opterećenja,
  • onemogućavanje nekih usluga,
  • potpuno gašenje usluge.

Plan A: Smanjite opterećenje. Trebao se aktivirati ako su, zbog porasta opterećenja, naši poslužitelji prekoračili prihvatljivo vrijeme odgovora. U ovom slučaju pripremili smo mehanizme za postupno smanjenje opterećenja prebacivanjem dijela prometa na Amazonove servere koji bi jednostavno na sve zahtjeve odgovarali s “200 OK” i davali prazan odgovor. Razumjeli smo da se radi o degradaciji kvalitete usluge, ali očit je izbor između činjenice da usluga uopće ne radi ili da ne prikazuje preporuke za otprilike 10% prometa.

Plan B: Onemogućite usluge. Implicitna djelomična degradacija usluge. Na primjer, smanjenje brzine izračuna osobnih preporuka kako bi se rasteretile neke baze podataka i komunikacijski kanali. U normalnom načinu rada, preporuke se izračunavaju u stvarnom vremenu, stvarajući drugačiju verziju internetske trgovine za svakog posjetitelja, ali u uvjetima povećanog opterećenja, smanjenje brzine omogućuje drugim osnovnim uslugama da nastave s radom.

Plan C: u slučaju Armagedona. Ukoliko dođe do potpunog kvara sustava, pripremili smo plan koji će nam omogućiti sigurno odvajanje od naših kupaca. Kupci u trgovini jednostavno će prestati vidjeti preporuke; izvedba internetske trgovine neće ni na koji način biti oštećena. Da bismo to učinili, morali bismo resetirati našu integracijsku datoteku kako bi novi korisnici prestali komunicirati s uslugom. Odnosno, onemogućili bismo naš glavni kod za praćenje, usluga bi prestala prikupljati podatke i izračunavati preporuke, a korisnik bi jednostavno vidio stranicu bez blokova preporuka. Za sve one koji su prethodno dobili integracijsku datoteku, osigurali smo opciju prebacivanja DNS zapisa na Amazon i 200 OK stub.

Rezultati

Podnijeli smo cijeli teret čak i bez potrebe za korištenjem dodatnih strojeva za gradnju. A zahvaljujući prethodnoj pripremi, nismo trebali ništa od razvijenih planova odgovora. Ali sav obavljeni posao neprocjenjivo je iskustvo koje će nam pomoći da se nosimo s najneočekivanijim i ogromnim priljevima prometa.
Kao i 2017., opterećenje servisa poraslo je za 40%, a broj korisnika u online trgovinama porastao je za 60% na Crni petak. Sve poteškoće i greške dogodile su se tijekom pripremnog razdoblja, što je nas i naše klijente spasilo od nepredviđenih situacija.

Kako se nosite s crnim petkom? Kako se pripremate za kritična opterećenja?

Izvor: www.habr.com

Dodajte komentar