Tak jak zima drogowców, Black Friday i Cyber Monday za każdym razem zaskakują właścicieli e-commerce. Po zeszłorocznych wyprzedażach na pewno padła obietnica, że tym razem dobrze przygotujesz swoją infrastrukturę na wyjątkowo duże zainteresowanie klientów w tym okresie. Tymczasem nadeszła jesień i orientujesz się, że do wielkich wyprzedaży nie pozostało już wcale tak dużo czasu. Na szczęście istnieją sposoby, by choć trochę przygotować Twój sklep na zakupowe szaleństwo.

Tradycja Black Friday i Cyber Monday przyszła do nas zza oceanu, gdzie w piątek po Święcie Dziękczynienia rozpoczynają się szalone promocje. Ceny produktów obniżane są o 70 i więcej procent, więc przez weekend w Stanach Zjednoczonych panuje zakupowe szaleństwo. W następujący po Czarnym Piątku poniedziałek wyprzedaże ruszają w sklepach internetowych (tzw. Cyber Monday). Według statystyk, w tym czasie sklepy cieszą się kilku lub nawet kilkunastokrotnie wyższym zainteresowaniem klientów, którzy często czekają z zakupami właśnie na ten weekend. Od kilku lat tradycja ta przyjęła się także w Polsce, choć obniżki wciąż nie dorównują tym amerykańskim.

Jeśli planujesz “świętować” Czarny Piątek i Cyber Poniedziałek w swoim sklepie internetowym, koniecznie przygotuj się na wzmożony ruch na stronie. Poniżej przeczytasz o naszych pomysłach na to, jak poprawić wydajność i odporność Twojej strony w takich gorących okresach.

Rozbudowa infrastruktury

Zacznijmy od tego, jak w najbardziej znaczący sposób zwiększyć swoją dostępność. Postaraj się usunąć wszystkie SPOF (Single Point of Failure), czyli tak podziel infrastrukturę, by awaria jednego elementu nie spowodowała niedostępności całego serwisu. Aby tego uniknąć, dostaw dodatkowy serwer dla aplikacji i bazy danych, a do rozłożenia ruchu pomiędzy serwery użyj load balancera. Brzmi dość prosto, ale zestawienie takiej infrastruktury może okazać się sporym wyzwaniem. Wyliczając tylko większe kroki, taka rozbudowa wiąże się z przeprowadzeniem następujących prac:

  • Zestawienie replikacji między bazami danych – dzięki temu dane na obu serwerach będą aktualne.
  • Konfiguracja load balancera przed serwerami – wpadający ruch musi zostać odpowiednio rozłożony między serwery, za co może odpowiadać np. HAproxy (jedno z otwartoźródłowych rozwiązań do równoważenia ruchu).
  • Implementacja współdzielenia sesji – w przypadku gdy urządzenie klienta wpadnie na pierwszy serwer, a następnie na drugi, klient nie zauważy problemów z sesją. Przechowując sesje z użyciem np. Redis’a pozostajesz w pełni operacyjny, gdy jeden z serwerów przestanie być dostępny, bo sesje klientów oraz ich koszyki nie przepadną.
  • Dodanie serwera cache – jeśli znacząca część Twojej strony nie jest dynamiczna, warto zaimplementować mechanizm cache. Odpowiednia jego konfiguracja sprawi, że elementy widoczne dla użytkowników serwowane będą jak pliki statyczne, bez konieczności każdorazowego ich generowania.
  • Dostosowanie aplikacji do pracy w nowej infrastrukturze – rozbudowanie sklepu o wyżej wymienione elementy często będzie wymagało zmian w kodzie, które dostosują aplikację do nowego środowiska.

Przeniesienie sklepu do chmury

Kolejnym rozwiązaniem, które wymaga większego nakładu pracy, jest migracja infrastruktury do jednego z cloudów. Dzięki temu serwis może dynamicznie dostosowywać się do aktualnego zapotrzebowania na zasoby. Zmniejszasz w ten sposób również koszty utrzymania infrastruktury. Więcej na temat chmury i jej zastosowania dowiesz się wkrótce z naszego nowego cyklu artykułów.

Dwie powyższe metody są rozwiązaniami docelowymi, które powinieneś zastosować, jeżeli chcesz rozbudowywać infrastrukturę.

A co zrobić, gdy masz mało czasu i niewielki budżet?

Wykorzystaj CDN

