Kako vzdržati povečane obremenitve sistema: govorimo o obsežnih pripravah na črni petek

Pozdravljeni, Habr!

V letu 2017, med črnim petkom, se je obremenitev povečala skoraj enkrat in pol, naši strežniki pa so bili na meji. Skozi leto se je število strank znatno povečalo in postalo je jasno, da brez skrbne predhodne priprave platforma morda preprosto ne bo zdržala obremenitev leta 2018.

Zadali smo si najambicioznejši možni cilj: želeli smo biti popolnoma pripravljeni na vse, tudi najmočnejše skoke aktivnosti, in začeli z zagonom novih zmogljivosti skozi vse leto.

Naš tehnični direktor Andrey Chizh (chizh_andrey) pove, kako smo se pripravili na črni petek 2018, kakšne ukrepe smo sprejeli, da bi se izognili padcem, in seveda kakšne so posledice tako skrbne priprave.

Kako vzdržati povečane obremenitve sistema: govorimo o obsežnih pripravah na črni petek

Danes želim govoriti o pripravah na črni petek 2018. Zakaj zdaj, ko je večina večjih razprodaj za nami? Pripravljati smo se začeli kakšno leto pred večjimi dogodki in s poskusi in napakami našli optimalno rešitev. Priporočamo, da vnaprej poskrbite za vroče sezone in preprečite prevare, ki se lahko pojavijo v najbolj neprimernem trenutku.
Gradivo bo koristno za vse, ki želijo iz takih delnic iztisniti največji dobiček, ker Tehnična stran vprašanja tukaj ni slabša od tržne strani.

Značilnosti prometa pri velikih prodajah

V nasprotju s splošnim prepričanjem črni petek ni le en dan v letu, ampak skoraj cel teden: prve ponudbe s popusti pridejo 7-8 dni pred prodajo. Promet na spletni strani začne nemoteno naraščati ves teden, doseže vrhunec v petek in v soboto močno pade na običajno raven trgovine.

Kako vzdržati povečane obremenitve sistema: govorimo o obsežnih pripravah na črni petek

To je pomembno upoštevati: spletne trgovine postanejo še posebej občutljive na morebitne "upočasnitve" v sistemu. Poleg tega se je v naši liniji e-novic prav tako občutno povečalo število oddaj.

Za nas je strateško pomembno, da črni petek preživimo brez trkov, saj... Najpomembnejše funkcionalnosti spletnih strani in glasil trgovin so odvisne od delovanja platforme, in sicer:

  • Sledenje in izdajanje priporočil za izdelke,
  • Izdaja povezanih materialov (na primer slike oblikovanja priporočilnih blokov, kot so puščice, logotipi, ikone in drugi vizualni elementi),
  • Zagotavljanje slik izdelkov zahtevane velikosti (za te namene imamo “ImageResizer” - podsistem, ki prenese sliko iz strežnika trgovine, jo stisne na zahtevano velikost in preko strežnikov za predpomnjenje izdela slike zahtevane velikosti za vsak izdelek v vsak blok priporočil).

Pravzaprav se je med črnim petkom 2019 obremenitev storitve povečala za 40 %, tj. število dogodkov, ki jih sistem Retail Rocket spremlja in obdeluje na straneh spletnih trgovin, se je povečalo s 5 na 8 tisoč zahtevkov na sekundo. Ker smo se pripravljali na resnejše obremenitve, smo tak val z lahkoto preživeli.

Kako vzdržati povečane obremenitve sistema: govorimo o obsežnih pripravah na črni petek

Splošna priprava

Črni petek je naporen čas za vso maloprodajo in zlasti e-trgovino. Število uporabnikov in njihova aktivnost v tem času močno narašča, zato smo se, kot vedno, na ta pester čas temeljito pripravili. Dodajmo še dejstvo, da imamo veliko spletnih trgovin povezanih ne samo v Rusiji, ampak tudi v Evropi, kjer je navdušenje veliko večje in dobimo stopnjo strasti, ki je slabša od brazilskih serij. Kaj je treba storiti, da smo popolnoma pripravljeni na povečane obremenitve?

Delo s strežniki

Najprej je bilo treba ugotoviti, kaj točno potrebujemo za povečanje moči strežnika. Že avgusta smo začeli naročati nove strežnike posebej za črni petek - skupaj smo dodali 10 dodatnih strojev. Do novembra so bili popolnoma v boju.

Hkrati so bili nekateri gradbeni stroji znova nameščeni za uporabo kot aplikacijski strežniki. Takoj smo jih pripravili na uporabo različnih funkcij: tako za izdajo priporočil kot za storitev ImageResizer, tako da je lahko vsaka od njih, odvisno od vrste obremenitve, uporabljena za eno od teh vlog. V običajnem načinu imata strežnika Application in ImageResizer jasno opredeljene funkcije: prvi izdaja priporočila, drugi zagotavlja slike za pisma in bloke priporočil na spletnih mestih za spletno nakupovanje. V pripravah na črni petek je bilo odločeno, da se vsi strežniki naredijo dvojnonamenski, da se uravnoteži promet med njimi glede na vrsto prenosa.

