Medusa vs Magento: Porównanie Wydajności
Autor Grzegorz Tomaka
Autor Grzegorz Tomaka
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.
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ść.
Magento, obecnie jako Adobe Commerce, to wiodąca platforma eCommerce, ceniona za swój bogaty zestaw funkcji. Obsługuje architekturę headless, co pozwala firmom tworzyć spersonalizowane doświadczenia na froncie, jednocześnie korzystając z potężnych możliwości eCommerce Magento w backendzie.
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.
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.
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?"
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ń.
Oto jak przeprowadzamy nasz test wydajności:
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.
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.
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.
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.
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.
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ń:
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.
/rest/V1/products/[product_sku]
/store/products/[prod_id]
a. Magento
avg | 184.14 ms |
---|---|
min | 146.24 ms |
med | 185.6 ms |
max | 293.22 ms |
p(90) | 202.21 ms |
p(95) | 214.25 ms |
b. Medusa
avg | 29.88 ms |
---|---|
min | 17.89 ms |
med | 26.44 ms |
max | 80.61 ms |
p(90) | 39.37 ms |
p(95) | 49.52 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 184.14 ms | 29.88 ms | 6.16 |
min | 146.24 ms | 17.89 ms | 8.17 |
med | 185.6 ms | 26.44 ms | 7.02 |
max | 293.22 ms | 80.61 ms | 3.64 |
p(90) | 202.21 ms | 39.37 ms | 5.14 |
p(95) | 214.25 ms | 49.52 ms | 4.33 |
a. Magento
avg | 1080 ms |
---|---|
min | 192.96 ms |
med | 1060 ms |
max | 4980 ms |
p(90) | 1200 ms |
p(95) | 1290 ms |
b. Medusa
avg | 154.21 ms |
---|---|
min | 56.6 ms |
med | 149.56 ms |
max | 410.13 ms |
p(90) | 194.78 ms |
p(95) | 214.06 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 1080 ms | 154.21 ms | 7.00 |
min | 192.96 ms | 56.6 ms | 3.41 |
med | 1060 ms | 149.56 ms | 7.09 |
max | 4980 ms | 410.13 ms | 12.14 |
p(90) | 1200 ms | 194.78 ms | 6.16 |
p(95) | 1290 ms | 214.06 ms | 6.03 |
a. Magento
avg | 2880 ms |
---|---|
min | 1290 ms |
med | 2580 ms |
max | 7060 ms |
p(90) | 3300 ms |
p(95) | 6150 ms |
b. Medusa
avg | 416.93 ms |
---|---|
min | 243.46 ms |
med | 400.08 ms |
max | 955.38 ms |
p(90) | 506.95 ms |
p(95) | 558.85 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 2880 ms | 416.93 ms | 6.91 |
min | 1290 ms | 243.46 ms | 5.30 |
med | 2580 ms | 400.08 ms | 6.45 |
max | 7060 ms | 955.38 ms | 7.39 |
p(90) | 3300 ms | 506.95 ms | 6.51 |
p(95) | 6150 ms | 558.85 ms | 11.01 |
a. Magento
avg | 5730 ms |
---|---|
min | 2750 ms |
med | 5430 ms |
max | 9950 ms |
p(90) | 8660 ms |
p(95) | 9100 ms |
b. Medusa
avg | 936.39 ms |
---|---|
min | 494.78 ms |
med | 884.96 ms |
max | 2570 ms |
p(90) | 1150 ms |
p(95) | 1240 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 5730 ms | 936.39 ms | 6.12 |
min | 2750 ms | 494.78 ms | 5.56 |
med | 5430 ms | 884.96 ms | 6.13 |
max | 9950 ms | 2570 ms | 3.87 |
p(90) | 8660 ms | 1150 ms | 7.53 |
p(95) | 9100 ms | 1240 ms | 7.34 |
Magento endpoint
/rest/V1/products?searchCriteria[pageSize]=15&searchCriteria[currentPage]=34
Medusa endpoint
/store/products?limit=15&offset=500
a. Magento
avg | 441.35 ms |
---|---|
min | 357.93 ms |
med | 442.7 ms |
max | 545.1 ms |
p(90) | 483.18 ms |
p(95) | 490.76 ms |
b. Medusa
avg | 62.15 ms |
---|---|
min | 38.97 ms |
med | 56.64 ms |
max | 203.11 ms |
p(90) | 72.19 ms |
p(95) | 82.08 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 441.35 ms | 62.15 ms | 7.10 |
min | 357.93 ms | 38.97 ms | 9.18 |
med | 442.7 ms | 56.64 ms | 7.81 |
max | 545.1 ms | 203.11 ms | 2.68 |
p(90) | 483.18 ms | 72.19 ms | 6.69 |
p(95) | 490.76 ms | 82.08 ms | 5.98 |
a. Magento
avg | 2160 ms |
---|---|
min | 473.95 ms |
med | 2060 ms |
max | 6620 ms |
p(90) | 2360 ms |
p(95) | 2610 ms |
b. Medusa
avg | 460.23 ms |
---|---|
min | 166.26 ms |
med | 439.68 ms |
max | 1480 ms |
p(90) | 597.98 ms |
p(95) | 656.33 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 2160 ms | 460.23 ms | 4.69 |
min | 473.95 ms | 166.26 ms | 2.85 |
med | 2060 ms | 439.68 ms | 4.69 |
max | 6620 ms | 1480 ms | 4.47 |
p(90) | 2360 ms | 597.98 ms | 3.95 |
p(95) | 2610 ms | 656.33 ms | 3.98 |
a. Magento
avg | 5490 ms |
---|---|
min | 3260 ms |
med | 5090 ms |
max | 9660 ms |
p(90) | 8540 ms |
p(95) | 9070 ms |
b. Medusa
avg | 1160 ms |
---|---|
min | 759.49 ms |
med | 1110 ms |
max | 2670 ms |
p(90) | 1350 ms |
p(95) | 1430 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 5490 ms | 1160 ms | 4.73 |
min | 3260 ms | 759.49 ms | 4.29 |
med | 5090 ms | 1110 ms | 4.59 |
max | 9660 ms | 2670 ms | 3.62 |
p(90) | 8540 ms | 1350 ms | 6.33 |
p(95) | 9070 ms | 1430 ms | 6.34 |
a. Magento
avg | 14200 ms |
---|---|
min | 6810 ms |
med | 12690 ms |
max | 21290 ms |
p(90) | 19940 ms |
p(95) | 20330 ms |
b. Medusa
avg | 1960 ms |
---|---|
min | 489.28 ms |
med | 1890 ms |
max | 3700 ms |
p(90) | 2260 ms |
p(95) | 2900 ms |
c. Magento vs Medusa
http_req_duration | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
avg | 14200 ms | 1960 ms | 7.24 |
min | 6810 ms | 489.28 ms | 13.92 |
med | 12690 ms | 1890 ms | 6.72 |
max | 21290 ms | 3700 ms | 5.76 |
p(90) | 19940 ms | 2260 ms | 8.82 |
p(95) | 20330 ms | 2900 ms | 7.01 |
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) | Magento | Medusa | Ile razy szybsza jest Medusa? |
---|---|---|---|
Pojedynczy produkt – 50 iteracji z 1 użytkownikiem | 214.25 ms | 49.52 ms | 4.33 |
Pojedynczy produkt - 10 użytkowników jednocześnie przez 30s | 1290 ms | 214.06 ms | 6.03 |
Pojedynczy produkt - 25 użytkowników jednocześnie przez 30s | 6150 ms | 558.85 ms | 11.01 |
Pojedynczy produkt - 50 użytkowników jednocześnie przez 30s | 9100 ms | 1240 ms | 7.34 |
15 produktów — 50 iteracji z 1 użytkownikiem | 490.76 ms | 82.08 ms | 5.98 |
15 produktów - 10 użytkowników jednocześnie przez 30s | 2610 ms | 656.33 ms | 3.98 |
15 produktów - 25 użytkowników jednocześnie przez 30s | 9070 ms | 1430 ms | 6.34 |
15 produktów - 50 użytkowników jednocześnie przez 30s | 20330 ms | 2900 ms | 7.01 |
ŚREDNIA WSZYSTKICH TESTÓW | 6156.88 ms | 891.36 ms | 6.50 |
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.
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...
Chcesz wiedzieć, która platforma eCommerce jest obecnie najlepsza? Muszę Cię rozczarować. Nie da się jednoznacznie odpowiedzieć na to pytanie...