Wiele osób, które dopiero rozpoczynają swoją przygodę z rynkiem e-commerce i planują otwarcie własnego sklepu przegląda dostępne na rynku rozwiązania i rozważa wady oraz zalety każdego z nich. To naturalnie i rozsądne. Najczęstszymi obiektami porównań stają się w tym przypadku systemy e-commerce Prestashop i Magento. Dwa rozwiązania, które nie są tylko platformami sprzedażowymi, ale i świetnymi szkieletami do tworzenia bardzo rozbudowanych, zaawansowanych i funkcjonalnych sklepów. Rzeczą, która najbardziej zastanawia w przypadku obu z nich jest skalowalność Prestashop i Magento.
W Internecie mnóstwo jest sprzeczności i artykułów wskazujących na przewagę platformy należącej do Adobe właśnie pod względem skalowalności. Jak jednak jest w rzeczywistości? Czy sklepy, które tworzy się w oparciu o platformę Prestashop są skalowalne? Jak wypadają przy bezpośrednim porównywaniu ich do sklepów bazujących na Magento? O tym postaramy się powiedzieć w dzisiejszym wpisie, przy okazji udzielając szeregu porad związanych z wykorzystaniem potencjału tak serwera, jak i platformy Prestashop. Takich, które obalą teorię jakoby Megento było lepsze pod tym względem właśnie od niej.
1. Czym tak właściwie jest skalowalność Prestashop (i nie tylko)?
Mianem skalowalności określa się przystosowanie konkretnego systemu do rozbudowy informatycznej. Ta jest konieczna do przeprowadzenia w przypadku zwiększonej liczby użytkowników tegoż właśnie systemu lub ilości danych, które system ten musi przetwarzać. Skalowanie występuje w dwóch podstawowych formach. Może być:
- pionowe – taka skalowalność zakłada zmianę komponentów serwera na takie, które posiadają wyższe parametry. Ma miejsce, jeżeli zmiana ta da możliwość istotnego zwiększenia ruchu możliwego do obsłużenia przez system. Jeżeli ten bazuje na algorytmach o wysokiej złożoności obliczeniowej, może się to okazać niemożliwe. Zmiana komponentów nie przyniesie wtedy odpowiednich rezultatów,
- poziome – przy takim rozwiązaniu aplikacja jest w stanie funkcjonować przy jednoczesnym korzystaniu z pełnych zasobów kilku różnych serwerów. Nie jest to łatwe do osiągnięcia i możliwe do wdrożenia w obrębie każdego systemu. Musi on być zaprojektowany właśnie z myślą o tym – a Prestashop spełnia tę właśnie przesłankę.
Myśląc na temat tego, jak zwiększyć sprzedaż w sklepie internetowym pamiętaj, by wziąć pod uwagę to, że robienie tego wzmaga również ruch na sklepie i prowokuje więcej procesów zużywających serwer. Skalowalność to w takiej sytuacji priorytet, a oparcie sklepu o platformę Prestashop – działanie, które ten priorytet bierze pod uwagę.
2. Skalowalność Prestashop w kontekście PHP
Jednymi z problemów, z którymi borykać się mogą szybko rozwijające się sklepy internetowe są te związane ze skryptami PHP. Tymi, które zasilają system Prestashop (ale i konkurencyjne Magento). Rzecz w tym, że system ten – wraz z nabywaniem popularności przez sklep – musi radzić sobie z obsługiwaniem coraz większej liczby procesów interpretujących kod PHP.
Jeden proces obsługuje pojedyncze żądanie HTTP – otrzymuje więc dane wejściowe od przeglądarki, przetwarza je poprzez skrypt, a następnie wysyła wynik. Aby zaś optymalnie wykorzystać proces i nie musieć rozpoczynać nowego, czeka też na nadejście nowego żądania. Nasuwa to jeden wniosek. Serwer musi być w stanie obsłużyć tyle interpreterów PHP, na ile będzie zapotrzebowanie (zależne od jednocześnie przetwarzanych żądań skierowanych do skryptów). Prestashop jest mu w stanie w tym pomóc. Choć wiele rzeczy oferuje “w pakiecie”, opiszemy niektóre z ważniejszych. W ten sposób postaramy się nakreślić, co pod tym względem liczy się najbardziej i powinno rozgrywać się “pod maską”.
1.1. Zmniejszenie liczby procesów
Działaniem doskonale wpływającym na skalowalność Prestashop jest redukowanie liczby procesów PHP. Te są wymagane do funkcjonowania strony sklepu internetowego – system musi stale się ich podejmować. Z tym zadaniem świetnie radzą sobie rozwiązania pokroju Zend OPcache, dzięki którym część kodu bajtowego jest przechowywana w pamięci podręcznej. Dzięki temu nie ma potrzeby generowania go od początku, jak w standardowym. Ważne w tym wszystkim jest też zadbanie o jak najwcześniejsze buforowane wybranych plików przez serwer HTTP. Tak, aby klienci posiadający wolniejsze łącza nie blokowali zasobów na serwerze, gdy nie ma takiej potrzeby.
1.2. Wybór odpowiedniego skryptu i kodu
Jakość kodu systemu e-commerce, z którego korzystasz, by serwować klientom swój sklep internetowy ma ogromne znaczenie. Prestashop może nie jest systemem najszybszym (choć możesz pracować nad jego szybkością), ale dzięki temu daje więcej czasu na to, by procesy PHP “uwalniały się” dla kolejnych klientów. Choć czas ten nie jest idealny, PrestaShop posiada dość krótki, a przede wszystkim przejrzysty i prosty kod. Zwłaszcza porównując ją z wspomnianym już konkurentem – Magento. Jak wykazują liczne benchmarki, w kwestii kodu i wykorzystania RAM-u podczas generowania strony sklepu bije go na głowę. Wystarczy zresztą czysta instalacja obu systemów na tym samym nieobciążonym serwerze, by dojść do takiego właśnie wniosku.
1.3. Wykorzystanie mechanizmów cache (wszystkich możliwych)
Prestashop proponuje bardzo wiele rozbudowanych mechanizmów odpowiedzialnych za cache. Tym podstawowym jest cache szablonów Smarty, dzięki czemu całe fragmenty sklepu internetowego mogą być przechowywane w pamięci podręcznej i wyświetlane natychmiast – bez potrzeby wykonywania procesów związanych z ich generowaniem przy każdym wyświetleniu sklepu. Cache może bazować na systemie plików lub bazie danych, przy tym w tym pierwszym przypadku wszystko będzie przechowywane w RAM-ie. W przypadku wykorzystania bazy danych jest to niemożliwe. Ta jest jednak lepsza w przypadku wieloserwerowego klastra i szybkiej bazy danych.
To jednak nie wszystko. Prestashop doskonale podchodzi również do innych cache’owanych przez siebie elementów sklepu. Do pamięci podręcznej przenosi stan najczęściej używanych obiektów, w tym popularnych produktów czy samych zapytań do bazy. Wymaga to jednak odpowiedniego skonfigurowania (a wcześniej i zainstalowania) dodatkowego oprogramowania na serwerze. Przynajmniej jeśli się chce, by wszystko działało zgodnie z założeniami. Na pojedynczych serwerach idealnie sprawdzi się APC lub XCache. Problem może pojawić się na nowszych wersjach PHP, niewspierających tych rozwiązań – wtedy jednak można zastosować nowszego rozszerzenia APC (bazującego na oryginale). Te rozwiązania nie zadziałają na wielu serwerach – w ich przypadku konieczne będzie zainstalowanie i skonfigurowanie w sieci centralnego serwera memcached. To na niego powinna wtedy trafiać cała zapisywana pamięć podręczna (a nie tak, jak domyślnie, kiedy to jest przechowywana na wielu różnych serwerach w różnej formie, zależnej od któregoś z nich).
Cieszy fakt, że w przypadku wszystkich tych rozwiązań Prestashop zapewnia możliwości i nie zamyka się na żadną opcję. To pozwala skonfigurować serwer lub serwery w taki sposób, by skalowalność była w maksymalny sposób wykorzystana i przynosiła pożądane efekty.
1.4. Skalowalność Prestashop a serwer HTTP
Mającym bardzo istotny wpływ na skalowalność Prestashop czynnikiem, który umożliwia przede wszystkim odpowiednie rozłożenie obciążenia prowokowanego przez skrypty PHP na wiele serwerów, jest działanie w obrębie lekkiego serwera HTTP. W tej roli doskonale sprawdzi się czy to nginx, czy też lighttpd. W przeciwieństwie do konkurencyjnego Apache, które – nie oszukujmy się – jest najpopularniejsze, ale i nieidealne, takie rozwiązanie pozwoli na obsłużenie nawet dziesiątek tysięcy jednoczesnych połączeń. Oznacza ono zatem, że serwer będzie sobie w stanie poradzić z praktycznie każdym obciążeniem.
Poza uruchomieniem lekkiego serwera HTTP konieczne jest też uruchomienie na różnych komputerach procesów PHP w trybie FastCGI, nasłuchujących na gniazdach TCP/IP< a następnie skonfigurowanie tego serwera, by był w stanie przekazywać tym procesom nadchodzące żądania związane ze skryptami PHP.
Prestashop sprytnie wykorzystuje serwer, zapisując dane nie tylko w bazie danych, ale i w systemie plików. Te są dzięki temu dostępne dla każdego procesu (a nie tylko dla tego, który te dane zapisał). Stosuje do tego NFS (Network File System), co wcale nie oznacza konieczności każdorazowego przesyłania olbrzymich ilości danych przy wyświetleniu sklepu. Tak naprawdę większość pamięci wykorzystywana jest do sprawdzania aktualności cache, a zaledwie niewielka jej część – na przesyłanie zawartości plików, również konieczne w całym tym procesie.
3. Skalowalność Prestashop w kontekście bazy danych
Baza danych jest jednym z tych miejsc w sklepie internetowym, po które system sięga zdecydowanie najczęściej. To w niej przechowywane są wszystkie dane – opisy produktów, ich nazwy, parametry. Słowem: wszystko, co w formie tekstowej dalej przetwarza przez system. Prestashop świetnie podchodzi pod tym względem do skalowalności, udostępniając mnóstwo narzędzi i rozwiązań ułatwiających takową. Mimo wszystko jednak poniżej przedstawiamy sposoby na lepsze i efektywniejsze wykorzystanie możliwości serwera – wiele spośród nich stosuje już Prestashop, co wyraźnie podkreślamy.
2.1. Maksymalne wykorzystanie możliwości jednego serwera
Większość serwerów posiada z góry narzucone ustawienia, które ograniczają pamięć, jaką można przeznaczyć na dokonywanie operacji w obrębie bazy danych. Te ograniczenia powinieneś zwiększyć, co będzie miało wpływ na wiele aspektów. Jeżeli na przykład zwiększysz rozmiar puli buforów InnoDB, zmniejszysz użycie dysku i maksymalny rozmiar tabeli tymczasowej, która będzie przechowywana w pamięci podręcznej. Dzięki temu z kolei przyspieszysz wiele operacji, a Twój sklep będzie funkcjonował jeszcze lepiej.
2.2. Zwiększenie liczby operacji dyskowych
Zarządzając swoim serwerem możesz włączyć w jego opcjach konfiguracyjnych opcję ograniczającą zapisywanie zawartości pamięci podręcznej dysku. Optymalnie do jednego zapisu na sekundę. Zrobisz to przy użyciu linii innodb_flush_log_at_trx_commit=2). Będzie to miało prosty efekt w postaci zwiększenia liczby użytkowników, których Twój sklep będzie w stanie obsłużyć w tym samym momencie. Choć minusem może być tu możliwość utraty transakcji z ostatniej sekundy w przypadku awarii serwera, jest to problem stricte marginalny. Zwłaszcza biorąc pod uwagę korzyści, jakie jest Ci w stanie przynieść takie rozwiązanie.
2.3. Redukcja obciążenia bazy danych a Skalowalność Prestashop
Chcąc, aby serwer działał doskonale w każdych stawianych przed nim warunkach, musisz maksymalnie zmniejszyć obciążenie bazy danych. Prestashop doskonale radzi sobie z tym sama. Jej silnik został bowiem zaprojektowany w taki sposób, by nie stosować żadnych rozwiązań mających wpływ na nadmierne obciążenie serwera bazy danych. Korzystając więc z tej platformy o to nie musisz się martwić.
Jeśli mielibyśmy porównywać PrestaShop z Magento pod tym kątem, to ta pierwsza zdecydowanie króluje. Magento stosuje bardzo wiele rozwiązań, które utrudniają serwerowi MySQL podejmowanie wielu rozwiązań optymalizacyjnych. Nawet jeśli te rozwiązania pomagają programistom i twórcom sklepu pewne operacje, nie wpływają pozytywnie na skalowalność całego sklepu internetowego.
2.4. Wieloserwerowość
Korzystanie z wielu serwerów do obsługi baz danych jest podstawą dla wszystkich serwerów narażonych na bardzo duże obciążenie. Takich, które odwiedza mnóstwo potencjalnych klientów. Prestashop i w tym przypadku radzi sobie doskonale, zapewniając Ci infrastrukturę pozwalającą na wykorzystanie wielu serwerów. Przy każdym wyświetleniu strony Prestashop rozkłada równomiernie obciążenie pomiędzy wszystkie serwery. Robi to zamiast losować serwer przy każdym wejściu i to jego używać do wszystkich operacji dla tego wyświetlenie. Mimo, że to rozwiązanie również jest dość popularne.
Jeśli chcesz włączyć takie rozwiązanie, musisz skonfigurować na serwerze MySQL replikację (na poziomie zapytań lub wierszy). Następnie powinieneśzmodyfikować plik db_slave_server.inc.php. W nim z kolei musisz wprowadzić dane dostępowe do tych serwerów. Wraz z nazwami baz danych, hasłami, nazwami użytkowników, adresami IP (alternatywnie – nazwami hostów DNS).
2.5. Bezpieczeństwo danych w obrębie wielu serwerów
Dokonywana w obrębie systemu działającego na wielu serwerach replikacja jest asynchroniczna. Występuje pewne opóźnienie (zazwyczaj o ułamek sekundy) w przesyłaniu danych pomiędzy tymi serwerami. Dobry system musi to uwzględniać i nie przesyłać zapytań SQL do innych serwerów wtedy, gdy nie jest to bezpieczne. Taka sytuacja występuje między innymi w momencie, w którym chcesz odczytać wiersz tabeli bezpośrednio po jego dodaniu lub edycji na serwerze głównym.
Prestashop doskonale samodzielnie dba o bezpieczeństwo danych. Wszystkie zapytania modyfikujące ich bazę przetwarza w obrębie serwera głównego i dopiero potem rozsyła je (lub tylko zawartość zmienionych wierszy) do pozostałych serwerów. W międzyczasie system wyświetla klientom stare dane, sprzed dokonanej edycji. Dzięki temu minimalizuje ryzyko awaryjności i praktycznie eliminuje pojawienie się niespójnych danych w obrębie bazy.
4. Skalowalność Prestashop – podsumowanie
Jeżeli chodzi o skalowalność Prestashop jest systemem, który powstał właśnie z myślą o niej. Doskonale współpracuje on zarówno z mniejszymi sklepami, jak i z tymi posiadającymi ogromną bazę produktów i olbrzymią liczbę odwiedzin. W przypadku tych pierwszych nie obciąża serwera i sprawdza się doskonale również na hostingach współdzielonych. W przypadku tych drugich zaś potrafi zapewniać rozwiązania idealnie rozkładające zasoby. Takie optymalizujące system w taki sposób, by ten nie obciążał serwera i gwarantował sklepowi najwyższy poziom dostępności, szybkości działania i niezawodności. Nawet wtedy, gdy jeden serwer już mu do tego nie wystarczy.
Magento z kolei jest platformą bardziej toporną i choć dość dobrze radzi sobie z obsługą mniejszych i średnich sklepów, wraz z ich rozrostem może się okazać platformą gorszą i mniej stabilną od Prestashop, a dodatkowo wymagającą sporych nakładów finansowych celem jej odpowiedniego zoptymalizowania.
Nasze sklepy internetowe bazujemy na systemie Prestashop. Nie tylko dostosowujemy je do potrzeb klienta tak pod względem funkcjonalności, jak i wyglądu. Dbamy też o to, by były świetnie zoptymalizowane i przystosowane do rozwoju Twojego biznesu. Jesteśmy też ekspertami w zarządzaniu serwerami. Z chęcią skonfigurujemy ten Twój pod to, by działał szybko, sprawnie i skalował się zgodnie z założeniami. Jeśli więc szukasz rozwiązania idealnego dla Twojego biznesu e-commerce, skontaktuj się z nami lub skorzystaj z naszego konfiguratora. Nie zapomnij zapoznać się z funkcjonalnościami naszych sklepów oraz z wybranymi ich realizacjami. Wchodząc we współpracę z nami, znajdziesz się pod właściwymi skrzydłami.