Nato smo dodali dva velika strežnika za Kafko (Apache Kafka) in dobili gručo 5 zmogljivih strojev. Žal ni šlo vse tako gladko, kot bi si želeli: med procesom sinhronizacije podatkov sta dva nova stroja zasedla celotno širino omrežnega kanala in morali smo nujno ugotoviti, kako postopek dodajanja izvesti hitro in varno za celotno infrastrukturo. Da bi rešili to težavo, so morali naši skrbniki pogumno žrtvovati svoje vikende.

Delo s podatki

Poleg strežnikov smo se za razbremenitev odločili optimizirati datoteke in velik korak za nas je bil prevod statičnih datotek. Vse statične datoteke, ki so bile prej gostovane na strežnikih, so bile premaknjene v S3 + Cloudfront. To smo si želeli že dolgo časa, saj je bila obremenitev strežnika blizu mejnih vrednosti in zdaj se je pokazala odlična priložnost.

Teden dni pred črnim petkom smo podaljšali čas predpomnjenja slik na 3 dni, tako da bi se v primeru zrušitve ImageResizerja predhodno predpomnjene slike pridobile iz cdn-ja. Zmanjšala je tudi obremenitev naših strežnikov, saj dlje kot je slika shranjena, redkeje moramo porabiti sredstva za spreminjanje velikosti.

In nenazadnje: 5 dni pred črnim petkom je bil objavljen moratorij na uvajanje kakršnih koli novih funkcionalnosti, pa tudi na vsa dela z infrastrukturo - vsa pozornost je usmerjena v obvladovanje povečanih obremenitev.

Načrti za odzivanje na težke situacije

Ne glede na to, kako kakovostna je priprava, so fakapi vedno možni. Razvili smo 3 odzivne načrte za morebitne kritične situacije:

  • zmanjšanje obremenitve,
  • onemogočanje nekaterih storitev,
  • popolna zaustavitev storitve.

Načrt A: Zmanjšajte obremenitev. Aktivirati bi se moralo, če bi naši strežniki zaradi povečane obremenitve presegli sprejemljive odzivne čase. V tem primeru imamo pripravljene mehanizme za postopno zmanjševanje obremenitve s preusmeritvijo dela prometa na strežnike Amazon, ki bi na vse zahteve preprosto odgovorili z “200 OK” in dali prazen odgovor. Razumeli smo, da gre za poslabšanje kakovosti storitve, vendar je izbira med dejstvom, da storitev sploh ne deluje ali ne prikazuje priporočil za približno 10% prometa, očitna.

Načrt B: onemogočite storitve. Implicitno delno poslabšanje storitve. Na primer, zmanjšanje hitrosti izračunavanja osebnih priporočil, da bi razbremenili nekatere baze podatkov in komunikacijske kanale. V običajnem načinu se priporočila izračunavajo v realnem času, pri čemer se za vsakega obiskovalca ustvari drugačna različica spletne trgovine, v pogojih povečane obremenitve pa zmanjšanje hitrosti omogoča nadaljevanje delovanja drugih osnovnih storitev.

Načrt C: v primeru harmagedona. Če pride do popolnega izpada sistema, smo pripravili načrt, ki nam bo omogočil varen odklop od naših strank. Kupci trgovine preprosto ne bodo več videli priporočil, delovanje spletne trgovine ne bo v ničemer prizadeto. Da bi to naredili, bi morali ponastaviti našo integracijsko datoteko, tako da bi novi uporabniki prenehali komunicirati s storitvijo. To pomeni, da bi onemogočili našo glavno kodo za sledenje, storitev bi prenehala zbirati podatke in izračunavati priporočila, uporabnik pa bi preprosto videl stran brez blokov priporočil. Za vse tiste, ki ste predhodno prejeli integracijsko datoteko, smo omogočili preklop DNS zapisa na Amazon in škrbino 200 OK.

Rezultati

Celotno obremenitev smo opravili tudi brez uporabe dodatnih gradbenih strojev. In zaradi vnaprejšnje priprave nismo potrebovali nobenega od razvitih odzivnih načrtov. Vse opravljeno delo pa je neprecenljiva izkušnja, ki nam bo pomagala kos tudi najbolj nepričakovanim in ogromnim navalom prometa.
Tako kot leta 2017 se je obremenitev storitve povečala za 40 %, število uporabnikov v spletnih trgovinah pa se je na črni petek povečalo za 60 %. Vse težave in napake so se pojavile v pripravljalnem obdobju, kar je nas in naše stranke rešilo nepredvidenih situacij.

Kako se spopadate s črnim petkom? Kako se pripravite na kritične obremenitve?

Vir: www.habr.com

Dodaj komentar