Medusa vs Magento: Porównanie Wydajności

Autor Grzegorz Tomaka

Featured image

Medusa jest 6,5 raza szybsza niż Magento! Dowiedz się, jak przeprowadziliśmy testy, czytając nasz artykuł.

Magento to doświadczony gracz na rynku eCommerce, znany ze swojego rozbudowanego, ale skomplikowanego systemu. Ostatnio skierował swoje kroki w stronę architektury headless, próbując nadążyć za rynkiem. Czy jednak ta zmiana sprawia, że może dorównać nowszym platformom API-First, takim jak Medusa, które zostały zaprojektowane od podstaw, by być headless?

To porównanie ma na celu sprawdzenie, czy Magento, może równać się z wydajnością platform zbudowanych z myślą o API od samego początku.

Co to jest Medusa?

medusa-strona

Medusa to open-source platforma headless eCommerce, stworzona przy użyciu języka JavaScriptu. Zaprojektowana z myślą o możliwości dostosowania do każdego modelu biznesowego eCommerce, w tym skomplikowanych konfiguracji, jak platformy multi-vendor marketplace. Jej podejście oparte na API i modułowa architektura ułatwiają szybki rozwój i skalowalność.

Co to jest Magento (Adobe Commerce)?

magento-strona

Magento, obecnie jako Adobe Commerce, to wiodąca platforma eCommerce, ceniona za swój bogaty zestaw funkcji. Obsługuje architekturę bezgłowicową (headless), co pozwala firmom tworzyć spersonalizowane doświadczenia na froncie, jednocześnie korzystając z potężnych możliwości eCommerce Magento w backendzie.

Co porównujemy

W naszym porównaniu Medusy i Magento skupiamy się na wydajności API, analizując, jak efektywnie każda z platform obsługuje zapytania. Wydajność API jest kluczowa, ponieważ bezpośrednio wpływa na szybkość strony e-commerce, co wpływa na wiele aspektów sklepu internetowego - od doświadczeń użytkowników po pozycjonowanie w wyszukiwarkach.

Podczas testowania wydajności API zmierzymy średni czas ładowania oraz czas ładowania w 95. percentylu, bazując na http_req_duration.

http_req_duration

Aby porównać wydajność API oraz ogólną wydajność serwerów Medusy i Magento, skupiamy się na metryce http_req_duration. Ta metryka reprezentuje całkowity czas potrzebny na zakończenie żądania HTTP - od momentu jego wysłania po otrzymanie ostatniego bajta odpowiedzi. Obejmuje wszystkie całe zapytanie, co czyni ją dobrym wskaźnikiem oceny wydajności platformy eCommerce.

Znaczenie średniego czasu ładowania i 95. percentyla

  • Średni czas ładowania: Ta metryka daje nam ogólny obraz tego, ile czasu zwykle potrzeba na wywołanie API we wszystkich testach. Jest pomocna w ustaleniu ogólnej wydajności, ale czasami może ukrywać problemy, takie jak sporadyczne opóźnienia czy wartości odstające.
  • 95. percentyl: Zamiast skupiać się wyłącznie na średnich, koncentrujemy się na 95. percentylu, aby lepiej zrozumieć wydajność pod obciążeniem. Ta metryka pozwala nam zobaczyć, jak platforma sprawdza się w stresowych sytuacjach, wyłączając najbardziej ekstremalne przypadki. Jest to kluczowe dla e-commerce, ponieważ odzwierciedla doświadczenia niemal wszystkich użytkowników.

Dlaczego szybkość ładowania jest ważna?

Szybkość ładowania ma kluczowe znaczenie, ponieważ nawet niewielkie opóźnienia mogą drastycznie obniżyć współczynniki konwersji i sprzedaż. Szybko ładowane strony spełniają oczekiwania użytkowników, poprawiają pozycjonowanie w wyszukiwarkach i zwiększają szansę na utrzymanie zaangażowania użytkowników. Krótko mówiąc, szybsza strona bezpośrednio przekłada się na lepsze doświadczenia użytkownika i wzrost przychodów.

