Jak wytrzymać zwiększone obciążenie systemu: mówimy o przygotowaniach na dużą skalę do Czarnego Piątku

Hej Habra!

W 2017 roku, podczas Czarnego Piątku, obciążenie wzrosło prawie półtorakrotnie, a nasze serwery osiągnęły maksymalny limit. Z biegiem roku liczba klientów znacznie wzrosła i stało się jasne, że bez starannego wstępnego przygotowania platforma może po prostu nie wytrzymać obciążeń roku 2018.

Postawiliśmy sobie możliwie najbardziej ambitny cel: chcieliśmy być w pełni przygotowani na każdy, nawet najpotężniejszy wzrost aktywności i zaczęliśmy uruchamiać nowe moce z wyprzedzeniem w ciągu roku.

Nasz CTO Andrey Chizh (chizh_andrey) opowiada, jak przygotowywaliśmy się do Czarnego Piątku 2018, jakie środki podjęliśmy, aby uniknąć upadków i oczywiście o wynikach tak starannych przygotowań.

Jak wytrzymać zwiększone obciążenie systemu: mówimy o przygotowaniach na dużą skalę do Czarnego Piątku

Dzisiaj chcę porozmawiać o przygotowaniach do Black Friday 2018. Dlaczego właśnie teraz, kiedy większość najważniejszych wyprzedaży mamy już za sobą? Przygotowywania rozpoczęliśmy około rok przed większymi wydarzeniami i metodą prób i błędów znaleźliśmy optymalne rozwiązanie. Zalecamy, aby zadbać o gorące pory roku z wyprzedzeniem i zapobiegać oszustwom, które mogą pojawić się w najbardziej nieodpowiednim momencie.
Materiał przyda się każdemu, kto chce wycisnąć maksymalny zysk z takich akcji, ponieważ Techniczna strona problemu nie ustępuje tutaj stronie marketingowej.

Cechy ruchu przy dużych sprzedażach

Wbrew powszechnemu przekonaniu Czarny Piątek to nie tylko jeden dzień w roku, ale niemal cały tydzień: pierwsze oferty rabatowe pojawiają się na 7-8 dni przed wyprzedażą. Ruch na stronie zaczyna rosnąć płynnie przez cały tydzień, osiąga swój szczyt w piątek i dość mocno spada w sobotę do normalnego poziomu sklepu.

Jak wytrzymać zwiększone obciążenie systemu: mówimy o przygotowaniach na dużą skalę do Czarnego Piątku

Warto to wziąć pod uwagę: sklepy internetowe stają się szczególnie wrażliwe na wszelkie „spowolnienia” w systemie. Ponadto w naszej linii biuletynów e-mailowych również odnotowaliśmy znaczny wzrost liczby zgłoszeń.

Strategicznie ważne jest dla nas, aby przejść przez Czarny Piątek bez awarii, ponieważ... Od sposobu działania platformy uzależniona jest od najważniejszej funkcjonalności stron internetowych i newsletterów sklepu, a mianowicie:

  • Śledzenie i wydawanie rekomendacji produktów,
  • Wydawanie powiązanych materiałów (na przykład zdjęć projektów bloków rekomendacyjnych, takich jak strzałki, logo, ikony i inne elementy wizualne),
  • Dostarczanie zdjęć produktów o wymaganej wielkości (w tym celu posiadamy „ImageResizer” – podsystem, który pobiera zdjęcie z serwera sklepu, kompresuje je do wymaganego rozmiaru i poprzez serwery buforujące generuje obrazy o wymaganej wielkości dla każdego produktu w każdy blok rekomendacji).

Tak naprawdę podczas Czarnego Piątku 2019 obciążenie serwisu wzrosło o 40%, tj. liczba zdarzeń śledzonych i przetwarzanych przez system Retail Rocket na stronach sklepów internetowych wzrosła z 5 do 8 tysięcy żądań na sekundę. Dzięki temu, że przygotowywaliśmy się do poważniejszych obciążeń, bez problemu przetrwaliśmy taki przypływ.

Jak wytrzymać zwiększone obciążenie systemu: mówimy o przygotowaniach na dużą skalę do Czarnego Piątku

Szkolenie ogólne

Czarny Piątek to pracowity czas, szczególnie dla całego handlu detalicznego i e-commerce. Liczba użytkowników i ich aktywność w tym czasie znacząco rośnie, dlatego jak zawsze solidnie przygotowaliśmy się na ten pracowity czas. Dodajmy tutaj fakt, że mamy wiele sklepów internetowych połączonych nie tylko w Rosji, ale także w Europie, gdzie emocje są znacznie większe, a poziom pasji jest gorszy niż brazylijska seria. Co należy zrobić, aby być w pełni przygotowanym na zwiększone obciążenia?

Praca z serwerami

Na początek należało dowiedzieć się, czego dokładnie potrzebujemy, aby zwiększyć moc serwera. Już w sierpniu zaczęliśmy zamawiać nowe serwery specjalnie na Black Friday – w sumie dodaliśmy 10 dodatkowych maszyn. W listopadzie byli już w pełni w walce.

W tym samym czasie niektóre maszyny kompilacji zostały ponownie zainstalowane do użytku jako serwery aplikacji. Od razu przygotowaliśmy je do wykorzystania różnych funkcji: zarówno do wystawiania rekomendacji, jak i do usługi ImageResizer, tak aby w zależności od rodzaju obciążenia każdy z nich mógł pełnić jedną z tych ról. W trybie normalnym serwery Application i ImageResizer mają jasno określone funkcje: pierwszy wydaje rekomendacje, drugi dostarcza obrazy do listów i bloków rekomendacji na stronach sklepów internetowych. W ramach przygotowań do Czarnego Piątku zdecydowano się na wykonanie wszystkich serwerów dwufunkcyjnych, aby zrównoważyć ruch pomiędzy nimi w zależności od rodzaju pobieranych plików.

