author img

Michał Kloczkowski

Jak mieć stabilny i wysoce wydajny sklep internetowy na przykładzie platformy Magento 2

Kontrola jakości i czystości kodu jako główne czynniki zachowania dobrej wydajności sklepów internetowych opartych o Magento 2 (i nie tylko). Poniżej 6 konkretnych porad, które pozwolą Ci pilnować wysokiego standardu.

To czym powinniśmy się kierować by zachować maksymalnie sprawny silnik e-commerce, zachowując przy tym racjonalnie niskie koszty, to stara dobra prawda, że im mniej mamy do utrzymywania tym łatwiej będzie nam to robić. 

Analogiczną zasadą powinniśmy kierować się przy tworzeniu nowych rozwiązań - KISS, (ang. keep it stupid simple), czyli w bardziej swobodnym tłumaczeniu “twórz rzeczy banalnie proste”. Zasada “mniej znaczy lepiej” nie zawsze jest drogą samych wyrzeczeń, często jednak gromadzimy niepotrzebny kod lub zaciągamy dług technologiczny tam, gdzie jest to zupełnie niepotrzebne.

Poniżej znajdziesz listę elementów, przy których szczególnie ważne jest pilnowanie przejrzystości i prostoty.

1. Czysty i lekki frontend

Jednym z najpopularniejszych tematów w Magento (i nie tylko) jest rynek gotowych template’ów. Po co płacić kilkadziesiąt tysięcy złotych za layout skoro można sobie kupić template za 299 dolarów? Nie będę oceniał czy warto, czy nie, należy natomiast wziąć pod uwagę następujące kwestie:

  • zwróć uwagę czy template, który masz nie posiada zbyt dużo zbędnych wtyczek javascript typu JQuery (choć tego akurat ciężko się z Magento pozbyć). Im więcej zbędnych animacji i “bajerów” tym gorzej dla przeglądarek użytkowników i zbędne kilobajty obciążają stronę w testach wydajnościowych. Tymczasem ładna animacja buttonu rzadko decyduje o konwersji.

  • wsparcie modułów zewnętrznych - dobrą praktyką przy tworzeniu modułów Magento, nawet tych open source’owych jest ich kompatybilność z Magento Blank / Magento Luma, czyli natywnymi template’ami Magento. Im bliżej oryginału jest Twój layout, tym taniej będziesz mógł adaptować technologie.

Czy PWA lub Hyva jest dobrym wyborem w celu przyspieszenia Magento? Myślę, że oba te rozwiązania są dobrym wyborem dla świadomych właścicieli sklepów, którzy sięgają po nie dokładnie wiedząc czego oczekiwać. Na koniec dnia zarówna Hyva jako rozwiązanie pośrednie, jako i sklep z architekturą wieloserwisową i frontem PWA, mogą znacznie przyspieszyć Twój sklep dzięki innemu podejściu do architektury, mogą być jednak bolączką na wielu płaszczyznach. Zanim po nie sięgniesz - co dla istniejących sklepów skończy się zwykle większym projektem - upewnij się czy nie ma łatwiejszych ścieżek w optymalizacji Twojego serwisu.

2. Usuń zbędne moduły

Jedną z większych zalet które wymieniają ludzie zapytani o mocne strony Magento, jest tzw. modułowość. Dzięki modułowej budowie Magento możemy łatwo dodawać do niego funkcjonalności poprzez tworzenie lub instalacje gotowych modułów. Niestety racjonalnie wykorzystywanie tej zalety może szybko przerodzić się w jedną z największych wad.

Zbyt duża ilość modułów może poważnie wpłynąć na wydajność i stabilność naszego serwisu. Dzieje się z tak z kilku powodów, a do głównych należy wątpliwa jakość gotowych modułów (nie tylko tych darmowych), która szczególnia uwydatnia się przy zderzeniu z dużą skalą, a także fakt, że moduły często tworzone są przez niepowiązanych ze sobą autorów i wchodzą w konflikty.

