author img

Michał Kloczkowski

Dlaczego sam hosting w e-commerce to za mało

9 kluczowych aspektów profesjonalnego utrzymania sklepu na Magento 2 i innych platformach

Magento 2 uchodzi za dojrzały i bardzo rozbudowany system do e-commerce. Jednak samo oprogramowanie i jego rozwój, w rozumieniu programistycznym, nie daje gwarancji, że nasz sklep internetowy będzie dobrze zabezpieczony w przypadku awarii, będzie działał szybko i będzie osadzony w infrastrukturze nadającej się do efektywnego rozwoju.

Przez lata pracy na sklepach własnych i sklepach naszych klientów wypracowaliśmy zestaw standardów, które powyższe aspekty gwarantują. Przejmując już istniejące sklepy internetowe pod nasze skrzydła przekonaliśmy się, że można być od nich oddalonym naprawdę daleko - postanowiliśmy więc podzielić się kluczowymi wskazówkami.

Poniżej znajdziesz 9 punktów, które powinny stanowić dla Ciebie listę do przepracowania z osobami odpowiedzialnymi za utrzymanie i rozwój Twojego sklepu. Mamy nadzieję, że dzięki niej zidentyfikujesz braki, wesprze Cię ona w skonstruowaniu backloga, który zapewni lepsze zabezpieczenie Twojego biznesu lub da większy komfort użytkowania sklepu przez Twoich klientów.

1. Optymalizacja aplikacji wspierających silnik Magento 2

Magento 2 to aplikacja, która stanowi mózg całej operacji związanej z działaniem sklepu internetowego, jednak nie może działać bez aplikacji wspierających. Poza najbardziej podstawową - bazą danych MySql - mamy do czynienia też z Elastic Search (wymaganego obligatoryjnie od paru ostatnich wersji Magento 2), Redisem, PHP czy elementami opcjonalnymi takimi jak Varnish czy RabbitMQ. Każda z tych aplikacji może przyczyniać się do przyspieszenia, ale i spowolnienia Twojego serwisu. Na co zwrócić szczególną uwagę? Moim zdaniem 2 systemy wymagają szczególnej uwagi:

Elastic Search - potężny kombajn stanowiący fundament działania wyszukiwarki i indeksowania katalogu Magento. Często jego eksploatacja poszerzana jest przez dodatkowe moduły. Umożliwia efektywną pracę na katalogu produktów, ale techniczne zajmuje dużą część zasobów serwera, ponieważ java - język na którym opiera się Elastic - ma swoją specyfikę utrzymania. Skontroluj zachowanie swojego Elastica, upewnij się, że nie istnieją wąskie gardła, gdy Elastic “rozpycha się” na serwerze i zabiera wszystkie zasoby potrzebne do podstawowego działania podstawowych aplikacji. Powody takiego zachowania mogą być różne, a zanim namierzysz problem w kodzie, możesz ograniczyć niepożądane działanie zamykając Elastic. 

Varnish - Varnish Cache to kolejny ważny, acz opcjonalny elementów infrastruktury e-commerce. Jest on rozwiązaniem, które pozwala na przyspieszenie działania sklepu internetowego, poprawiając tym samym komfort zakupów dla klientów. Dzięki temu rozwiązaniu możemy przyspieszyć ładowanie się stron internetowych nawet o kilkadziesiąt procent, co z pewnością przyczyni się do zwiększenia konwersji i poprawy wyników sprzedażowych.

Główną zaletą Varnish Cache jest to, że działa on na poziomie pośredniczącym między serwerem a użytkownikiem końcowym. Dzięki temu, że zapisuje on treści stron internetowych w pamięci podręcznej, nie ma potrzeby za każdym razem pobierania ich z serwera. To pozwala na znaczne przyspieszenie działania sklepu internetowego i zwiększenie jego wydajności. Co więcej, Varnish Cache jest w stanie obsłużyć bardzo dużą liczbę zapytań, co czyni go idealnym rozwiązaniem dla sklepów internetowych o dużym ruchu.

Warto dodać, że Varnish Cache jest kompatybilny z Magento 2, co oznacza, że można go bez problemu zintegrować z tą platformą e-commerce, nawet w jej wersji open source, bez instalacji dodatkowego kodu. Wystarczy odpowiednia konfiguracja na poziomie infrastruktury i samej aplikacji.

2. Zapewnienie ciągłości działania sklepu: autoinstalatory i disaster recovery

