Hallo Habr!
Im Jahr 2017, während des Black Friday, stieg die Auslastung fast eineinhalb Mal an, und unsere Server waren an den Grenzen der Möglichkeiten. Im Laufe des Jahres ist die Anzahl der Kunden erheblich gestiegen, und es wurde deutlich, dass die Plattform ohne eine gründliche Vorbereitung möglicherweise den Belastungen von 2018 einfach nicht standhält.
Das Ziel war das ehrgeizigste von allen: Wir wollten auf alle, auch die mächtigsten, Aktivitätsschübe vollständig vorbereitet sein und begannen im Laufe des Jahres, neue Kapazitäten im Voraus abzubauen.
Unser CTO Andrei Chizh (
chizh_andrey ) erzählt, wie wir uns auf den Black Friday 2018 vorbereitet haben, welche Maßnahmen wir ergriffen haben, um Stürze zu vermeiden, und natürlich die Ergebnisse dieser sorgfältigen Vorbereitung.

Heute möchte ich über die Vorbereitungen für den Black Friday 2018 sprechen. Warum jetzt, wenn die meisten Hauptverkäufe zurückliegen? Wir begannen ungefähr ein Jahr vor Großveranstaltungen mit der Vorbereitung und fanden durch Versuch und Irrtum die optimale Lösung. Wir empfehlen, dass Sie sich im Voraus um die heißen Jahreszeiten kümmern und die Fakaps vermeiden, die im ungünstigsten Moment auftreten können.
Das Material wird für alle nützlich sein, die den maximalen Gewinn aus solchen Aktien herausholen möchten, wie z Die technische Seite des Problems ist der Marketing-Seite nicht unterlegen.
Merkmale des Verkehrs bei großen Verkäufen
Entgegen der landläufigen Meinung ist der Schwarze Freitag nicht nur ein Tag im Jahr, sondern fast eine ganze Woche: Die ersten Rabattangebote kommen 7-8 Tage vor dem Verkauf an. Der Website-Verkehr beginnt die ganze Woche über reibungslos zu wachsen, erreicht am Freitag seinen Höhepunkt und fällt am Samstag ziemlich stark auf reguläre Store-Indikatoren ab.

Dies ist wichtig zu beachten: Online-Shops reagieren besonders empfindlich auf „Verlangsamungen“ im System. Darüber hinaus verzeichnete unser E-Mail-Newsletter einen deutlichen Anstieg der Anzahl der Sendungen.
Es ist strategisch wichtig für uns, den Schwarzen Freitag ohne Stürze zu überstehen Die wichtigste Funktionalität der Websites und Mailinglisten der Geschäfte hängt vom Betrieb der Plattform ab, nämlich:
- Verfolgung und Ausgabe von Produktempfehlungen,
- Die Ausgabe verwandter Materialien (z. B. Bilddesign-Empfehlungsblöcke wie Pfeile, Logos, Symbole und andere visuelle Elemente),
- Ausgabe von Produktabbildern mit der richtigen Größe (zu diesem Zweck haben wir „ImageResizer“ - ein Subsystem, das ein Bild vom Server des Geschäfts herunterlädt, es auf die gewünschte Größe komprimiert und über Caching-Server Bilder mit der richtigen Größe für jedes Produkt in jedem Empfehlungsblock bereitstellt).
Tatsächlich stieg während des Black Friday 2019 die Auslastung des Dienstes um 40%, d.h. Die Anzahl der Ereignisse, die das Retail Rocket-System auf Online-Shop-Websites überwacht und verarbeitet, ist von 5 auf 8.000 Anfragen pro Sekunde gestiegen. Aufgrund der Tatsache, dass wir uns auf ernstere Belastungen vorbereiteten, kam es leicht zu einem solchen Anstieg.

