Magento – úskalí v produkčním provozu
Jak zajistit, aby Váš e-commerce projekt v Magento běžel, jak má.
![Optimalizace Magento](https://vshosting.cz/content/uploads/2018/04/11-2-1.png)
Magento je výkonná e-commerce platforma, která zahrnuje vše, co je třeba pro prodej online. Kromě samotného e-shopu dokáže řešit i sklad, marketing, fakturace a účetnictví. V současné době Magento přichází ve dvou verzích: Magento Open Source (dříve Magento Community Edition) a Magento Commerce (který je určen pro vetší společnosti s vlastními vývojáři).
Magento je jednou z nejvíce využívaných e-commerce platforem a v hodnocení uživatelů získává konzistentně vysoké hodnocení. Ke správnému fungování Magenta je nicméně třeba mít zkušeného vývojáře samotné aplikace a také zkušeného poskytovatele hostingu, který ví, jak servery pro Magento optimalizovat.
Potřeba výkonného hostingu
Jak jsme již zmínili, u Magenta nelze podcenit hosting. Platforma je náročná na výkon a tomu musí odpovídat i parametry hostingu. Pokud se oprostíme od problémů a chyb samotné aplikace, tak je většina problémů v Magento způsobena malým výkonem webového serveru, resp. prostředím, kde je Magento provozováno. Magento je pomalejší a má mnohem více requestů než ostatní systémy, ale existuje několik způsobů jak platformu urychlit.
![](https://vshosting.cz/content/uploads/2019/05/Copy-of-Blog-Post-CTA-4-1.png)
Zrychlení Magenta
Magento obvykle nelze provozovat přímo na webovém serveru, ale je nutné využívat cachovací proxy (aktuálně je podporovaný pouze Varnish).
Pokud chcete, a v dnešní době je to už standard, provozovat SSL verzi, je nutné před Varnish proxy předsadit Nginx nebo jiný SSL terminátor. Co se týká samotného webového serveru, je možné použít Apache s PHP modulem nebo Nginx s PHP-FPM. Jedním z nejúčinnějších způsobů, jak dál urychlit Magento, je použití akcelerátorů PHP. U základních instalací je APC prohlašována za nejlepší řešení.
Možná jsou tedy dvě řešení:
- NGINX → VARNISH → APACHE (PHP-MODUL + APC, Memcache, Redis) → MariaDB
- NGINX → VARNISH → NGINX (PHP-FPM + APC, Memcache, Redis) → MariaDB
V případě větších instalací je pak vhodné využívat Redis pro cache i jako session handler.
Pokud se rozhodnete provozovat celou instalaci na jednom serveru, je nutné mít výkonný hardware nebo hosting, který Magento přímo podporuje. O paměť, CPU a IOPS budou soupeřit hlavně PHP, MySQL a Varnish.
Provoz Magenta v clusteru
Pokud se rozhodnete provozovat Magento v nějakém clusterovém režimu (buď kvůli výkonu nebo kvůli vysoké dostupnosti), Magento s tímto nastavením nativně nepočítá. Existuje několik možností, jak cluster sestavit:
- Složitější varianta je používat za load balancerem Varnish na každém backendu, ale pak je nutné se správně vypořádat s disvalidací cache a s podobnými dalšími problémy.
- Jednodušší způsob je nechat balancing na Varnish cache, která je sama o sobě dostatečně výkonná, aby dokázala zvládnout předávat požadavky na mnoho backendů.
Při clusterových instalacích se zároveň doporučuje počítat s dedikovaným serverem pro admin backend, u kterého paradoxně cachovaní není úplně žádoucí. U verzí 2 a méně se doporučuje povolit funkci Magento Compilation pro urychlení úložiště Magento.
Z naší zkušenosti vyplývá, že nejčastěji dochází ke zpomalování vlivem následujících chyb v aplikaci:
44 % SQL dotazů uvnitř smyčky
25 % načítání stejného modelu několikrát
14 % využití redundantního datového souboru
10 % výpočet velikosti pole na každé iteraci smyčky
7 % neefektivní využití paměti
Závěr: Zkušený hosting a zkušený programátor vyladí fungování Magenta
Mezi výhody Magenta patří robustnost a to, že je univerzální. Na druhou stranu je těžké zajistit, aby fungovalo optimálně. Pokud uvažujete o využití Magenta pro váš e-shop, ujistěte se, že:
- programátor aplikace má s Magentem zkušenosti,
- hosting, který jste si vybrali ví, jak server pro Magento vyladit tak, aby vše perfektně fungovalo a neztrácela se rychlost.