Zadałeś/aś sobie kiedyś pytanie, ile czasu zajmie odtworzenie Twojego serwisu od zera, w przypadku np. spalenia się data center w którym osadzone są Twoje usługi? Scenariusz przestał być taki niewyobrażalny po sporej awarii spowodowanej pożarem OVH kilka lat temu.

Dobrą praktyka jest utrzymywanie autoinstalatorów pod Twój serwis. Technologiami które można w tym wypadku użyć są m. in. instalatory Ansible. W przypadku sytuacji awaryjnych, które generują stres, dobrze by admin nie przypominał sobie co ma robić, a mógł odpalić automatyczny skrypt odzyskujący aplikację. Na co dzień taki autoinstalator przydaje się też w codziennej pracy podczas deploymentu czy instalacji dodatkowych środowisk test/stage.

Warto poświęcić też chwilę samemu procesowi disaster recovery, czyli procedurze przywracania normalnego funkcjonowania systemu po całkowitej lub częściowej awarii, a jego celem jest minimalizowanie strat i czasu przestoju. W przypadku awarii serwera lub całkowitego padu systemu, proces ten zakłada szybkie przywrócenie systemu do stanu przed awarią, umożliwiając szybkie i skuteczne działanie. W jego skład wchodzą między innymi procesy tworzenia kopii zapasowych, planowanie testów awaryjnych oraz określenie procedur przywracania w razie awarii. Dzięki temu firmy są w stanie przeciwdziałać ewentualnym katastrofom i zminimalizować ich skutki, co w przypadku sklepu internetowego jest szczególnie istotne dla utrzymania ciągłości biznesowej.

3. Wykorzystanie Zabbix do monitoringu serwera i aplikacji sklepu internetowego

Zabbix to popularny i wszechstronny system do monitoringu, który może być używany nie tylko do monitorowania serwerów i aplikacji, ale również do monitorowania sklepów internetowych i systemów e-commerce. W dzisiejszych czasach klienci oczekują szybkiego i bezproblemowego działania sklepów online, dlatego monitorowanie wydajności i dostępności sklepu internetowego stało się niezbędne dla właścicieli biznesów.

Zwykle Zabbix kojarzy się z racji jego podstawowych funkcjonalności dotyczących monitoringu samego serwera, takich jak monitorowanie wydajności czy alarmowanie w przypadku awarii. Dzięki temu właściciele sklepów internetowych mogą monitorować techniczne aspekty swojego sklepu. Kluczowym jednak dla właścicieli sklepów internetowych aspektem jest czy działa sam sklep, a nie tylko czy serwer odpowiada poprawnie na żądania lub nie skończyło się miejsce na dysku.

Tymczasem Zabbix można wykorzystać też do monitoringu samej aplikacji - najprostszą formą implementacji jest dodanie tzw. “triggerów” na dostępność kluczowych stron Twojego serwisu, co pozwala monitorować czy główne strony sklepu poprawnie wyświetlają się użytkownikom. Taka czujka sprawdza czy sklep internetowy działa poprawnie, czy nie ma problemów z ładowaniem stron i czy użytkownicy nie doświadczają problemów z dostępnością. 

4. Utrzymywanie środowisk nieprodukcyjnych i zarządzanie bezpieczeństwem danych

Sam hosting tzw. “produkcji” (środowiska produkcyjnego) to zaledwie połowa sukcesu w prowadzeniu skutecznego i niezawodnego biznesu online. Oprócz niego istotne są również dodatkowe środowiska: testowe, stage oraz lokalne, które razem umożliwiają testowanie i wdrażanie zmian w bezpieczny i kontrolowany sposób. 

Środowiska te pozwalają na niezależny development oraz testowanie zmian, a także bezpieczne wdrażanie i testowanie całej wersji. Dobre środowisko to nie tylko działający sklep internetowy w tzw. trybie “sandbox”, ale też wszystkie integracje związane z modułami i funkcjonalnościami w naszej platformie e-commerce. Posiadanie wielu środowisk jednak tworzy też swoje problemy, w tym kwestie nadzoru nad danymi osobowymi.

Bezpieczeństwo danych jest kluczowe dla każdej firmy, a szczególnie dla tych, które prowadzą sklepy internetowe. Jednym z najważniejszych elementów w zarządzaniu bezpieczeństwem danych jest właściwe zarządzanie backupami, które są wykorzystywane do przywrócenia danych w przypadku awarii systemu, ale też do odtworzenia pewnych błędów, które wydarzyły się na środowisku produkcyjnym.