Poproś developera o listę modułów które składają się na Twoje Magento i pozbądź się tego co zbędne. Większość (ponad 300) to moduły systemowe, które są w Magento od początku jego instalacji - a co ciekawe, dobre kilkadziesiąt z nich jest również do niczego niepotrzebna. Pozbądź się tego co wiesz, że nie będzie Ci już potrzebne i/lub poproś o rekomendację osoby odpowiedzialne za techniczne utrzymanie Twojego sklepu.

3. Dbaj o czystość error loga

Większość serwisów i modułów odkłada w ustrukturyzowany sposób logi błędów, które pojawiają się w trakcie funkcjonowania systemu. Problem polega na tym, że w większości zagląda się do zbioru logów wtedy, kiedy mamy ku temu konkretną potrzebę lub właśnie coś się dzieje.

Dobrą praktyką jest jednak robić to częściej, a przynajmniej raz na miesiąc. Choć większość komunikatów błędów może wydawać się mało poważna (o ile w ogóle Ci coś mówią) mogą negatywnie wpłynąć na wydajność pewnych procesów lub całkowicie je zaburzyć. Najciekawsze są oczywiście logi ze środowiska produkcyjnego.

Poproś o dostarczenie logów z produkcji i o analizę ich przez swój team developerski. Oczywiście takie zadanie może zająć masę czasu i pieniędzy, więc na czym należy się skupić się w pierwszej kolejności? Sam wybierz okresy w których na Twoim sklepie występowały problemy i poproś o przejrzenie komunikatów z tamtego okresu, drugim skutecznym sposobem będzie przegląd tego, co powtarza się najczęściej.

4. Skontroluj swój checkout

Jedną z najbardziej rozpowszechnionych funkcjonalności przebudowywanych w Magento jest checkout. Pewnie dlatego, że sam w sobie pozostawia on wiele do życzenia w czystej wersji sklepu (Magento Luma), szczególnie pod kątem UX. Jako, że dodatkowo modyfikowanie tak dużej funkcjonalności jaką jest checkout okazuje się po prostu bardzo drogie, często w tym aspekcie właściciele sklepów internetowych sięgają po gotowe rozwiązania - a szczególnie rozpopularyzowane pluginy one-step-checkout.

Mimo, że większość producentów one-step-checkout’ów zachwyca się ich wpływem na konwersję, nasze doświadczenie są zgoła inne. Nie dość, że nie udało nam się nigdy realnie udowodnić ich pozytywnego wpływu na konwersje, to na pewno udało nam się zmierzyć znacznie większe zużycie zasobów (pod kątem jednoczesnych requestów aplikacji Magento do bazy danych) oraz problemy w danych dot. zamówień przy dużej skali.

Masz więc problemy z wydajnością lub gubisz dane w zamówieniach jak np. kod paczkomatu czy kod pocztowy? Zastanów się czy nie przywrócić natywnego checkoutu Magento. Wystarczy mu trochę poprawek na poziomie XML i CSS, by był naprawdę przyjazny pod kątem UX, a przy tym zachowywał wysoką wydajność i niezawodność podczasu użytkowania.

Checkout w natywnym Magento Luma



Checkout w naszym szablonie opartym o Magento 2



5. Upewnij się, że działasz w trybie produkcyjnym

Magento jak wiele dojrzałych systemów ma kilka trybów funkcjonowania. Najbardziej znanymi poza tzw. maintenance mode, który wykorzystywany jest by zablokować ruch podczas prac konserwacyjnych jest tryb deweloperski i tryb produkcyjny, gdzie ten drugi jak sama nazwa wskazuje służy do wprowadzenia aplikacji w tryb maksymalnej wydajności na instancji produkcyjnej.

