Tényleg képes a Magento több mint 500 ezer termék kezelésére?

Mielőtt egy nagyobb termékpalettát forgalmazó cég megfelelő webshopmotort keresve letenné a voksát a Magento mellett, az elsők között közt merül fel a kérdés: ‒ Mégis hány terméket tud a Magento kezelni?



Erre a kérdésre természetesen nehéz határozott és általános érvényű választ adni, de azért tapasztalataink alapján igyekszünk némi támpontot adni és néhány praktikus tanáccsal szolgálni.

 

Ehhez a következő gyakorlati problémákat próbáljuk körbejárni:

 

  • Hány terméket képesek a különféle Magento-verziók egy átlagos szerveren alapesetben, illetve további optimalizáció segítségével kezelni?
  • Mi a különbség  teljesítmény szempontjából az egyes Magento-verziók között?
  • Melyek azok a pontok, melyek egy nagyobb katalógus esetén szűk keresztmetszetet jelentenek? Hogyan lehet a Magentót úgy skálázni, hogy még több terméket lehessen vele kezelni?
  • Milyen gyakori hibákat lehet egy nagy méretű katalógus kezelése esetén a Magentóval elkövetni?

 

Hány terméket képesek a különféle Magento-verziók egy átlagos szerveren alapesetben, illetve további optimalizáció segítségével kezelni?

 

    • A Magento CE 1.9.x ‒ A legtöbb esetben  különösebb finomhangolás nélkül biztonságosan kezel~10 000 25 000 terméket  Széles körű skálázással, megfelelően megemelt szerver-erőforrásokkal és kód szintű optimalizációval viszont akár 100 000 ‒ 200 000 termék kezelésére is képessé tehető.
    • Magento EE 13.x. 14.x ‒ A legtöbb esetben  biztonságosan kezel különösebb finomhangolás nélkül ~100 000 200 000 terméket és akár 400 000 ‒ 500 000 vagy még több terméket megfelelő skálázás, optimalizáció és szerver-erőforrások biztosításával.
    • Magento 2 CE ‒ A legtöbb esetben, különösebb finomhangolás nélkül biztonságosan kezel ~ 100 000 200 000 terméket és akár 400 000 ‒ 500 000 vagy még több terméket megfelelő skálázás, optimalizáció és szerver-erőforrások biztosításával.
    • Magento 2 EE ‒ Úgy tervezték, hogy még több terméket is képes legyen kezelni olyan vállalati szintű megoldások segítségével, mint az adatbázis-szegmentáció, üzenetsorok illetve speciális MYSQL- és alkalmazásszerver-topológiák.

 

A fenti számok természetesen csak hozzávetőlegesek és olyan katalógusokra vonatkoznak, melyek néhány termékjellemzőt, kategóriát és kizárólag egyszerű termékeket tartalmaznak.  Az adatokat a Magento által közzétett teljesítménytesztek és saját tapasztalataink alapján állapítottuk meg és azok  a szerverkonfigurációtól, szerverszoftverektől és -erőforrásoktól függően jelentősen módosulhatnak.

 

Szintén fontos hangsúlyozni, hogy a Magento adatbázis-struktúrájának következtében néhány különösen erőforrás-igényes Magento funkció alkalmazása  megsokszorozza azoknak a termékeknek a számát, melyeket a Magento tulajdonképpen a háttérben kezel.

 

A legfajsúlyosabb funkciók a következők:

  • A Magento „bolt nézetek/nyelvek” száma
  • Termékjellemzők száma
  • Kategóriák száma és a kategóriastruktúra mélysége
  • Konfigurálható/összeállítható termékek száma
  • Különféle termékárakkal rendelkező vásárlói csoportok száma
  • Katalógus-árszabályok száma

 

Mindez adott esetben azt jelenti, hogy egy  olyan Magento webshop, mely mindössze néhány ezer terméket tartalmaz, de a Magento funkcionális lehetőségeit széles körűen kihasználja ‒  pl. 20 nyelvi változatot kezel, rengeteg termékjellemzővel, zömében konfigurálható termékekkel és több felhasználói árcsoporttal ‒ erőforrásigényét  tekintve azonos kategóriába tartozhat egy olyan Magento áruházzal, mely 100 000+ egyszerű terméket kezel egyetlen boltnézetben.