Backupy z produkcji zawierają często wrażliwe informacje, takie jak dane osobowe klientów czy dane finansowe, dlatego też ich bezpieczne przechowywanie i dostęp tylko dla uprawnionych osób jest krytyczne dla skutecznego działania biznesu. W tym celu każdy sklep internetowy powinien posiadać anonimizator bazy danych, który usuwa dane osobowe klientów oraz wrażliwe dane biznesowe przed udostępnieniem bazy do developmentu.

5. Monitoring wydajności kodu 

Korzystanie z dodatkowych narzędzi do monitorowania aplikacji, takich jak New Relic czy Blackfire, to kolejny ważny element efektywnego zarządzania systemami e-commerce. Każda nowa zmiana dodana do naszego sklepu internetowego to nie tylko usprawnienie i funkcjonalność, ale też nowy kod, który musi wykonywać się na serwerze. Napisanie go w efektywny sposób jest tak samo istotne dla działania całości jak sama funkcjonalność którą ten kod realizuje. Do bieżącego monitoringu oraz wsparcia developerskiego w tym zakresie istnieją gotowe aplikacje.

New Relic to zaawansowany system monitoringu wydajności aplikacji, który umożliwia śledzenie działań użytkowników oraz wykrywanie i rozwiązywanie problemów związanych z wydajnością aplikacji. Dzięki temu, można błyskawicznie reagować na problemy i zapewnić użytkownikom najlepsze wrażenia z korzystania ze sklepu internetowego. 

Blackfire z kolei to narzędzie do profilowania kodu, które umożliwia analizowanie wydajności aplikacji w czasie rzeczywistym i wykrywanie problemów w wydajności kodu. Dzięki Blackfire można zoptymalizować kod i w efektywny sposób przyspieszyć działanie aplikacji. To narzędzie szczególnie przydatne dla deweloperów i osób odpowiedzialnych za utrzymanie sklepu internetowego.

6. Utrzymanie repozytorium i procesu wdrażania zmian

Utrzymanie aplikacji e-commerce to nie tylko zarządzanie serwerami i bieżącą opieką nad działaniem sklepu. Równie ważnym elementem jest dbałość o bazy kodu, które stanowią fundament całego systemu. Bez ich ciągłego uaktualniania i weryfikacji, trudno mówić o stabilności i bezpieczeństwie sklepu. W naszej praktyce zdarzały się sytuacje, kiedy to przejmując sklepy na Magento, nie mieliśmy dostępu do repozytorium z kodem, a jedynie do plików na serwerze. W takich przypadkach konieczny jest audyt zgodności i wyrównanie do oficjalnego repozytorium Magento/Adobe.

Aby ułatwić sobie pracę, warto korzystać z narzędzi takich jak GitLab, które nie tylko stanowią miejsce na przechowywanie kodu, ale również służą do automatyzacji procesów. Dzięki temu możliwe jest m. in. szybsze wdrożenie zmian, łatwiejsza praca zespołowa, a także zapewnienie ciągłej integracji i wdrażania zmian w kodzie (Continuous Integration/Continuous Delivery). Dodatkowo, korzystając z takich narzędzi, można skutecznie kontrolować wersjonowanie kodu, a także zarządzać dostępem do repozytorium, co pozwala na zwiększenie bezpieczeństwa i kontrolę nad procesami pracy.

7. Clouflare jako narzędzie wspierające wydajność i bezpieczeństwo

Cloudflare to ciekawe narzędzie, które oferuje wiele funkcjonalności dla platform internetowych takich jak sklepy internetowe czy  publiczne platformy do handlu B2B. Jedną z nich jest rozwiązanie Cache Cloudflare na poziomie CDN (Content Delivery Network). To idealne rozwiązanie dla serwisów internetowych, szczególnie tych z dużą ilością użytkowników z różnych regionów świata.

Cache Cloudflare umożliwia szybkie dostarczanie statycznych zasobów takich jak obrazy, arkusze stylów czy skrypty, dzięki czemu serwer jest odciążony. Znaczące przyspieszenie ładowania się stron sprawia, że użytkownicy są bardziej zadowoleni i nie rezygnują z korzystania z danego serwisu. Co więcej, Cache Cloudflare działa nie tylko dla Magento 2, ale dla wielu różnych aplikacji internetowych.

Warto również podkreślić, że Cloudflare oferuje więcej niż tylko Cache. Ich platforma oferuje rozwiązania z zakresu bezpieczeństwa, przyspieszenia dostarczania treści czy ochrony przed atakami DDoS. Cloudflare pozwala na zastosowanie tych funkcjonalności w prosty i łatwy sposób, bez konieczności przeprowadzania skomplikowanej konfiguracji. 

8. Monitorowanie i analiza logów: szybkie wykrywanie i rozwiązywanie problemów

