Hur man tål ökade belastningar på systemet: vi pratar om storskaliga förberedelser för Black Friday

Hej Habr!

Under 2017, under Black Friday, ökade belastningen med nästan en och en halv gånger, och våra servrar var på sin gräns. Under året har antalet kunder vuxit avsevärt och det blev klart att utan noggranna preliminära förberedelser kanske plattformen helt enkelt inte tål 2018 års belastning.

Vi satte upp det mest ambitiösa målet som möjligt: ​​vi ville vara helt förberedda på alla, även de mest kraftfulla, aktivitetssvängningar och började lansera ny kapacitet i förväg under hela året.

Vår CTO Andrey Chizh (chizh_andrey) berättar hur vi förberedde oss för Black Friday 2018, vilka åtgärder vi vidtog för att undvika fall och, naturligtvis, resultatet av en sådan noggrann förberedelse.

Hur man tål ökade belastningar på systemet: vi pratar om storskaliga förberedelser för Black Friday

Idag vill jag prata om förberedelserna för Black Friday 2018. Varför nu, när de flesta av de stora försäljningarna ligger bakom oss? Vi började förbereda ungefär ett år inför storskaliga evenemang och genom försök och fel hittade vi den optimala lösningen. Vi rekommenderar att du tar hand om de varma årstiderna i förväg och förhindrar bedrägerier som kan dyka upp i det mest olämpliga ögonblicket.
Materialet kommer att vara användbart för alla som vill pressa maximal vinst från sådana aktier, eftersom Den tekniska sidan av frågan är inte sämre än marknadsföringssidan här.

Funktioner av trafik vid stora försäljningar

Tvärtemot vad många tror är Black Friday inte bara en dag om året, utan nästan en hel vecka: de första rabatterbjudandena kommer 7-8 dagar före rean. Webbplatstrafiken börjar växa smidigt under veckan, når sin topp på fredag ​​och sjunker ganska kraftigt på lördagen till butikens vanliga nivåer.

Hur man tål ökade belastningar på systemet: vi pratar om storskaliga förberedelser för Black Friday

Detta är viktigt att tänka på: nätbutiker blir extra känsliga för eventuella "avmattningar" i systemet. Dessutom upplevde vår e-postnyhetsbrevslinje också en betydande ökning av antalet inskickningar.

Det är strategiskt viktigt för oss att gå igenom Black Friday utan krascher, eftersom... Den viktigaste funktionaliteten hos webbplatser och butiksnyhetsbrev beror på hur plattformen fungerar, nämligen:

  • Spåra och utfärda produktrekommendationer,
  • Utfärdande av relaterat material (till exempel bilder av utformningen av rekommendationsblock, såsom pilar, logotyper, ikoner och andra visuella element),
  • Tillhandahålla produktbilder av önskad storlek (för dessa ändamål har vi "ImageResizer" - ett undersystem som laddar ner en bild från butiksservern, komprimerar den till önskad storlek och, genom cachningsservrar, producerar bilder med den önskade storleken för varje produkt i varje rekommendationsblock).

Faktum är att under Black Friday 2019 ökade belastningen på tjänsten med 40 %, d.v.s. antalet händelser som Retail Rocket-systemet spårar och bearbetar på webbutikers sajter har ökat från 5 till 8 tusen förfrågningar per sekund. På grund av det faktum att vi förberedde oss för allvarligare belastningar överlevde vi en sådan ökning lätt.

Hur man tål ökade belastningar på systemet: vi pratar om storskaliga förberedelser för Black Friday

Allmän träning

Black Friday är en hektisk tid för all detaljhandel och e-handel i synnerhet. Antalet användare och deras aktivitet ökar avsevärt just nu, så vi, som alltid, förberedde oss grundligt för denna hektiska tid. Låt oss lägga till här det faktum att vi har många onlinebutiker anslutna inte bara i Ryssland utan också i Europa, där spänningen är mycket högre och vi får en nivå av passion som är värre än den brasilianska serien. Vad behöver göras för att vara helt förberedd på ökade belastningar?

Arbeta med servrar

Först var det nödvändigt att ta reda på exakt vad vi behövde för att öka serverkraften. Redan i augusti började vi beställa nya servrar specifikt för Black Friday – totalt lade vi till ytterligare 10 maskiner. I november var de helt i strid.

Samtidigt installerades några av byggmaskinerna om för användning som applikationsservrar. Vi förberedde dem omedelbart för att använda olika funktioner: både för att utfärda rekommendationer och för tjänsten ImageResizer, så att, beroende på typen av belastning, var och en av dem kunde användas för en av dessa roller. I normalt läge har Application- och ImageResizer-servrarna tydligt definierade funktioner: den förra ger rekommendationer, den senare tillhandahåller bilder för brev och rekommendationsblock på webbsidor för shopping online. Som förberedelse för Black Friday beslutades det att göra alla servrar med dubbla ändamål för att balansera trafiken mellan dem beroende på typen av nedladdning.