Następnie dodaliśmy dwa duże serwery dla Kafki (Apache Kafka) i otrzymaliśmy klaster 5 potężnych maszyn. Niestety nie wszystko poszło tak gładko jak byśmy chcieli: podczas synchronizacji danych dwie nowe maszyny zajmowały całą szerokość kanału sieciowego i musieliśmy pilnie wymyślić, jak szybko i bezpiecznie przeprowadzić proces dodawania dla całą infrastrukturę. Aby rozwiązać ten problem, nasi administratorzy musieli dzielnie poświęcić swoje weekendy.

Praca z danymi

Oprócz serwerów postanowiliśmy zoptymalizować pliki, aby zmniejszyć obciążenie, a dużym krokiem dla nas było tłumaczenie plików statycznych. Wszystkie pliki statyczne, które wcześniej znajdowały się na serwerach, zostały przeniesione do S3 + Cloudfront. Chcieliśmy to zrobić już od dawna, gdyż obciążenie serwera było bliskie wartości granicznych, a teraz pojawiła się świetna okazja.

Na tydzień przed Czarnym Piątkiem zwiększyliśmy czas buforowania obrazów do 3 dni, aby w przypadku awarii ImageResizer obrazy z pamięci podręcznej zostały pobrane z cdn. Zmniejszyło to również obciążenie naszych serwerów, ponieważ im dłużej obraz jest przechowywany, tym rzadziej musimy wydawać zasoby na zmianę rozmiaru.

I wreszcie: na 5 dni przed Czarnym Piątkiem ogłoszono moratorium na wdrażanie jakichkolwiek nowych funkcjonalności, a także na wszelkie prace z infrastrukturą – cała uwaga skupiona jest na radzeniu sobie ze zwiększonymi obciążeniami.

Plany reagowania na trudne sytuacje

Niezależnie od jakości przygotowania, fakaps zawsze jest możliwy. Opracowaliśmy 3 plany reagowania na możliwe sytuacje krytyczne:

  • redukcja obciążenia,
  • wyłączenie niektórych usług,
  • całkowite zamknięcie usługi.

Plan A: Zmniejsz obciążenie. Powinien zostać aktywowany, jeśli z powodu wzrostu obciążenia nasze serwery przekroczyły akceptowalny czas odpowiedzi. W tym przypadku przygotowaliśmy mechanizmy stopniowego zmniejszania obciążenia poprzez przełączenie części ruchu na serwery Amazon, które po prostu odpowiadałyby na wszystkie żądania „200 OK” i dawały pustą odpowiedź. Rozumieliśmy, że jest to degradacja jakości usługi, ale wybór pomiędzy tym, że usługa w ogóle nie działa, a nie wyświetla rekomendacji dla około 10% ruchu, jest oczywisty.

Plan B: Wyłącz usługi. Domniemana częściowa degradacja usługi. Na przykład zmniejszenie szybkości wyliczania osobistych rekomendacji, aby odciążyć niektóre bazy danych i kanały komunikacji. W trybie normalnym rekomendacje wyliczane są w czasie rzeczywistym, tworząc dla każdego odwiedzającego inną wersję sklepu internetowego, jednak w warunkach zwiększonego obciążenia zmniejszenie prędkości pozwala na dalszą pracę pozostałych usług podstawowych.

Plan C: na wypadek Armageddonu. W przypadku całkowitej awarii systemu przygotowaliśmy plan, który pozwoli nam bezpiecznie odłączyć się od naszych klientów. Kupujący w sklepie po prostu przestaną widzieć rekomendacje, a działanie sklepu internetowego nie ucierpi w żaden sposób. Aby to zrobić musielibyśmy zresetować nasz plik integracyjny, aby nowi użytkownicy przestali wchodzić w interakcję z usługą. Oznacza to, że wyłączylibyśmy nasz główny kod śledzący, usługa przestałaby zbierać dane i obliczać rekomendacje, a użytkownikowi po prostu wyświetliłaby się strona bez blokad rekomendacji. Dla wszystkich, którzy otrzymali wcześniej plik integracyjny, udostępniliśmy możliwość przełączenia rekordu DNS na Amazon i odcinek 200 OK.

Wyniki

Obsłużyliśmy cały ładunek nawet bez konieczności korzystania z dodatkowych maszyn budowlanych. A dzięki wcześniejszemu przygotowaniu nie potrzebowaliśmy żadnego z opracowanych planów reagowania. Ale cała wykonana praca to nieocenione doświadczenie, które pomoże nam poradzić sobie z najbardziej nieoczekiwanymi i ogromnymi napływami ruchu.
Podobnie jak w 2017 roku, w Czarny Piątek obciążenie serwisu wzrosło o 40%, a liczba użytkowników w sklepach internetowych wzrosła o 60%. Wszystkie trudności i błędy pojawiły się w okresie przygotowawczym, co uchroniło nas i naszych klientów przed nieprzewidzianymi sytuacjami.

Jak sobie radzicie z Czarnym Piątkiem? Jak przygotować się na obciążenia krytyczne?

Źródło: www.habr.com

Dodaj komentarz