W dzisiejszych czasach systemy informatyczne rozwijają się w tempie, którego jeszcze kilka lat temu nie mogliśmy sobie wyobrazić. Co za tym idzie, każdy element infrastruktury może ulec awarii, a złożoność architektury systemu powoduje, że znalezienie przyczyny problemu nie jest łatwe. Do rozwiązywania tego typu problemów można wykorzystać Sentry lub/i Graylog.

Sentry to narzędzie open source, które pozwala na bieżąco monitorować aplikacje webowe oraz mobilne i reagować na pojawiające się błędy w czasie rzeczywistym. Sentry zbiera informacje o błędach. Sentry jest szczególnie przydatny dla firm, które mają duże zasoby kodu, gdzie wykrycie błędu jest czasochłonne i kosztowne.

Innym narzędziem wartym uwagi jest Graylog. Jest to narzędzie open source, które umożliwia zbieranie, przetwarzanie i analizowanie logów z różnych źródeł. Dzięki Graylogowi możemy monitorować aplikacje, serwery, urządzenia sieciowe oraz systemy operacyjne w czasie rzeczywistym. Narzędzie pozwala na automatyczne wykrywanie awarii i ostrzeganie o niebezpiecznych sytuacjach. Dzięki funkcji wyszukiwania, Graylog pozwala na szybkie i skuteczne przeszukiwanie dzienników zdarzeń i znajdowanie przyczyny problemów. Warto przy tym wszystkim pamiętać o anonimizacji logów!

9. Baza danych typu "replica"

Ostatni punkt dotyczy elementu który wykorzystywany jest przez większe sklepy internetowe, których część online stanowi główne źródło dochodów - często nie jest to po prostu rozwiązanie tanie, a określane jako opcjonalne. Mowa o wydzielonym całym serwerze zawierającym kopie bazy danych, w technologii zwanym “slave”, jednak użyjemy mniej kontrowersyjnego odpowiednika “replica”. Na marginesie warto dodać, że w środowisku toczy się słuszna dyskusja o potrzebie zmian niektórych określeń w świecie IT, które z dzisiejszej perspektywy mogą być niewłaściwe lub obraźliwe. 

Baza danych “replica” to taki typ bazy, który jest wykorzystywana jako drugorzędna w stosunku do bazy danych produkcyjnej. W przeciwieństwie do bazy danych produkcyjnej, która jest najważniejsza, baza danych drugorzędna jest wykorzystywana do celów dodatkowych, takich jak testowanie aplikacji, analiza danych, raportowanie itp., nie obciążając tym samym bazy produkcyjnej niepotrzebnymi zapytaniami.

Ważną rolą takiej bazy jest też jej rola w utrzymaniu wysokiej dostępności serwisu. W razie awarii serwera z produkcyjną DB można używać bazy “replica” w roli produkcyjnej. Do zabezpieczenia bazy danych nie trzeba od razu instalować fizycznie kilku maszyn. Można wykorzystać z usług dostawców cloudowych, takich jak popularny RDS w ramach AWS, czy ich odpowiedniki u innych chmurowych dostawców.

Podsumowanie

Dostępność i responsywność sklepu internetowego to cichy, acz kluczowy parametr wpływający na powodzenie biznesu w sieci. Dostępność serwisu mierzona w godzinach to tylko część składowa wrażeń użytkownika na które ma ona wpływ. Trudno dostępny sklep powoduje brak chęci do zakupów u klientów i nie motywuje ich do powracania do zakupów na stronie w przyszłości. 

Na największy dysonans pod względem doświadczeń użytkownika względem tego, co platforma sprzedażowa miała oferować narażone są te sklepy, które miały w zamyśle być jak najbardziej doskonałe. Skomplikowane rozwiązania, jak te oparte np. na Magento 2 wymagają ustandaryzowanego podejścia i wypracowanych procesów “od zaplecza” by wdrożenia mogły przebiegać bez zakłóceń, a dostępność sklepu mogła być utrzymana w maksymalnym zakresie czasu. 

Pokrewny temat backupów - cichych bohaterów codziennej sprzedaży w sieci już na dobre zadomowił się w głowach specjalistów i managerów e-commerce, stanowiąc fundament dobrych praktyk. Nie inaczej powinno być w kwestii wyboru odpowiedniego rozwiązania infrastrukturowego i procesowego. Powinno ono być równie pierwszoplanowe by okresowa niedostępność sklepu lub spowolnione działanie nie uniemożliwiły czerpania przyjemności obcowania z dopracowanym na każdym z pozostałych etapów produktem.


Przeczytaj również: