Hoe bestand te zijn tegen verhoogde belasting van het systeem: we praten over grootschalige voorbereidingen voor Black Friday

Hé Habr!

In 2017, tijdens Black Friday, nam de belasting bijna anderhalf keer toe en zaten onze servers op hun limiet. In de loop van het jaar is het aantal klanten aanzienlijk gegroeid en het werd duidelijk dat het platform zonder een zorgvuldige voorafgaande voorbereiding de lasten van 2018 wellicht niet zou kunnen weerstaan.

We stelden ons het meest ambitieuze doel dat mogelijk was: we wilden volledig voorbereid zijn op elke, zelfs de krachtigste, activiteitsgolf en begonnen het hele jaar door met het lanceren van nieuwe capaciteiten.

Onze CTO Andrey Chizh (chizh_andrey) vertelt hoe we ons hebben voorbereid op Black Friday 2018, welke maatregelen we hebben genomen om vallen te voorkomen en uiteraard de resultaten van zo’n zorgvuldige voorbereiding.

Hoe bestand te zijn tegen verhoogde belasting van het systeem: we praten over grootschalige voorbereidingen voor Black Friday

Vandaag wil ik het hebben over de voorbereidingen voor Black Friday 2018. Waarom nu, nu de meeste grote verkopen achter de rug zijn? We begonnen ongeveer een jaar vóór grootschalige evenementen met de voorbereidingen en met vallen en opstaan ​​vonden we de optimale oplossing. We raden u aan om van tevoren rekening te houden met de hete seizoenen en oplichting te voorkomen die op het meest ongelegen moment kan opduiken.
Het materiaal zal nuttig zijn voor iedereen die de maximale winst uit dergelijke aandelen wil halen, omdat De technische kant van de zaak doet hier niet onder voor de marketingkant.

Kenmerken van verkeer bij grote verkopen

In tegenstelling tot wat vaak wordt gedacht, duurt Black Friday niet slechts één dag per jaar, maar bijna een hele week: de eerste kortingsaanbiedingen arriveren 7-8 dagen vóór de uitverkoop. Het websiteverkeer begint gedurende de week soepel te groeien, bereikt zijn piek op vrijdag en daalt op zaterdag behoorlijk scherp naar het normale niveau van de winkel.

Hoe bestand te zijn tegen verhoogde belasting van het systeem: we praten over grootschalige voorbereidingen voor Black Friday

Dit is belangrijk om te overwegen: online winkels worden bijzonder gevoelig voor eventuele “vertragingen” in het systeem. Bovendien kende onze e-mailnieuwsbrieflijn ook een aanzienlijke toename van het aantal inzendingen.