Sedan lade vi till två stora servrar för Kafka (Apache Kafka) och fick ett kluster med 5 kraftfulla maskiner. Tyvärr gick allt inte så smidigt som vi skulle önska: under datasynkroniseringsprocessen upptog två nya maskiner hela bredden av nätverkskanalen, och vi var tvungna att snabbt ta reda på hur vi skulle utföra tilläggsprocessen snabbt och säkert för hela infrastrukturen. För att lösa det här problemet var våra administratörer tvungna att tappert offra sina helger.

Arbeta med data

Förutom servrar bestämde vi oss för att optimera filer för att lätta på belastningen och ett stort steg för oss var översättningen av statiska filer. Alla statiska filer som tidigare fanns på servrar flyttades till S3 + Cloudfront. Vi har velat göra detta länge, eftersom belastningen på servern var nära gränsvärdena, och nu har en stor möjlighet uppstått.

En vecka innan Black Friday ökade vi cachningstiden för bilder till 3 dagar, så att om ImageResizer kraschade skulle tidigare cachade bilder hämtas från cdn:n. Det minskade också belastningen på våra servrar, eftersom ju längre bilden lagras, desto mindre ofta behöver vi lägga resurser på att ändra storlek.

Och sist men inte minst: 5 dagar före Black Friday tillkännagavs ett moratorium för utbyggnaden av ny funktionalitet, såväl som på allt arbete med infrastrukturen - all uppmärksamhet riktas mot att hantera ökade belastningar.

Planer för att reagera på svåra situationer

Oavsett hur hög kvalitet preparatet är, är fakaps alltid möjliga. Och vi har utvecklat tre reaktionsplaner för möjliga kritiska situationer:

  • belastningsminskning,
  • inaktivera vissa tjänster,
  • fullständig avstängning av tjänsten.

Plan A: Minska belastningen. Borde ha aktiverats om våra servrar, på grund av en ökning av belastningen, gick utöver acceptabla svarstider. I det här fallet har vi förberett mekanismer för att gradvis minska belastningen genom att byta en del av trafiken till Amazon-servrar, som helt enkelt skulle svara på alla förfrågningar med "200 OK" och ge ett tomt svar. Vi förstod att detta var en försämring av tjänstens kvalitet, men valet mellan att tjänsten inte fungerar alls eller inte visar rekommendationer för cirka 10 % av trafiken är uppenbart.

Plan B: Inaktivera tjänster. Underförstådd partiell försämring av tjänsten. Till exempel att minska hastigheten för att beräkna personliga rekommendationer för att avlasta vissa databaser och kommunikationskanaler. I normalt läge beräknas rekommendationer i realtid, vilket skapar en annan version av onlinebutiken för varje besökare, men under förhållanden med ökad belastning gör en minskning av hastigheten att andra kärntjänster kan fortsätta att fungera.

Plan C: i fall av Armageddon. Om ett fullständigt systemfel inträffar har vi utarbetat en plan som gör att vi säkert kan kopplas bort från våra kunder. Butiksköpare kommer helt enkelt att sluta se rekommendationer, prestandan för onlinebutiken kommer inte att lida på något sätt. För att göra detta måste vi återställa vår integrationsfil så att nya användare skulle sluta interagera med tjänsten. Det vill säga, vi skulle inaktivera vår huvudspårningskod, tjänsten skulle sluta samla in data och beräkna rekommendationer, och användaren skulle helt enkelt se en sida utan rekommendationsblock. För alla som tidigare har fått en integrationsfil har vi gett möjligheten att byta DNS-posten till Amazon och 200 OK-stubben.

Resultat av

Vi hanterade hela lasten även utan att behöva använda ytterligare byggmaskiner. Och tack vare förberedelserna behövde vi inte några av de utarbetade insatsplanerna. Men allt arbete som utförs är ovärderlig erfarenhet som kommer att hjälpa oss att hantera de mest oväntade och enorma tillströmningar av trafik.
Liksom 2017 ökade belastningen på tjänsten med 40 %, och antalet användare i nätbutiker ökade med 60 % på Black Friday. Alla svårigheter och misstag inträffade under förberedelseperioden, vilket räddade oss och våra klienter från oförutsedda situationer.

Hur klarar du Black Friday? Hur förbereder du dig för kritiska belastningar?

Källa: will.com

Lägg en kommentar