Ezek a funkciók teszik a Magentót igazán rugalmas rendszerré, de megvan a maguk ára a teljesítményoldalon.

 

Mi a különbség  teljesítmény szempontjából az egyes Magento-verziók között?

a magento verziók

 

  • Magento CE 1.x, a 1.9.x verzióval együtt
    • – az indexelés, különösen az URL- és keresés indexek nem optimalizáltak nagyobb katalógusokra (mindez az EE verzióra is érvényes 1.12.x-ig).
    • – Nem érhető el beépített funkcióként a teljes oldali gyorsítótár (Full Page Cache, FPC)
    • + elérhető néhány frontendes optimalizáció, mint például javascript és css összefűzés, CDN támogatás
  • Magento 1.x EE
    • + elérhatő az FPC, mely megfelelően alkalmazva rengeteg szerver-erőforrást képes felszabadítani.
    • +  inkrementált indexelés a 1.13+.x verziótól kezdve, melynek során a termékek indexelését időzített folyamatok végzik a háttérben.
    • + A  1.13+.x verziótól kezdve a teljes reindexelési folyamatok is jelentős optimalizáción estek át, és megfelelően működnek nagyobb katalógusok esetén is.
    • + Beépített lehetőségként tartalmazza a Solr keresőmotort
  • Magento 2 CE
    • + örökölte az inkrementális indexelést a Magento EE 1.13+.x-től.
    • + örökölte az FPC-t az EE 1.13+.x-től  és beépített támogatást tartalmaz Varnish frontend gyorsítótár kezelésére. A Varnish gyorsítótár-szerver legnagyobb előnye, hogy a Varnish által kiszolgált kérések el sem jutnak a Magentóig, így jelentősen csökken a webszerverek terhelése, emellett drámaian lecsökken az oldalbetöltési idő.
    • + A böngésző-gyorsítótárt használja a munkamenet-függő adatok tárolására (pl. kosártartalom)
    • + A pénztári folyamatok jelentős  optimalizáláson estek át
    • + Aszinkron termék- és rendelésmentési folyamatok.
    • + Frontend-optimalizációk széles köre, pl. js/css minifikáció, függőségkezelés, statikus tartalom gyorsítótárazása, képtömörítés.
    • + alapszintű PHP 7-támogatás, mely önmagában is akár 200% teljesítményjavulást eredményezhet a php 5.6.x-hez képest.
  • Magento 2 EE
    • + Rendelkezik a Magento 2 CE minden fentebb felsorolt funkciójával.
    • + Solr (2.0) és Elasticsearch (2.1) keresőmotorok.
    • + Lehetőség van az adatbázis szegmentálására külön szervereken a katalógus, kosárkezelés és pénztári folyamatok adatbázis-tábláit elválasztva.
    • + Mysql klaszter és „multi master” architektúra támogatása
    • + Támogatja a háttérfolyamatok üzenetsorokba való kiszervezését (Rabbit MQ, első megvalósítás a késleltetett készletfrissítés)

 

Melyek azok a pontok, melyek egy nagyobb katalógus esetén szűk keresztmetszetet jelentenek? Hogyan lehet a Magentót úgy skálázni, hogy még több terméket lehessen vele kezelni?