Het is van strategisch belang voor ons om Black Friday zonder crashes door te brengen, omdat... De belangrijkste functionaliteit van websites en winkelnieuwsbrieven is afhankelijk van de werking van het platform, namelijk:

  • Het volgen en uitgeven van productaanbevelingen,
  • Uitgifte van gerelateerd materiaal (bijvoorbeeld afbeeldingen van het ontwerp van aanbevelingsblokken, zoals pijlen, logo's, iconen en andere visuele elementen),
  • Het leveren van productafbeeldingen van de vereiste grootte (voor deze doeleinden hebben we "ImageResizer" - een subsysteem dat een afbeelding downloadt van de winkelserver, deze comprimeert tot de vereiste grootte en, via caching-servers, afbeeldingen van de vereiste grootte produceert voor elk product in elk aanbevelingsblok).

Tijdens Black Friday 2019 is de belasting van de dienst zelfs met 40% toegenomen, d.w.z. het aantal gebeurtenissen dat het Retail Rocket-systeem op webshopsites bijhoudt en verwerkt, is gestegen van 5 naar 8 verzoeken per seconde. Omdat we ons voorbereidden op serieuzere ladingen, overleefden we zo'n golf gemakkelijk.

Hoe bestand te zijn tegen verhoogde belasting van het systeem: we praten over grootschalige voorbereidingen voor Black Friday

Algemene training

Black Friday is een drukke tijd voor alle detailhandel en e-commerce in het bijzonder. Het aantal gebruikers en hun activiteit groeit op dit moment aanzienlijk, dus we hebben ons, zoals altijd, grondig voorbereid op deze drukke tijd. Laten we hier het feit aan toevoegen dat we veel online winkels hebben, niet alleen in Rusland, maar ook in Europa, waar de opwinding veel hoger is en we een niveau van passie krijgen dat erger is dan bij de Braziliaanse serie. Wat moet er worden gedaan om volledig voorbereid te zijn op hogere belastingen?

Werken met servers

Eerst moesten we uitzoeken wat we precies nodig hadden om de serverkracht te vergroten. Al in augustus zijn we begonnen met het bestellen van nieuwe servers speciaal voor Black Friday - in totaal hebben we 10 extra machines toegevoegd. In november waren ze volledig in gevecht.

Tegelijkertijd werden enkele bouwmachines opnieuw geïnstalleerd voor gebruik als applicatieservers. We hebben ze meteen voorbereid op het gebruik van verschillende functies: zowel voor het geven van aanbevelingen als voor de dienst ImageResizer, zodat ze, afhankelijk van het type belasting, elk voor een van deze rollen konden worden gebruikt. In de normale modus hebben de Application- en ImageResizer-servers duidelijk gedefinieerde functies: de eerste geven aanbevelingen, de laatste levert afbeeldingen voor brieven en aanbevelingsblokken op websites voor online winkelen. Ter voorbereiding op Black Friday werd besloten om alle servers voor twee doeleinden te gebruiken om het verkeer daartussen te verdelen, afhankelijk van het type download.

Vervolgens hebben we twee grote servers voor Kafka (Apache Kafka) toegevoegd en een cluster van 5 krachtige machines gekregen. Helaas verliep alles niet zo soepel als we zouden willen: tijdens het gegevenssynchronisatieproces bezetten twee nieuwe machines de gehele breedte van het netwerkkanaal en moesten we dringend uitzoeken hoe we het toevoegproces snel en veilig konden uitvoeren voor de gehele infrastructuur. Om dit probleem op te lossen, moesten onze beheerders moedig hun weekenden opofferen.

Werken met gegevens

Naast servers besloten we ook bestanden te optimaliseren om de belasting te verlichten en een grote stap voor ons was de vertaling van statische bestanden. Alle statische bestanden die voorheen op servers werden gehost, zijn verplaatst naar S3 + Cloudfront. We wilden dit al heel lang doen, omdat de belasting van de server dicht bij de grenswaarden lag, en nu heeft zich een geweldige kans voorgedaan.

Een week voor Black Friday hebben we de cachetijd voor afbeeldingen verhoogd naar 3 dagen, zodat als ImageResizer crashte, eerder in de cache opgeslagen afbeeldingen van de cdn zouden worden opgehaald. Het verminderde ook de belasting van onze servers, want hoe langer de afbeelding wordt opgeslagen, hoe minder vaak we middelen hoeven te besteden aan het aanpassen van de grootte.

En last but not least: 5 dagen voor Black Friday werd een moratorium afgekondigd op de inzet van nieuwe functionaliteit, evenals op alle werkzaamheden met de infrastructuur - alle aandacht is gericht op het omgaan met de toegenomen belasting.

Plannen om op moeilijke situaties te reageren

Hoe hoogwaardig de bereiding ook is, fakaps zijn altijd mogelijk. En we hebben 3 responsplannen ontwikkeld voor mogelijke kritieke situaties:

  • belastingvermindering,
  • sommige services uitschakelen,
  • volledige stopzetting van de dienst.

Plan A: Verminder de belasting. Had geactiveerd moeten worden als onze servers, als gevolg van een piek in de belasting, de aanvaardbare reactietijden overschreden. In dit geval hebben we mechanismen voorbereid om de belasting geleidelijk te verminderen door een deel van het verkeer naar de servers van Amazon te sturen, die eenvoudigweg op alle verzoeken zouden reageren met “200 OK” en een leeg antwoord zouden geven. We begrepen dat dit een verslechtering van de kwaliteit van de dienst was, maar de keuze tussen het feit dat de dienst helemaal niet werkt of geen aanbevelingen toont voor ongeveer 10% van het verkeer ligt voor de hand.

Plan B: services uitschakelen. Impliciete gedeeltelijke verslechtering van de service. Bijvoorbeeld door de snelheid van het berekenen van persoonlijke aanbevelingen te verlagen om bepaalde databases en communicatiekanalen te ontlasten. In de normale modus worden aanbevelingen in realtime berekend, waardoor voor elke bezoeker een andere versie van de online winkel ontstaat, maar onder omstandigheden van verhoogde belasting zorgt het verlagen van de snelheid ervoor dat andere kerndiensten kunnen blijven werken.

Plan C: in het geval van Armageddon. Als er een volledige systeemstoring optreedt, hebben we een plan opgesteld waarmee we veilig kunnen worden afgesloten van onze klanten. Winkelkopers zullen simpelweg geen aanbevelingen meer zien; de prestaties van de online winkel zullen er op geen enkele manier onder lijden. Om dit te doen, zouden we ons integratiebestand opnieuw moeten instellen, zodat nieuwe gebruikers geen interactie meer hebben met de service. Dat wil zeggen dat we onze belangrijkste trackingcode zouden uitschakelen, dat de service zou stoppen met het verzamelen van gegevens en het berekenen van aanbevelingen, en dat de gebruiker eenvoudigweg een pagina zou zien zonder aanbevelingsblokken. Voor iedereen die eerder een integratiebestand heeft ontvangen, hebben we de mogelijkheid geboden om het DNS-record over te zetten naar Amazon en de 200 OK-stub.

Resultaten van

We hebben de hele lading afgehandeld, zelfs zonder dat we extra bouwmachines nodig hadden. En dankzij de voorbereiding vooraf hadden we geen van de ontwikkelde responsplannen nodig. Maar al het verrichte werk is een ervaring van onschatbare waarde die ons zal helpen om te gaan met de meest onverwachte en enorme toestroom van verkeer.
Net als in 2017 steeg de belasting van de dienst met 40% en steeg het aantal gebruikers in online winkels op Black Friday met 60%. Alle moeilijkheden en fouten hebben zich tijdens de voorbereidingsperiode voorgedaan, waardoor wij en onze klanten zijn behoed voor onvoorziene situaties.

Hoe ga jij om met Black Friday? Hoe bereidt u zich voor op kritische belastingen?

Bron: www.habr.com

Voeg een reactie