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

Hej Habr!

U 2017, tokom Crnog petka, opterećenje se povećalo za skoro jedan i po puta, a naši serveri su bili na svom limitu. Tokom godine, broj klijenata je značajno porastao i postalo je jasno da bez pažljive preliminarne pripreme platforma 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 navale aktivnosti i počeli smo unaprijed pokretati nove kapacitete tijekom cijele godine.

Naš tehnički direktor Andrej Čiž (chizh_andrey) govori kako smo se pripremali za Crni petak 2018, koje smo mjere poduzeli da izbjegnemo padove i, naravno, rezultate tako pažljive pripreme.

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

Danas želim da pričam o pripremama za Crni petak 2018. Zašto sada, kada je većina velikih rasprodaja iza nas? Počeli smo da se pripremamo otprilike godinu dana prije velikih događaja i pokušajima i greškama pronašli smo optimalno rješenje. Preporučujemo da unaprijed vodite računa o vrućim sezonama i spriječite prevare koje mogu isplivati ​​u najnepovoljnijem trenutku.
Materijal će biti koristan svima koji žele izvući maksimalnu dobit od takvih dionica, jer Tehnička strana problema ovdje nije inferiorna od marketinške strane.

Karakteristike prometa na velikim rasprodajama

Suprotno uvriježenom mišljenju, Crni petak nije samo jedan dan u godini, već gotovo čitava sedmica: prve ponude s popustom stižu 7-8 dana prije rasprodaje. Promet na web stranici počinje nesmetano rasti tokom cijele sedmice, dostiže vrhunac u petak i prilično naglo pada u subotu na uobičajene nivoe trgovine.

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

Ovo je važno uzeti u obzir: online prodavnice postaju posebno osjetljive na bilo kakva „usporavanja“ u sistemu. Osim toga, naš email bilten također je doživio značajan porast u broju podnesaka.

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

  • Praćenje i izdavanje preporuka za proizvode,
  • Izdavanje povezanih materijala (na primjer, slike dizajna blokova preporuka, kao što su strelice, logotipi, ikone i drugi vizualni elementi),
  • Pružanje slika proizvoda potrebne veličine (u ove svrhe imamo “ImageResizer” - podsistem koji preuzima sliku sa servera trgovine, kompresuje je na potrebnu veličinu i, putem servera za keširanje, proizvodi slike potrebne veličine za svaki proizvod u svaki blok preporuka).

Naime, tokom Crnog petka 2019. opterećenje servisa je poraslo za 40%, tj. broj događaja koje Retail Rocket sistem prati i obrađuje na stranicama online prodavnica porastao je sa 5 na 8 hiljada zahteva u sekundi. S obzirom na to da smo se pripremali za ozbiljnija opterećenja, lako smo preživjeli takav nalet.

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

Opšta priprema

Crni petak je radno vrijeme za svu maloprodaju i posebno e-trgovinu. Broj korisnika i njihova aktivnost u ovom trenutku značajno raste, pa smo se, kao i uvijek, temeljito pripremili za ovo radno vrijeme. Dodajmo ovdje i činjenicu da imamo mnogo online prodavnica povezanih ne samo u Rusiji, već i u Evropi, gdje je uzbuđenje mnogo veće, a nivo strasti gori od brazilske serije. Šta je potrebno učiniti da bismo bili potpuno spremni za povećana opterećenja?

Rad sa serverima

Prvo je bilo potrebno saznati šta nam je tačno potrebno za povećanje snage servera. Već u avgustu smo počeli naručivati ​​nove servere posebno za Crni petak - ukupno smo dodali 10 dodatnih mašina. Do novembra su bili u potpunosti u borbi.

U isto vrijeme, neke od mašina za izradu su ponovo instalirane za korištenje kao poslužitelji aplikacija. Odmah smo ih pripremili da koriste različite funkcije: kako za izdavanje preporuka, tako i za uslugu ImageResizer, tako da se, ovisno o vrsti opterećenja, svaka od njih može koristiti za jednu od ovih uloga. U normalnom načinu rada, Application i ImageResizer serveri imaju jasno definirane funkcije: prvi izdaju preporuke, drugi daju slike za pisma i blokove preporuka na web stranicama za online kupovinu. U pripremama za Crni petak, odlučeno je da se naprave svi serveri dvostruke namjene kako bi se promet između njih izbalansirao ovisno o vrsti preuzimanja.