Rzecz tak oczywista, że aż rzadko kiedy jest kontrolowana przez właścicieli sklepów internetowych, a niestety niejeden sklep zdarzało nam się już przejąć w stanie “Magento się nie buduje”. A co to właściwie oznacza? Magento, którego nie da się wprowadzić w stan produkcyjny to takie, którego kod się nie kompiluje, czyli nie jest w stanie wygenerować swojej docelowej i wynikowej formy kodu. Część funkcjonalności musi przeliczać się ciągle od nowa, część kodu nie da się skompresować przez co zajmuje więcej miejsca, nie jest też w pełni wykorzystywany cache.

Pierwszą oznaką, że Twój sklep może działać w trybie deweloperskim jest obecność zakładki Developer w sekcji Advanced po wejściu w Store > Configuration - możesz zapytać o to swój zespół. Zwykle za problemem z trybem produkcyjnym Magento stoi konkretny problem lub zestaw problemów. W zależności od tego jak długo problem był bagatelizowany może to oznaczać, że kod źródłowy jest już daleki od oryginału i przywrócenie go do pierwotnej formy może być czasochłonnym procesem - warto jednak to zrobić nie tylko z powodów performance’owych, ale też związanych z bezpieczeństwem czy kosztami aktualizacji.

6. Skontroluj procesy integracyjne

Czy jesteś pewien/pewna, że wszystkie integracje przebiegają jak należy, a przynajmniej jesteś świadomy/a wszystkich procesów integracyjnych jakie odbywają się w Twoim sklepie internetowym? Integracje są często sercem sklepów internetowych, nie tylko tych dużych, a często należą do najmniej kontrolowanego elementu w serwisie.

Znaczna część integracji z jakimi mieliśmy do czynienia jest napisana mocno niewydajnie lub generuje błędy. Jeśli jeszcze jej nie masz, sporządź listę wszystkich procesów integracyjnych jakie odbywają się w Twoim serwisie oraz poproś o zmierzenie/podanie czasu ich wykonywania. Sprawdź, czy część z nich nie zajmuje proporcjonalnie więcej czasu na tle innych. Być może znajdziesz w nich te, które nadają się do łatwej optymalizacji lub chociaż zmniejszenia częstotliwości wykonywania (o ile to wchodzi w grę) w najgorętszych okresach sprzedażowych.

Warto też spojrzeć czy procesy nie zawieszają się lub nie generują błędów. Przy dobrze napisanych integracjach powinieneś widzieć wszystko w error logu (pisałem o tym w poprzednim akapicie). Czasami pojedyncze produkty, klienci czy zamówienia są w stanie spowodować powtarzający się proces kończący się zawieszaniem procesu.

Zmierz również zużycie zasobów w trakcie wykonywania integracji. Nie zawsze optymalizacja kodu jest jedynym sposobem działania. Czasami zmiana czasu wykonywania procesów tak, by nie nachodziły na siebie lub dodanie trochę mocy na serwerze wystarczy, by zwiększyć komfort użytkowania serwisu przez jego użytkowników.

Jak ocenić, w jakim stanie jest moje Magento 2?

Poproś o wycenę aktualizacji swojego sklepu co najmniej do wersji 2.4.5. Jeśli cena powali Cię z nóg, a software house lub Twoi developerzy nabrali wody w usta, to znaczy, że masz do wykonania wcześniejsze 6 kroków, a prawdopodobnie i dużo więcej.

Czy są inne metody? Oczywiście że tak, my zwykle wykonujemy prosty audyt i próbną instalację serwisu - możesz nas o to zapytać -  są oczywiście też dostępne na rynku inne, często znacznie bardziej obszerne audyty. Jednak wspomniana wyżej aktualizacja jest dobrym wyznacznikiem kondycji serwisu - im częściej jest ona wykonywana i im bardziej gładko przebiega - tym prawdopodobniej mniej problemów przeszkadza nam w bieżącym rozwoju serwisu.


Przeczytaj również: