Jak odolat zvýšené zátěži systému: mluvíme o rozsáhlých přípravách na Black Friday

Čau Habr!

V roce 2017 během Black Friday vzrostla zátěž téměř jedenapůlkrát a naše servery byly na svém limitu. V průběhu roku se počet klientů výrazně rozrostl a bylo jasné, že bez pečlivé předběžné přípravy platforma zátěž roku 2018 prostě nevydrží.

Stanovili jsme si ten nejambicióznější cíl: chtěli jsme být plně připraveni na jakýkoli, i ten nejsilnější nápor aktivit, a začali jsme s předstihem spouštět nové kapacity v průběhu celého roku.

Náš technický ředitel Andrey Chizh (chizh_andrey) vypráví, jak jsme se na Black Friday 2018 připravovali, jaká opatření jsme přijali, abychom se vyhnuli pádům, a samozřejmě výsledky takové pečlivé přípravy.

Jak odolat zvýšené zátěži systému: mluvíme o rozsáhlých přípravách na Black Friday

Dnes chci mluvit o přípravách na Black Friday 2018. Proč teď, když je většina velkých výprodejů za námi? Začali jsme se připravovat asi rok před velkými akcemi a metodou pokusů a omylů jsme našli optimální řešení. Doporučujeme se předem postarat o horká období a předejít podvodům, které se mohou objevit v tu nejnevhodnější chvíli.
Materiál se bude hodit všem, kteří chtějí z takových akcií vymáčknout maximální zisk, protože Technická stránka problému zde není horší než marketingová stránka.

Vlastnosti provozu při velkých výprodejích

Na rozdíl od všeobecného přesvědčení, Black Friday není jen jeden den v roce, ale téměř celý týden: první slevové nabídky přicházejí 7-8 dní před prodejem. Návštěvnost webu začíná během týdne plynule růst, vrcholu dosahuje v pátek a v sobotu poměrně prudce klesá na běžnou úroveň obchodu.

Jak odolat zvýšené zátěži systému: mluvíme o rozsáhlých přípravách na Black Friday

To je důležité vzít v úvahu: internetové obchody jsou obzvláště citlivé na jakékoli „zpomalení“ systému. Navíc naše linka pro e-mailové zpravodaje také zaznamenala výrazný nárůst počtu příspěvků.

Je pro nás strategicky důležité projít Black Friday bez krachu, protože... Nejdůležitější funkce webových stránek a newsletterů obchodů závisí na provozu platformy, a to:

  • Sledování a vydávání doporučení produktů,
  • Vydávání souvisejících materiálů (například obrázků návrhu bloků doporučení, jako jsou šipky, loga, ikony a další vizuální prvky),
  • Poskytování obrázků produktů požadované velikosti (pro tyto účely máme „ImageResizer“ - subsystém, který stáhne obrázek ze serveru obchodu, zkomprimuje jej na požadovanou velikost a prostřednictvím cachovacích serverů vytvoří obrázky požadované velikosti pro každý produkt v každý blok doporučení).

Během Black Friday 2019 totiž vzrostlo zatížení služby o 40 %, tzn. počet událostí, které systém Retail Rocket sleduje a zpracovává na stránkách internetového obchodu, se zvýšil z 5 na 8 tisíc požadavků za sekundu. Díky tomu, že jsme se připravovali na vážnější zátěže, jsme takový nápor přežili snadno.

Jak odolat zvýšené zátěži systému: mluvíme o rozsáhlých přípravách na Black Friday

Všeobecné školení

Černý pátek je rušným obdobím pro veškerý maloobchod a zejména e-commerce. Počet uživatelů a jejich aktivita v této době výrazně roste, proto jsme se na tuto uspěchanou dobu jako vždy důkladně připravili. Zde připočtěme skutečnost, že máme mnoho online obchodů propojených nejen v Rusku, ale i v Evropě, kde je vzrušení mnohem vyšší a úroveň vášně je horší než u brazilské série. Co je potřeba udělat, abyste byli plně připraveni na zvýšenou zátěž?

Práce se servery

Nejprve bylo nutné zjistit, co přesně potřebujeme ke zvýšení výkonu serveru. Již v srpnu jsme začali objednávat nové servery speciálně pro Black Friday – celkem jsme přidali 10 dalších strojů. V listopadu byli plně v boji.

Současně byly některé sestavovací stroje přeinstalovány pro použití jako aplikační servery. Okamžitě jsme je připravili na používání různých funkcí: jak pro vydávání doporučení, tak pro službu ImageResizer, takže v závislosti na typu zátěže bylo možné každou z nich použít pro jednu z těchto rolí. V normálním režimu mají aplikační servery a servery ImageResizer jasně definované funkce: první vydávají doporučení, druhý dodává obrázky pro dopisy a bloky doporučení na webových stránkách online nakupování. V rámci přípravy na Černý pátek bylo rozhodnuto vytvořit všechny dvouúčelové servery, aby se mezi nimi vyrovnal provoz v závislosti na typu stahování.

Poté jsme přidali dva velké servery pro Kafku (Apache Kafka) a získali cluster 5 výkonných strojů. Bohužel vše nešlo tak hladce, jak bychom si přáli: během procesu synchronizace dat obsadily dva nové stroje celou šířku síťového kanálu a my jsme museli urychleně vymyslet, jak proces přidávání provést rychle a bezpečně. celou infrastrukturu. Aby tento problém vyřešili, museli naši administrátoři statečně obětovat své víkendy.

Práce s daty

Kromě serverů jsme se rozhodli optimalizovat i soubory pro odlehčení a velkým krokem pro nás byl překlad statických souborů. Všechny statické soubory, které byly dříve hostovány na serverech, byly přesunuty do S3 + Cloudfront. Chtěli jsme to udělat už dlouho, protože zatížení serveru se blížilo limitním hodnotám a nyní se naskytla skvělá příležitost.

Týden před Černým pátkem jsme prodloužili dobu ukládání obrázků do mezipaměti na 3 dny, takže pokud ImageResizer selhal, byly by z cdn načteny dříve uložené obrázky. Také to snížilo zatížení našich serverů, protože čím déle je obraz uložen, tím méně často musíme utrácet prostředky na změnu velikosti.

A v neposlední řadě: 5 dní před Černým pátkem bylo vyhlášeno moratorium na nasazení jakékoli nové funkcionality a také na jakoukoli práci s infrastrukturou – veškerá pozornost je zaměřena na zvládání zvýšené zátěže.

Plány, jak reagovat na složité situace

Bez ohledu na to, jak kvalitní je příprava, fakaps je vždy možný. A vyvinuli jsme 3 plány reakce na možné kritické situace:

  • snížení zátěže,
  • vypnutí některých služeb,
  • úplné odstavení služby.

Plán A: Snižte zátěž. Měly být aktivovány, pokud v důsledku nárůstu zatížení naše servery překročily přijatelné načasování odezvy. V tomto případě jsme připravili mechanismy pro postupné snižování zátěže přepnutím části provozu na servery Amazon, které by na všechny požadavky jednoduše odpověděly „200 OK“ a daly prázdnou odpověď. Pochopili jsme, že jde o degradaci kvality služby, ale volba mezi tím, že služba nefunguje vůbec nebo neukazuje doporučení pro přibližně 10 % provozu, je nasnadě.

Plán B: Zakázat služby. Implicitní částečné zhoršení služby. Například snížení rychlosti výpočtu osobních doporučení za účelem uvolnění některých databází a komunikačních kanálů. V normálním režimu se doporučení počítají v reálném čase, čímž se pro každého návštěvníka vytvoří jiná verze internetového obchodu, ale za podmínek zvýšené zátěže snížení rychlosti umožňuje dalším základním službám pokračovat v práci.

Plán C: v případě Armagedonu. Pokud dojde k úplnému výpadku systému, máme připravený plán, který nám umožní bezpečné odpojení od našich zákazníků. Kupujícím v obchodě se jednoduše přestanou zobrazovat doporučení, výkon internetového obchodu tím nijak neutrpí. K tomu bychom museli resetovat náš integrační soubor, aby noví uživatelé přestali se službou interagovat. To znamená, že bychom deaktivovali náš hlavní sledovací kód, služba by přestala shromažďovat data a vypočítávat doporučení a uživateli by se jednoduše zobrazila stránka bez bloků doporučení. Pro všechny, kteří již dříve obdrželi integrační soubor, jsme poskytli možnost přepnutí DNS záznamu na Amazon a 200 OK stub.

Výsledky

Celý náklad jsme zvládli i bez nutnosti použití dalších stavebních strojů. A díky předběžné přípravě jsme nepotřebovali žádný z vypracovaných plánů reakce. Ale veškerá odvedená práce je neocenitelná zkušenost, která nám pomůže vyrovnat se s nejneočekávanějšími a obrovskými nápory provozu.
Stejně jako v roce 2017 vzrostlo zatížení služby o 40 % a počet uživatelů v internetových obchodech se na Black Friday zvýšil o 60 %. Veškeré potíže a chyby nastaly v přípravném období, což nás i naše klienty zachránilo před nepředvídanými situacemi.

Jak zvládáte Black Friday? Jak se připravujete na kritické zátěže?

Zdroj: www.habr.com

Přidat komentář