Zatim smo dodali dva velika servera za Kafku (Apache Kafka) i dobili klaster od 5 moćnih mašina. Nažalost, nije sve išlo onako glatko kako bismo željeli: tokom procesa sinhronizacije podataka, dvije nove mašine zauzele su cijelu širinu mrežnog kanala i morali smo hitno smisliti kako brzo i sigurno izvršiti proces dodavanja za kompletnu infrastrukturu. Da bi riješili ovaj problem, naši administratori su morali hrabro žrtvovati svoje vikende.

Rad sa podacima

Pored servera, odlučili smo da optimizujemo fajlove kako bismo olakšali opterećenje i veliki korak za nas je bio prevođenje statičkih fajlova. Svi statički fajlovi koji su prethodno bili hostovani na serverima prebačeni su na S3 + Cloudfront. To smo željeli učiniti već duže vrijeme, jer je opterećenje na serveru bilo blizu graničnih vrijednosti, a sada se ukazala odlična prilika.

Nedelju dana pre Crnog petka, povećali smo vreme keširanja slika na 3 dana, tako da ako se ImageResizer sruši, prethodno keširane slike bi bile preuzete sa cdn-a. Također je smanjio opterećenje na našim serverima, jer što se slika duže čuva, to rjeđe trebamo trošiti resurse na promjenu veličine.

I na kraju, ali ne i najmanje važno: 5 dana prije Crnog petka, najavljen je moratorij na implementaciju bilo koje nove funkcionalnosti, kao i na sve radove na infrastrukturi – sva pažnja usmjerena je na suočavanje s povećanim opterećenjima.

Planovi za reagovanje u teškim situacijama

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 servisa.

Plan A: Smanjite opterećenje. Trebalo je biti aktivirano ako su naši serveri, zbog porasta opterećenja, prešli prihvatljivo vrijeme odgovora. U ovom slučaju, pripremili smo mehanizme za postepeno smanjenje opterećenja prebacivanjem dijela prometa na Amazon servere, koji bi na sve zahtjeve jednostavno odgovarali sa “200 OK” i davali prazan odgovor. Shvatili smo da se radi o degradaciji kvaliteta usluge, ali je očigledan izbor između činjenice da usluga uopće ne radi ili ne pokazuje preporuke za otprilike 10% prometa.

Plan B: Onemogućite usluge. Podrazumijevana djelimična degradacija usluge. Na primjer, smanjenje brzine izračunavanja osobnih preporuka kako bi se rasteretile neke baze podataka i komunikacijski kanali. U normalnom režimu, preporuke se izračunavaju u realnom vremenu, stvarajući različitu verziju internet prodavnice za svakog posetioca, ali u uslovima povećanog opterećenja, smanjenje brzine omogućava drugim osnovnim uslugama da nastave da rade.

Plan C: u slučaju Armagedona. Ukoliko dođe do potpunog kvara sistema, pripremili smo plan koji će nam omogućiti da budemo bezbedno isključeni sa naših korisnika. Kupci prodavnica jednostavno će prestati da vide preporuke; performanse online prodavnice neće ni na koji način patiti. Da bismo to uradili, morali bismo da resetujemo našu integracijsku datoteku kako bi novi korisnici prestali da komuniciraju sa uslugom. Odnosno, onemogućili bismo naš glavni kod za praćenje, servis bi prestao da prikuplja podatke i izračunava preporuke, a korisnik bi jednostavno vidio stranicu bez blokova preporuka. Za sve one koji su prethodno dobili integracijski fajl, omogućili smo mogućnost prebacivanja DNS zapisa na Amazon i 200 OK stub.

Ishodi

Podnosili smo cijeli teret čak i bez potrebe za dodatnim građevinskim mašinama. A zahvaljujući prethodnoj pripremi, nije nam bio potreban nijedan od razvijenih planova odgovora. Ali sav obavljen posao je neprocjenjivo iskustvo koje će nam pomoći da se nosimo s najneočekivanijim i ogromnim prilivom saobraćaja.
Kao i 2017. godine, opterećenje servisa je poraslo za 40%, a broj korisnika u online prodavnicama je na Crni petak povećan za 60%. Sve poteškoće i greške nastale su u pripremnom periodu, što je nas i naše klijente spasilo od nepredviđenih situacija.

Kako se nosite sa Crnim petkom? Kako se pripremate za kritična opterećenja?

izvor: www.habr.com

Dodajte komentar