CDN (Content Delivery Network) to rozproszona sieć serwerów, która zapewnia dostarczanie treści z różnych lokacji. Wykorzystując taką funkcjonalność, serwis będzie szybciej dostępny z różnych miejsc na świecie. Jedną z firm, która dostarcza CDN jest wielokrotnie polecany przez nas CloudFlare. Po przeniesieniu DNSów i włączeniu “pomarańczowej chmurki”, będziesz w stanie znacząco odciążyć swoje serwery poprzez cache’owanie plików z serwisu. Zwiększy to prędkość przesyłu plików do klientów oraz obniży opłaty za transfer w hostingu.

Dodatkową opcją CloudFlare’a, którą warto wykorzystać jest “always online”. Dzięki temu, nawet gdy Twój serwis jest niedostępny, CloudFlare wyświetli zapamiętaną (w plikach cache) stronę. Oczywiście oznacza to, że nie będą dostępne te funkcjonalności serwisu, które wymagają komunikacji z serwerem, ale i tak jest to postrzegane lepiej, niż pusta strona z błędem.

Skorzystaj z systemu kolejkowego

Rozwiązaniem ekstremalnym, ale bardzo przydatnym, zwłaszcza, jeśli czas i budżet nie pozwalają Ci na rozbudowę infrastruktury, jest wprowadzenie systemu kolejki. Działa to dokładnie tak, jak to sobie wyobrażasz i jest spora szansa, że uratuje Twoją stronę przed całkowitą niedostępnością. W telegraficznym skrócie ustalasz konkretną liczbę klientów, którą serwis może obsłużyć w danym czasie i jeżeli zainteresowanych jest więcej, to muszą poczekać na swoją kolej. Dzięki temu klienci, którzy wejdą na stronę mogą korzystać z niej w komfortowy sposób. A przy tym serwery nie padną od obciążenia. Istnieją firmy (np. queue-it.com lub netacea.com), które oferują takie gotowe rozwiązania, które możesz w prosty sposób zaimplementować na swojej stronie.

Pamiętaj o aktualizacjach

Jeszcze przed gorącym okresem wyprzedaży, pomyśl o zaktualizowaniu swojego oprogramowania. Dzięki temu będziesz znacznie mniej narażony na atak w czasie, gdy Twój sklep będzie bił rekordy sprzedaży. Pamiętaj jednak, by nie robić aktualizacji na ostatnią chwilę – w artykule “Dlaczego piątkowe deploymenty to zły pomysł?” piszemy czemu to zły pomysł 😉

Nie zaniedbuj kopii zapasowych

Zawsze bądź gotowy na każdą ewentualność. Poprawnie wykonane kopie zapasowe wszystkich potrzebnych konfiguracji oraz bazy danych jeszcze przed wzmożoną popularnością Twojej strony, mogą okazać się zbawienne jeśli coś jednak pójdzie źle. Do sprawnego przywrócenia działania serwisu po poważnej awarii przyda się zarządzanie konfiguracją serwera poprzez narzędzie takie, jak Ansible. Dzięki temu po „odpaleniu playbook’a” masz z powrotem działający skonfigurowany serwer. Pozostaje tylko wrzucić najświeższą kopię bazy danych i serwis ponownie jest dostępny.

W przypadku, gdy musisz skorzystać z powyższych rozwiązań, nie ma powodu do paniki, ponieważ możesz użyć planu disaster recovery. Napisaliśmy o nim więcej w tym artykule, ale w skrócie jest to procedura opisująca krok po kroku w jaki sposób szybko i sprawnie przywrócić do życia Twój sklep. Jeżeli nie masz takiego planu, sporządź go jeszcze dzisiaj – podziękujesz sobie w przyszłości 🙂

To tylko parę porad, które mogą Ci pomóc przetrwać gorący okres wyprzedaży, związanych nie tylko z Black Friday, ale też nadchodzącymi świętami Bożego Narodzenia.

Nie musisz w pełni wykorzystać dwóch pierwszych zabezpieczeń – do chmury można przenieść jedynie część infrastruktury, a jeśli nie jesteś gotów na dwukrotne zwiększenie zasobów, samo dodanie serwera cache znacząco przyśpieszy działanie serwisu. Środki, które wybierzesz, powinny być przede wszystkim dopasowane do specyfiki Twojego serwisu i czasu, jaki możesz poświęcić na wprowadzenie wszelkich zmian.

Aha, jest oczywiście jeszcze jeden sposób ochrony przed wzmożonym ruchem w Czarny Piątek – zrezygnuj z masowych wyprzedaży 😉 Ale czy na pewno chcesz odpuścić wielkie opróżnianie Twojego sklepowego magazynu?