Aby dowiedzieć się więcej, przeczytaj nasz artykuł - "Jak zwiększyć sprzedaż w sklepie internetowym?"

Test: Dlaczego skupiamy się na pobieraniu danych produktów?

Skoncentrowaliśmy się na pobieraniu danych produktów jako głównym przypadku testowym dla naszego porównania. Decyzja ta opiera się na założeniu, że przeglądanie informacji o produkcie często stanowi pierwszy krok w podróży klienta do zakupu. Efektywne ładowanie szczegółów produktu utrzymuje zaangażowanie potencjalnych kupujących i redukuje wskaźnik odrzuceń.

Jak przeprowadzamy test

Oto jak przeprowadzamy nasz test wydajności:

Narzędzie k6 do testowania obciążenia

Do naszych testów używamy k6, narzędzia open-source do testowania wydajności. k6 zostało stworzone do symulowania ruchu w rzeczywistych warunkach na aplikacjach internetowych, dostarczając informacji o tym, jak systemy zachowują się w różnych warunkach. k6 pozwoli nam zasymulować ruch i zbadać wydajność API.

Aby upewnić się, że nasze wyniki testów koncentrują się wyłącznie na czasach odpowiedzi serwera i nie są pod wpływem zmian w opóźnieniach sieciowych, skonfigurowaliśmy nasze środowisko testowe k6 bezpośrednio na serwerze.

Środowisko testowe: Taki sam serwer

Uruchamiamy Medusę i Magento na identycznych serwerach, aby wyeliminować sprzęt jako zmienną. Każda z platform jest hostowana na instancji DigitalOcean Droplet, z 4 GiB RAM i 2 wirtualnymi CPU. Ta specyfikacja zapewnia, że obie platformy mają równy dostęp do zasobów, co czyni nasze porównanie wydajności jak najbardziej sprawiedliwym.

Brak systemów cache

Aby ocenić prawdziwą wydajność każdej z platform, przeprowadzamy nasze testy bez użycia jakichkolwiek systemów cache. To podejście pozwala nam zmierzyć prawdziwą wydajność backendu Medusy i Magento bez wpływu mechanizmów cachowania, które mogłyby zniekształcić wyniki.

Baza danych produktów

Obie platformy zostały wypełnione 1000 identycznymi produktami. Zapewnia to, że nasze testy porównują systemy na równych warunkach, z obiema platformami obsługującymi równą ilość danych podczas scenariuszy testowych.

Wdrożenie

Medusa Używamy wersję Medusy 1.20.2 z Node 18.20.0 na naszym serwerze, korzystając z Dockera.

Magento Używamy Magento Open Source 2.4.6-p4, działające na PHP 8.1 i Apache.

Rodzaje testów

Aby ocenić wydajność Medusy i Magento, przygotowaliśmy serię testów, które symulują różne scenariusze obciążenia platformy. Każdy scenariusz jest stosowany do obu platform i obejmuje dwa różne typy żądań:

  • Pobranie pojedynczego produktu
  • Pobranie 15 produktów z przesunięciem o 500.

Takie podejście pozwala nam ocenić, jak każda z platform radzi sobie z różnym stopniem zapotrzebowania i konkretnymi zadaniami związanymi z pobieraniem danych.