keresztmetszet

 

  • Hoszting ‒ egy nagyobb katalógusnak nyilvánvalóan több erőforrásra van szüksége, alapkövetelmény a VPS szerver elég memóriával és többmagos processzorral, illetve szükség lehet többszerveres elosztott környezet alkalmazására.
  • Szerverszoftverek ‒ erősen javasolt az Nginx webszerver, a  PHP 7 és a  Mysql 5.6  vagy annak megfelelő adatbázisszerver (Percona/MariaDb), még  Magento 1 esetében is. Emellett szintén nagyon fontos ezeknek a szerverszoftvereknek a finomhangolása, fokozottan figyelembe véve a Magento sajátságait.
  • Termékimport ‒ az optimalizált termékimport különösen fontos ebben az esetben, és rendkívül sokat segítenek azok az eszközök, melyek lehetővé teszik a kötegelt adatbázisműveleteket. Minden olyan módszer vagy eszköz, mely teljes, egyenként végrehajtott termékmentéseket  alkalmaz,  könnyen és gyorsan szűk keresztmetszetté válhat. Az egyik legjobb ilyen importot segítő eszköz a Magmi. Néhány további szempont, amit termékimport során érdemes szem előtt tartani.
    • Csak olyan adatokat mentsünk, melyek valóban megváltoztak.
    • Az importáláshoz használjunk dedikált erőforrásokat
    • Lehetőség szerint válasszuk szét az ár-készlet és az alapjellemzők importját
    • Csak azokat a termékeket és termékadatokat indexeljük újra, ahol újraindexelésre van szükség.
  • Indexing  ‒ Az indexelés a Magentóban a termékek mentésének második lépése, és alapvetően a legkényesebb terület, amikor nagy katalógusok kezeléséről van szó. Az indexelés egy sor olyan folyamatból áll, melyek az tárolásra optimalizált adatbázis-táblákból a különféle adatelérési szempontok szerint optimalizált táblákba másolják át az adatok egy részét. Mivel ezekre az indexekre csak a vásárlói (frontend) folyamatokhoz van szükség. Az indexelést a termékmentésről és termékimportról le lehet választani. A Magento 1 EE újabb verzióiban illetve a Magento 2 CE és EE-ben használt inkrementális indexelés nagyban felgyorsítja az adminisztrációs felületen végzett munkát, de bizonyos esetekben még ez sem ideális tömeges termékimport esetén.
    • A Magento 1 CE-ben az indexelés az a folyamat, ami a legtöbb problémát jelenti napi szinten és optimaliziáció szempontjából.
      • Az URL indexelés az egyik legkényesebb művelet, részben mert az index maga képes több milliós rekordszámra felduzzadni, részben mert egyáltalán nincs nagyméretű katalógusokra optimalizálva.
      • Bizonyos katalógusméreten túl, és bizonyos boltnézet-szám fölött az úgynevezett „flat tábla indexek” által nyújtott előnyöket túlszárnyalják a hátrányaik, így ezekben az esetekben érdemesebb őket kikapcsolni.
  • Catalog search
    • A beépített Mysql fulltext kereső indexelés és teljesítmény szempontjából is meglehetősen lassú, ráadásul találati pontossága is gyenge, így még Magento 1 esetén is erősen ajánlott a lecserélése. Számos remek, akár ingyenes modul érhető el Magento 1-hez is, melyek a Solr, Eleasticsearch vagy éppen a Sphinx keresőmotorhoz kapcsolják a katalógust. A Magento 1 Enterprise verziója beépített támogatást nyújt a Solr, illetve Magento 2.1 EE-től az Elasticsearch kezelésére.  
  • Full Page Cache
    • A Full Page Cache olyan mechanizmus, melynek során a szerverszoftver által generált html oldalakat egészben eltároljuk. Ha ezután legközelebb azonos az oldalra van szükség, a tárolt változatot szolgáljuk ki anélkül, hogy szükség lenne az oldal újragenerálására és az ezzel járó számítási illetve adatbázis-műveletekre.  Amíg a Magento 1 CE  nem tartalmaz beépített  FPC-t, addig a Magento 1 EE -ben a teljes oldali gyorsítótárazást maga a Magento végzi. Ez utóbbi is sok erőforrást takarít meg és nagyobb oldalbetöltési sebességet eredményez, a cachelést  azonban  a legideálisabb a Magento előtti rétegekben megvalósítani anélkül, hogy ebben aktív szerep hárulna a Magentóra. Ehhez nyújt támogatást a Magento 2-ben a Varnish támogatás. Bár a Magento 1 CE nem tartalmaz beépített FPC-t és Varnish illesztést, megfelelő kiegészítő modulok segítségével hatékonyan ki lehet aknázni ezeket a lehetőségeket.
  • Alkalmazásszintű gyorsítótárazás
    • A Magento erősen támaszkodik a különféle konfigurációs és futás idejű tartalmak elérését gyorsító un. Cache-ekre. A jelenleg elérhető legjobb megoldás a memória alapú és tartalomcímkézést is teljes körűen kezelő Redis illesztés, mely már a Magento 1 CE legújabb változataiban is beépítve elérhető.

 