Allgemeine Vorbereitung
Der Schwarze Freitag ist eine heiße Zeit für den gesamten Einzelhandel und insbesondere für den E-Commerce. Die Anzahl der Benutzer und ihre Aktivitäten zu diesem Zeitpunkt nimmt zeitweise zu, sodass wir uns wie immer gründlich auf diese geschäftige Zeit vorbereitet haben. Wir fügen die Tatsache hinzu, dass viele Online-Shops mit uns verbunden sind, nicht nur in Russland, sondern auch in Europa, wo der Hype viel höher ist, und dass die Leidenschaften schlechter sind als in der brasilianischen Serie. Was muss getan werden, um vollständig auf erhöhte Lasten vorbereitet zu sein?
Arbeiten Sie mit Servern
Zunächst musste herausgefunden werden, was genau uns fehlt, um die Kapazität von Servern zu erhöhen. Bereits im August haben wir begonnen, neue Server speziell für den Black Friday zu bestellen - insgesamt wurden 10 zusätzliche Maschinen hinzugefügt. Im November waren sie bereits vollständig im Kampf.
Gleichzeitig wurde ein Teil der Build-Maschinen für die Verwendung als Anwendungsserver neu installiert. Wir haben sie sofort auf die Verwendung verschiedener Funktionen vorbereitet: sowohl für die Ausgabe von Empfehlungen als auch für den ImageResizer-Dienst, sodass jede von ihnen je nach Art der Last für eine dieser Rollen verwendet werden kann. Im normalen Modus haben Anwendungs- und ImageResizer-Server klar definierte Funktionen: Die ersten sind an der Abgabe von Empfehlungen beteiligt, die zweiten stellen Bilder für Briefe und Empfehlungsblöcke auf der Website von Online-Shops bereit. In Vorbereitung auf den Black Friday wurde beschlossen, alle Dual-Purpose-Server so einzurichten, dass der Datenverkehr je nach Art der Auslastung zwischen ihnen ausgeglichen wird.
Dann haben wir zwei große Server für Kafka (Apache Kafka) hinzugefügt und einen Cluster von 5 leistungsstarken Maschinen erhalten. Leider lief nicht alles so reibungslos, wie wir es uns gewünscht hätten: Während der Datensynchronisation nahmen zwei neue Maschinen die gesamte Breite des Netzwerkkanals ein, und wir mussten dringend herausfinden, wie der Add-Prozess schnell und sicher für die gesamte Infrastruktur ausgeführt werden kann. Um dieses Problem zu beheben, mussten unsere Administratoren das Wochenende tapfer opfern.
Mit Daten arbeiten
Zusätzlich zu den Servern haben wir beschlossen, die Dateien zu optimieren, um das Laden zu erleichtern. Ein großer Schritt für uns war die Übersetzung statischer Dateien. Alle statischen Dateien, die zuvor auf den Servern gehostet wurden, wurden in S3 + Cloudfront übernommen. Sie wollten dies schon lange tun, da die Belastung des Servers nahe an den Grenzwerten lag und nun ein hervorragender Grund erschien.
Eine Woche vor dem Black Friday haben wir die Caching-Zeit von Bildern auf 3 Tage erhöht, sodass im Falle eines Rückgangs von ImageResizer zuvor zwischengespeicherte Bilder von cdn abgerufen wurden. Dadurch wurde auch die Belastung unserer Server verringert, da je länger das Image gespeichert ist, desto seltener Ressourcen für die Größenänderung aufgewendet werden müssen.
Und zu guter Letzt: 5 Tage vor dem Black Friday wurde ein Moratorium für die Bereitstellung neuer Funktionen sowie für die Arbeit mit der Infrastruktur angekündigt - alle Aufmerksamkeit galt der Bewältigung erhöhter Belastungen.
Notfallpläne
Egal wie gut die Vorbereitung ist, Fakapy ist immer möglich. Und wir haben 3 Reaktionspläne für mögliche kritische Situationen entwickelt:
- Lastreduzierung
- Deaktivieren einiger Dienste,
- vollständige Abschaltung des Dienstes.
Plan A: Lastreduzierung. Sollte beteiligt gewesen sein, wenn unsere Server aufgrund eines Lastanstiegs über akzeptable Antwortzeiten hinausgehen. In diesem Fall haben wir Mechanismen vorbereitet, um die Last schrittweise zu reduzieren, indem ein Teil des Datenverkehrs auf Amazon-Server umgeschaltet wird, wodurch einfach alle Anfragen mit „200 OK“ beantwortet und eine leere Antwort gegeben werden. Wir haben verstanden, dass dies eine Verschlechterung der Servicequalität darstellt, aber die Wahl zwischen der Tatsache, dass der Service überhaupt nicht funktioniert oder keine Empfehlungen für etwa 10% des Datenverkehrs enthält, ist offensichtlich.
Plan B: Dienste deaktivieren. Implizite teilweise Verschlechterung des Dienstes. Reduzieren Sie beispielsweise die Geschwindigkeit der Berechnung persönlicher Empfehlungen, um einige Datenbanken und Kommunikationskanäle zu entladen. Im normalen Modus werden Empfehlungen im Echtzeitmodus berechnet, wodurch für jeden Besucher eine Version des Online-Shops erstellt wird. Unter Bedingungen erhöhter Auslastung ermöglicht eine Verringerung der Geschwindigkeit jedoch, dass andere Kerndienste weiterarbeiten können.
Plan C: für Harmagedon. Wenn ein vollständiger Systemfehler auftritt, haben wir einen Plan erstellt, der uns sicher von den Kunden trennt. Käufer sehen einfach keine Empfehlungen mehr, die Leistung eines Online-Shops wird nicht beeinträchtigt. Dazu müssten wir unsere Integrationsdatei zurücksetzen, damit neue Benutzer nicht mehr mit dem Dienst interagieren. Das heißt, wir würden die Arbeit unseres Hauptverfolgungscodes deaktivieren, der Dienst würde aufhören, Daten zu sammeln und Empfehlungen zu berechnen, und der Benutzer würde einfach eine Seite ohne Empfehlungsblöcke sehen. Für alle, die zuvor die Integrationsdatei erhalten haben, haben wir die Option bereitgestellt, DNS-Einträge auf Amazon und einen 200-OK-Stub umzustellen.
Zusammenfassung
Wir haben die gesamte Last bewältigt, auch ohne zusätzliche Baumaschinen. Und dank der Vorbereitungen brauchten wir keinen der entwickelten Reaktionspläne. Aber all die geleistete Arbeit ist eine unschätzbare Erfahrung, die uns helfen wird, mit den unerwartetsten und größten Verkehrsströmen fertig zu werden.
Wie im Jahr 2017 stieg die Auslastung des Dienstes um 40% und die Anzahl der Nutzer in Online-Shops für Black Friday um 60%. Alle Schwierigkeiten und Fehler traten während der Vorbereitungszeit auf, was uns und unsere Kunden vor unvorhergesehenen Situationen bewahrte.
Wie denkst du über Black Friday? Wie bereite ich mich auf kritische Belastungen vor?