Scenariusze testowe

  1. 50 iteracji z 1 użytkownikiem: Ten test symuluje sytuację, w której użytkownik dokonuje 50 kolejnych żądań. Jest zaprojektowany, aby ocenić, jak platformy radzą sobie z lekkim, ale stałym obciążeniem, dając wgląd w ich efektywność w obsłudze działań pojedynczego użytkownika.
  2. 10 użytkowników jednocześnie (przez 30 sekund): Symulując 10 użytkowników działających na platformie jednocześnie, ten test ocenia zdolność platform do obsługi wielu żądań równocześnie. Jest to podstawowy test, odzwierciedlający realistyczny scenariusz dla małych do średnich sklepów e-commerce w okresach niskiego do umiarkowanego ruchu.
  3. 25 użytkowników jednocześnie (przez 30s): Ten scenariusz znacząco zwiększa ilość jednoczesnych zapytań, testując wydajność platform pod średnim obciążeniem. Symuluje bardziej intensywny okres zakupów, taki jak wyprzedaż, podczas którego wielu użytkowników przegląda i wchodzi w interakcję ze stroną jednocześnie.
  4. 50 użytkowników jednocześnie (przez 30s): Najbardziej wymagający test, symulujący wydarzenie o wysokim ruchu, sprawdzający skalowalność platform i zarządzanie zasobami pod ciężkim obciążeniem. Jest to wskaźnik szczytowych czasów zakupów, takich jak znaczące wyprzedaże lub gorączka zakupowa w okresie świątecznym.

Testowane żądania

  • Pobranie pojedynczego produktu: Mierzy czas odpowiedzi platform, gdy użytkownik prosi o informacje dotyczące pojedynczego produktu.
  • Pobranie 15 produktów z offset 500: Ocena wydajności platform w pobieraniu danych produktów z paginacją, co jest typowym scenariuszem dla użytkowników przeglądających sklepy z obszerną kolekcją produktów.

Test: Pobieranie pojedynczego produktu

Magento endpoint

/rest/V1/products/[product_sku]

Medusa endpoint

/store/products/[prod_id]

50 iteracji z 1 użytkownikiem

a. Magento

k6-1
avg184.14 ms
min146.24 ms
med185.6 ms
max293.22 ms
p(90)202.21 ms
p(95)214.25 ms

b. Medusa

k6-2
avg29.88 ms
min17.89 ms
med26.44 ms
max80.61 ms
p(90)39.37 ms
p(95)49.52 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg184.14 ms29.88 ms6.16
min146.24 ms17.89 ms8.17
med185.6 ms26.44 ms7.02
max293.22 ms80.61 ms3.64
p(90)202.21 ms39.37 ms5.14
p(95)214.25 ms49.52 ms4.33
HTTP Request Duration (ms) - Single Product [Test - 50 Iterations with 1 User].svg

10 użytkowników jednocześnie przez 30s

a. Magento

k6-3
avg1080 ms
min192.96 ms
med1060 ms
max4980 ms
p(90)1200 ms
p(95)1290 ms

b. Medusa

k6-4
avg154.21 ms
min56.6 ms
med149.56 ms
max410.13 ms
p(90)194.78 ms
p(95)214.06 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg1080 ms154.21 ms7.00
min192.96 ms56.6 ms3.41
med1060 ms149.56 ms7.09
max4980 ms410.13 ms12.14
p(90)1200 ms194.78 ms6.16
p(95)1290 ms214.06 ms6.03
HTTP Request Duration (ms) - Single Product [Test - 10 users simultaneously for 30 s] (1).svg

25 użytkowników jednocześnie przez 30s

a. Magento

k6-5
avg2880 ms
min1290 ms
med2580 ms
max7060 ms
p(90)3300 ms
p(95)6150 ms

b. Medusa

k6-6
avg416.93 ms
min243.46 ms
med400.08 ms
max955.38 ms
p(90)506.95 ms
p(95)558.85 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg2880 ms416.93 ms6.91
min1290 ms243.46 ms5.30
med2580 ms400.08 ms6.45
max7060 ms955.38 ms7.39
p(90)3300 ms506.95 ms6.51
p(95)6150 ms558.85 ms11.01
HTTP Request Duration (ms) - Single Product [Test - 25 users simultaneously for 30 s].svg

50 użytkowników jednocześnie przez 30s

a. Magento

k6-7
avg5730 ms
min2750 ms
med5430 ms
max9950 ms
p(90)8660 ms
p(95)9100 ms

b. Medusa

k6-8
avg936.39 ms
min494.78 ms
med884.96 ms
max2570 ms
p(90)1150 ms
p(95)1240 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg5730 ms936.39 ms6.12
min2750 ms494.78 ms5.56
med5430 ms884.96 ms6.13
max9950 ms2570 ms3.87
p(90)8660 ms1150 ms7.53
p(95)9100 ms1240 ms7.34
HTTP Request Duration (ms) - Single Product [Test - 50 users simultaneously for 30 s].svg

Test: pobieranie 15 produktów z offset 500

Magento endpoint

/rest/V1/products?searchCriteria[pageSize]=15&searchCriteria[currentPage]=34

Medusa endpoint

/store/products?limit=15&offset=500

50 iteracji z 1 użytkownikiem

a. Magento

k6-9
avg441.35 ms
min357.93 ms
med442.7 ms
max545.1 ms
p(90)483.18 ms
p(95)490.76 ms

b. Medusa

k6-10
avg62.15 ms
min38.97 ms
med56.64 ms
max203.11 ms
p(90)72.19 ms
p(95)82.08 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg441.35 ms62.15 ms7.10
min357.93 ms38.97 ms9.18
med442.7 ms56.64 ms7.81
max545.1 ms203.11 ms2.68
p(90)483.18 ms72.19 ms6.69
p(95)490.76 ms82.08 ms5.98
HTTP Request Duration (ms) - 15 Products [Test - 50 Iterations with 1 User].svg

10 użytkowników jednocześnie przez 30s

a. Magento

k6-11
avg2160 ms
min473.95 ms
med2060 ms
max6620 ms
p(90)2360 ms
p(95)2610 ms

b. Medusa

k6-12
avg460.23 ms
min166.26 ms
med439.68 ms
max1480 ms
p(90)597.98 ms
p(95)656.33 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg2160 ms460.23 ms4.69
min473.95 ms166.26 ms2.85
med2060 ms439.68 ms4.69
max6620 ms1480 ms4.47
p(90)2360 ms597.98 ms3.95
p(95)2610 ms656.33 ms3.98
HTTP Request Duration (ms) - 15 Products [Test - 10 users simultaneously for 30 s].svg

25 użytkowników jednocześnie przez 30s

a. Magento

k6-13
avg5490 ms
min3260 ms
med5090 ms
max9660 ms
p(90)8540 ms
p(95)9070 ms

b. Medusa

k6-14
avg1160 ms
min759.49 ms
med1110 ms
max2670 ms
p(90)1350 ms
p(95)1430 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg5490 ms1160 ms4.73
min3260 ms759.49 ms4.29
med5090 ms1110 ms4.59
max9660 ms2670 ms3.62
p(90)8540 ms1350 ms6.33
p(95)9070 ms1430 ms6.34
HTTP Request Duration (ms) - 15 Products [Test - 25 users simultaneously for 30 s].svg

50 użytkowników jednocześnie przez 30s

a. Magento

k6-15
avg14200 ms
min6810 ms
med12690 ms
max21290 ms
p(90)19940 ms
p(95)20330 ms

b. Medusa

k6-16
avg1960 ms
min489.28 ms
med1890 ms
max3700 ms
p(90)2260 ms
p(95)2900 ms

c. Magento vs Medusa

http_req_durationMagentoMedusaIle razy szybsza jest Medusa?
avg14200 ms1960 ms7.24
min6810 ms489.28 ms13.92
med12690 ms1890 ms6.72
max21290 ms3700 ms5.76
p(90)19940 ms2260 ms8.82
p(95)20330 ms2900 ms7.01
HTTP Request Duration (ms) - 15 Products [Test - 50 users simultaneously for 30 s].svg

Podsumowanie

Nasze porównanie wydajności między API Magento a Medusa pokazuje znaczną przewagę Medusy. Mimo że odpowiedzi z API Medusy są cięższe pod względem rozmiaru danych, czasy odpowiedzi Medusy są niezaprzeczalnie znacznie szybsze w każdym przypadku.

W testach symulujących wielu użytkowników wysyłających zapytania do systemu jednocześnie zaobserwowaliśmy znaczącą różnicę w czasach odpowiedzi i objętości przetwarzanych danych. API Medusy pozwoliło nam na wykonanie większej liczby żądań w tym samym przedziale czasowym, pobierając więcej danych.

Czasy 95. percentyla (p(95)) ze wszystkich testów ujawniają znaczące różnice w wydajności:

p(95)MagentoMedusaIle razy szybsza jest Medusa?
Pojedynczy produkt – 50 iteracji z 1 użytkownikiem214.25 ms49.52 ms4.33
Pojedynczy produkt - 10 użytkowników jednocześnie przez 30s1290 ms214.06 ms6.03
Pojedynczy produkt - 25 użytkowników jednocześnie przez 30s6150 ms558.85 ms11.01
Pojedynczy produkt - 50 użytkowników jednocześnie przez 30s9100 ms1240 ms7.34
15 produktów — 50 iteracji z 1 użytkownikiem490.76 ms82.08 ms5.98
15 produktów - 10 użytkowników jednocześnie przez 30s2610 ms656.33 ms3.98
15 produktów - 25 użytkowników jednocześnie przez 30s9070 ms1430 ms6.34
15 produktów - 50 użytkowników jednocześnie przez 30s20330 ms2900 ms7.01
ŚREDNIA WSZYSTKICH TESTÓW6156.88 ms891.36 ms6.50
  • Przy pobieraniu pojedynczego produktu w 50 iteracjach z jednym użytkownikiem, Medusa była 4,33 raza szybsza niż Magento.
  • Gdy obciążenie wzrosło do 10, 25 i 50 użytkowników jednocześnie przez 30 sekund, Medusa konsekwentnie przewyższała Magento, będąc odpowiednio 6,03, 11,01 i 7,34 razy szybsza.
  • Przewaga wydajności rozciągała się również na pobieranie 15 produktów jednocześnie, z Medusą będącą od 5,98 do 7,01 razy szybszą przy różnych obciążeniach użytkownikami.

Medusa przewyższa Magento, będąc 6,5 raza szybsza przy tym samym ustawieniu serwera. Oznacza to, że Medusa może efektywnie obsłużyć znacznie więcej żądań i użytkowników przy tych samych zasobach serwera.

Na dzisiejszym rynku każda milisekunda liczy się w kierunku dokonania sprzedaży. Wybór szybkiego backendu eCommerce, takiego jak Medusa, może być kluczem do utrzymania przewagi.

Jesteś zainteresowany użyciem Medusy w Twoim eCommerce? Jesteśmy tutaj, żeby Ci pomóc.

Porozmawiajmy o Twoim projekcie

Inne posty na blogu

Maintance mode w aplikacjach Next.js

Jak zaimplementować maintenance mode w Next.js? Czy jest to równie proste, co kilkuminutowa konfiguracja wtyczki w WordPress’ie? Oczywiście, że tak!

Medusa vs Magento: Całkowity koszt posiadania

Magento, w porównaniu do Medusy, może prowadzić do wyższych kosztów długoterminowych z powodu swojej licencji oraz ryzyka związanego ze stopniowym spadkiem popularności języka PHP...

Opowiedz nam o swoim projekcie

Myślisz o nowym projekcie? Zrealizujmy go!

Naciskając „Wyślij wiadomość” udzielasz nam, tj. Rigby, zgody na email marketing naszych usług w ramach komunikacji dotyczącej Twojego projektu. Zgodę możesz wycofać, np. pisząc na adres hello@rigbyjs.com.
Więcej
placeholder

Grzegorz Tomaka

Co-CEO & Co-founder

LinkedIn icon
placeholder

Jakub Zbaski

Co-CEO & Co-founder

LinkedIn icon