A különféle Magento-verziókra levetítve megállapíthatjuk a következőket:

 

  • Magas termékszám esetén a legérzékenyebb területek a termékimport és az indexelés a backenden, illetve keresése, termékszűrő és terméklistázás a frontenden. A pénztári funkciók és a rendeléskezelés szintén fontos tényezők, de az utóbbiak inkább függenek az oldal látogatottságától mint a katalógus méretétől.
  • A termékimport jó eséllyel Magento-verziótól függetlenül optimalizálásra szorul – adott esetben még a Maegento 2 EE-ben is.
  • A Magento 1 CE a legkevésbé alkalmas nagy termékkatalógus kezelésére, de kifinomult skálázással, alkalmas szerverháttérrel és az indexelés, keresés és gyorsítótárazás csorbáit kiköszörülő modulokkal jelentősen javítható a teljesítménye. Az indexelés azonban még ebben az esetben is problémákat tartogathat.
  • A Magento 1 EE jelentős optimalizációkat tartalmaz, az ő esetében a Varnish cache bevezetése és a szerverarchitektúra finomhangolása vezethet a legkönnyebben még jobb teljesítményhez.
  • A Magento 2 CE-t a paramétereivel éppúgy a közepes méretű vállalatokat célozza meg, mint a Magento 1EE. Funkcionális szempontból nézve hiányzik belőle néhány olyan vállalati funkció, mint a vásárló hitelrendszer és  jutalompontok kezelése, verziókezelés vagy fejlett tartalomkezelés, de ami a szigorúan vett teljesítményt illeti, egy lapon említhető a Magento 1 EE-vel, sőt a Varnish-támogatás révén még meg is előzi. A teljesítmény növelésére a néhány magától értetődő módszer a már meglévő lehetőségek és beállítások minél teljesebb kiaknázása, a szerverarchitektúra testre szabása vagy akár az Elasticsearch illetve Solr bevezetése.

Magento 2 EE a közepesnél nagyobb vállalatok számára is hatékony alternatívát kíván nyújtani a felhő alapú szervermegoldások és nyújtotta lehetőségek kiaknázásával.

 

Milyen gyakori hibákat lehet egy nagy méretű katalógus kezelése esetén a Magentóval elkövetni?

 

A fentebb  említett szempontokon túl szeretnénk még néhány olyan további körülményt említeni, amelyek  figyelmen kívül hagyása gyakori problémaforrás lehet egy komolyabb forgalmat bonyolító és nagy számú terméket kezelő Magento webshopban.

 

  • Underscaling ‒ Talán a legfontosabb tanács, hogy mindig megfelelő erőforrás tartalék legyen biztosítva a rendszer számára, és fel legyünk arra készülve, hogy szükséges esetben tovább erőforrásokat biztosítsunk. Már a fejlesztés során is célszerű teljesítménytesztekkel meggyőződni arról, hogy a webshop képes az elvárásoknak megfelelni.
  • Túl sok vagy gyenge minőségű külső modul  ‒  tisztában kell lennünk azzal, hogy a harmadik féltől származó modulok nincsenek minden esetben nagy méretű termékkatalógusokra optimalizálva. Egy modul tervezése során akár egy apró figyelmetlenség is katasztrofális lehet egy ilyen webshop teljesítményére nézve.  
  • Széles körű és jól beállított  monitorozás hiánya ‒ Megfelelő rendszermonitorozás nélkül lehetetlen időben felismerni és kezelni a rendszer problémás területeit.

Források:

 

Összefoglalás A Magento a kezdetek óta óriási fejlődésen ment keresztül, és mára a Magento 2 megjelenésével eljutott odáig, hogy nemcsak a funkciókban leggazdagabb, de minden bizonnyal a legjobb teljesítményre képes webshop is egyben. Kellő szakértelemmel kezelve és biztosítva számára a megfelelő erőforrásokat, tetemes méretű katalógusokat is képes sikerrel kezelni.

 

Varga Ferenc András

Varga Ferenc András

szoftver architect

Ferenc igen tapasztalt szenior fejlesztő, Magento Developer Plus minősítéssel rendelkezik. Az e-kereskedelmi informatikai fejlesztések valamennyi ága érdekli, különösen a komplex Magento bővítmények és integrációs megoldások megtervezése. Szabadidejét legszívesebben a családjával tölti.


SZÜKSÉGE VAN EGY MEGBÍZHATÓ, PROFI MAGENTO FEJLESZTŐ PARTNERRE?

Kérjük, keressen bennünket, ha bármilyen kérdése, igénye lenne új vagy meglévő webáruház készítésével, megújításával kapcsolatban!

Next